Skip to main content

syncfusion-react-maps

Implement Syncfusion React Maps component for geographical data visualization. Use this when displaying interactive maps, location-based information, or regional data analysis. This skill covers map providers (Bing, OpenStreetMap), GeoJSON rendering, markers and bubbles, zooming/panning, data labels, legends, and choropleth visualizations in React applications.

معلومات المصدر

المستودع
syncfusion/react-ui-components-skills
آخر نشاط في المصدر
٦ يوليو ٢٠٢٦ في ٠٧:١٧
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٣
التفرعات
٩

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
13 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
syncfusion-react-maps
description
Implement Syncfusion React Maps component for geographical data visualization. Use this when displaying interactive maps, location-based information, or regional data analysis. This skill covers map providers (Bing, OpenStreetMap), GeoJSON rendering, markers and bubbles, zooming/panning, data labels, legends, and choropleth visualizations in React applications.
metadata
{"author":"Syncfusion Inc","version":"34.1.29","category":"Data Visualization"}
# Implementing Syncfusion React Maps A comprehensive skill for implementing the Syncfusion React Maps component to visualize geographical data with rich interactivity, multiple layers, markers, bubbles, legends, and map provider integration. ## When to Use This Skill Use this skill when you need to: - **Display geographical data** on interactive maps - **Visualize location-based information** with markers, bubbles, or data labels - **Create choropleth maps** with color-coded regions based on data values - **Integrate map providers** like Bing Maps, OpenStreetMap, or Azure Maps - **Render custom shapes** from GeoJSON data files - **Build multi-layer maps** with overlays and sublayers - **Add navigation lines** to show routes or connections between locations - **Implement zooming and panning** for map exploration - **Display statistical data** on geographical regions - **Create interactive legends** for data interpretation - **Support multiple projections** (Mercator, Miller, Eckert, etc.) - **Handle user interactions** like tooltips, selection, and highlighting ## Component Overview The Syncfusion React Maps component is a powerful data visualization tool that renders geographical data using Scalable Vector Graphics (SVG). It supports: - **Any number of layers and sublayers** for complex visualizations - **GeoJSON data binding** for custom shape rendering - **Map providers** (Bing, OpenStreetMap, Azure) as base layers - **6 types of projections** for different map representations - **Visual elements**: Markers, Bubbles, Navigation Lines, Annotations, Data Labels, Legends - **Interactive features**: Zooming, Panning, Tooltips, Selection, Highlighting - **Accessibility**: WCAG 2.1 compliant with keyboard navigation - **Globalization**: RTL support, internationalization, localization ## Key Capabilities ### Data Visualization Elements - **Markers**: Pin locations with custom shapes, templates, and clustering - **Bubbles**: Display data magnitude with size-based bubbles - **Data Labels**: Show information directly on map shapes - **Color Mapping**: Apply colors based on data values (equal, range, desaturation) - **Navigation Lines**: Draw connections between locations with curves and arrows - **Legends**: Provide visual keys for data interpretation ### Layer Architecture - **Main Layer**: Base map from GeoJSON or map provider - **Sublayers**: Overlay additional shapes on top of main layer - **Multi-layer Support**: Stack multiple layers for rich visualizations ### Map Providers - **Bing Maps**: Satellite, aerial, and road views - **OpenStreetMap**: Free tile layer provider - **Azure Maps**: Microsoft's map service - **Hybrid Approach**: Combine GeoJSON shapes with provider tiles ### User Interactions - **Zooming**: Mouse wheel, double-click, pinch, toolbar controls - **Panning**: Drag to explore different regions - **Tooltips**: Show data on hover - **Selection**: Highlight shapes on click - **Reset**: Return to initial view ## Documentation and Navigation Guide ### API Reference 📄 **Read:** [references/api-reference.md](references/api-reference.md) - Complete MapsComponent properties reference - All available methods with examples - Comprehensive events documentation - Layer, marker, bubble, and data label settings - Legend, zoom, and tooltip configuration - Quick reference code examples - Type definitions and parameters ### Getting Started 📄 **Read:** [references/getting-started.md](references/getting-started.md) - Installation and package dependencies - Basic Maps component implementation - GeoJSON data structure and binding - CSS theme imports - Module injection pattern (feature-based) - First world map example - Data source binding with shapeDataPath and shapePropertyPath ### Layers and Structure 📄 **Read:** [references/layers-and-sublayers.md](references/layers-and-sublayers.md) - Understanding layer architecture - Main layer vs sublayer differences - Creating multi-layer maps - Layer types and stacking order - Layer-specific settings and configuration - When to use multiple layers ### Markers 📄 **Read:** [references/markers.md](references/markers.md) - Adding markers to pinpoint locations - Marker data source structure (latitude, longitude) - Marker shapes and custom templates - Marker clustering for dense data - Dynamic marker updates - Interactive markers with click events - Marker tooltips and labels ### Data Visualization Elements 📄 **Read:** [references/data-visualization.md](references/data-visualization.md) - Bubble visualization for data magnitude - Configuring bubble size and colors - Data label setup and formatting - Smart label modes (trim, hide, none) - Label templates for custom content - Combining bubbles with data labels - Best practices for visual hierarchy ### Legend 📄 **Read:** [references/legend.md](references/legend.md) - Enabling and configuring legends - Positioning strategies (absolute, dock) - Legend alignment options (near, center, far) - Interactive legends - Legend modes (default, interactive) - Customizing legend appearance - Syncing legends with color mapping ### Color Mapping 📄 **Read:** [references/color-mapping.md](references/color-mapping.md) - Color mapping types (equal, range, desaturation) - Applying colors based on data values - Setting up colorValuePath - Creating choropleth maps - Multiple color mapping rules - Custom color schemes - Visual data representation strategies ### Navigation Lines 📄 **Read:** [references/navigation-lines.md](references/navigation-lines.md) - Creating lines between locations - Line styling (width, color, dash array) - Curved lines and angles - Arrow indicators for direction - Use cases (routes, connections, flows) - Animation effects on lines ### Map Providers 📄 **Read:** [references/map-providers.md](references/map-providers.md) - Overview of supported providers - When to use GeoJSON vs map providers - Bing Maps setup and API keys - OpenStreetMap integration (free) - Azure Maps configuration - Tile layer types (satellite, aerial, road) - Hybrid approaches (GeoJSON overlays on provider tiles) ### User Interactions 📄 **Read:** [references/user-interactions.md](references/user-interactions.md) - Enabling and configuring zooming - Zoom factor and toolbar controls - Panning functionality - Tooltip configuration and templates - Selection and highlighting shapes - Mouse wheel and double-click zoom - Pinch zoom for touch devices - Reset to initial view ### Annotations and Polygons 📄 **Read:** [references/annotations-polygon.md](references/annotations-polygon.md) - Adding custom annotations to maps - Polygon rendering for custom shapes - Positioning and alignment - Interactive annotations - Use cases for overlays ### Customization - Map projections (Mercator, Miller, Eckert, Winkel Tripel, Aitoff, Equirectangular) - Title and subtitle configuration - Border and background styling - Margin and padding adjustments - Custom CSS classes - Theme integration - Responsive design patterns ### Advanced Features 📄 **Read:** [references/advanced-features.md](references/advanced-features.md) - Internationalization (i18n) - Localization (l10n) - Accessibility (WCAG compliance, keyboard navigation) - State persistence across sessions - Printing and export functionality - Event handling patterns - Accessing component methods via ref - Performance optimization techniques - Migration guide from EJ1 to EJ2 ## Quick Start Example ```tsx import * as React from 'react'; import { MapsComponent, LayersDirective, LayerDirective, Inject, Legend } from '@syncfusion/ej2-react-maps'; import { world_map } from './world-map'; // GeoJSON data function MapExample() { const data = [ { Country: 'United States', Population: 331000000, Membership: 'Permanent' }, { Country: 'Russia', Population: 145900000, Membership: 'Permanent' }, { Country: 'China', Population: 1439000000, Membership: 'Permanent' }, { Country: 'India', Population: 1380000000, Membership: 'Non-Permanent' }, { Country: 'Brazil', Population: 212500000, Membership: 'Non-Permanent' } ]; return ( <MapsComponent titleSettings={{ text: 'World Map with Country Membership' }} legendSettings={{ visible: true }} > <Inject services={[Legend]} /> <LayersDirective> <LayerDirective shapeData={world_map} shapeDataPath='Country' shapePropertyPath='name' dataSource={data} shapeSettings={{ colorValuePath: 'Membership', colorMapping: [ { value: 'Permanent', color: '#D84444' }, { value: 'Non-Permanent', color: '#316DB5' } ] }} /> </LayersDirective> </MapsComponent> ); } export default MapExample; ``` ## Module Injection Guide Maps features are modular. Inject only the modules you need: ```tsx import { MapsComponent, Inject, Legend, // For legends DataLabel, // For data labels Marker, // For markers Bubble, // For bubbles MapsTooltip, // For tooltips Zoom, // For zooming and panning Highlight, // For highlighting shapes Selection, // For selecting shapes NavigationLine,// For navigation lines Annotations, // For annotations Polygon // For polygons } from '@syncfusion/ej2-react-maps'; <MapsComponent> <Inject services={[Legend, Marker, MapsTooltip, Zoom]} /> {/* Your layers */} </MapsComponent> ``` **Only inject modules for features you're using** to minimize bundle size. ## Common Use Cases ### Choropleth Map (Color-Coded Regions) **Goal**: Display statistical data with color-coded countries/regions **Approach**: 1. Bind data source with `dataSource`, `shapeDataPath`, `shapePropertyPath` 2. Configure `shapeSettings.colorValuePath` to specify data field 3. Set up `colorMapping` with value-color pairs 4. Add `Legend` for interpretation **Example**: Population density map, election results, COVID-19 statistics --- ### Location Markers Map **Goal**: Show specific locations with custom markers **Approach**: 1. Add `MarkersDirective` inside `LayerDirective` 2. Provide marker data with latitude/longitude 3. Customize marker shapes, sizes, and templates 4. Add tooltips for marker information **Example**: Store locator, branch offices, tourist attractions --- ### Multi-Layer Overlay **Goal**: Highlight specific regions on a base map **Approach**: 1. First layer: Base map (e.g., entire country) 2. Additional layers with `type="SubLayer"`: Highlighted regions 3. Style sublayers distinctly (different colors, borders) 4. Control layer visibility and order **Example**: State highlights on country map, sales regions --- ### Route Visualization **Goal**: Show connections or routes between locations **Approach**: 1. Add markers for start/end points 2. Use `NavigationLineDirective` to draw lines 3. Configure line curves, arrows, and styling 4. Optionally animate lines **Example**: Flight routes, shipping lanes, migration patterns --- ### Map Provider Integration **Goal**: Use real-world satellite/street map as base **Approach**: 1. Configure layer with `urlTemplate` for provider 2. Set up API keys (Bing, Azure) if required 3. Overlay GeoJSON shapes as sublayers if needed 4. Add markers and labels on top **Example**: Real estate map, delivery tracking, ride-sharing app ## Decision Trees ### Should I Use GeoJSON or Map Provider? **Use GeoJSON when**: - You need custom shapes or boundaries - Data is region/country-based (choropleth maps) - No real-world street-level detail needed - Offline capability required - Full control over styling and data binding **Use Map Provider when**: - Need real-world satellite/aerial imagery - Street-level detail required - Real-time map updates desired - Users expect familiar map interface (like Google Maps) **Use Both (Hybrid) when**: - Need real-world base with custom shape overlays - Combining statistical regions with street context --- ### Which Color Mapping Type? **Equal Color Mapping**: - Use when data has discrete categories (e.g., Membership: Permanent/Non-Permanent) - Each unique value gets a specific color **Range Color Mapping**: - Use when data is numeric and continuous (e.g., Population: 0-1M, 1M-10M, 10M+) - Values within ranges get assigned colors **Desaturation Color Mapping**: - Use for gradient effects based on numeric values - Single color with varying saturation levels --- ### How Many Layers Should I Use? **Single Layer**: - Simple visualizations with one data dimension - Basic country/region maps - When all data fits one layer **Multiple Layers**: - Highlighting specific regions on base map - Combining different data sources - Creating visual depth with overlays - Showing borders, rivers, cities separately ## Key Props Reference ### MapsComponent - `titleSettings`: Configure title and subtitle - `legendSettings`: Legend visibility, position, alignment - `zoomSettings`: Enable zooming, set initial zoom factor - `layers`: Array of layer configurations ### LayerDirective - `shapeData`: GeoJSON data for shapes - `dataSource`: Data to bind to shapes - `shapeDataPath`: Field in dataSource matching shapes - `shapePropertyPath`: Field in GeoJSON matching dataSource - `shapeSettings`: Fill, border, color mapping - `type`: "Layer" (main) or "SubLayer" (overlay) - `markerSettings`: Marker configurations - `bubbleSettings`: Bubble visualizations - `dataLabelSettings`: Label configurations - `tooltipSettings`: Tooltip customization - `navigationLineSettings`: Line visualizations ### Common Patterns - **Module Injection**: Only inject needed services to reduce bundle size - **Data Binding**: Use shapeDataPath + shapePropertyPath for automatic matching - **Progressive Enhancement**: Start with basic map, add features incrementally - **Responsive Design**: Maps auto-resize, but test on different viewports ## Troubleshooting Quick Checks ❌ **Map not displaying**: - Verify GeoJSON data is correctly imported - Check console for errors - Ensure CSS is imported ❌ **Colors not applied**: - Confirm `shapeDataPath` matches data field name - Verify `shapePropertyPath` matches GeoJSON property - Check `colorValuePath` points to correct data field ❌ **Markers not showing**: - Inject `Marker` service - Set `visible={true}` in MarkerDirective - Verify latitude/longitude values are valid ❌ **Zoom not working**: - Inject `Zoom` service - Set `zoomSettings.enable={true}` - Check if `enablePanning` is needed ❌ **Legend not appearing**: - Inject `Legend` service - Set `legendSettings.visible={true}` - Ensure color mapping is configured ## Next Steps 1. **Start Simple**: Begin with getting-started.md for basic map 2. **Add Data**: Follow data-visualization.md for markers/bubbles 3. **Style It**: Use color-mapping.md for choropleth effects 4. **Make Interactive**: Implement user-interactions.md for zoom/pan 5. **Enhance**: Add advanced features as needed Choose the reference documentation that matches your current implementation phase and specific requirements.
عرض على GitHub