Comprehensive guidance for migrating from Google Maps Platform to Mapbox GL JS. Provides API equivalents, pattern translations, and strategies for successful migration.
Core Philosophy Differences
Google Maps: Imperative & Object-Oriented
- Create objects (Marker, Polygon, etc.)
Add to map with INLINECODE0
Update properties with setters
Heavy reliance on object instances
Mapbox GL JS: Declarative & Data-Driven
- Add data sources
Define layers (visual representation)
Style with JSON
Update data, not object properties
Key Insight: Mapbox treats everything as data + styling, not individual objects.
Map Initialization
Google Maps
CODEBLOCK0
Mapbox GL JS
CODEBLOCK1
Key Differences:
- Coordinate order: Google uses {lat, lng}, Mapbox uses INLINECODE2
Authentication: Google uses API key in script tag, Mapbox uses access token in code
Styling: Google uses map types, Mapbox uses full style URLs
API Equivalents Reference
Map Methods
Google Maps
Mapbox GL JS
Notes
INLINECODE3
INLINECODE4
Coordinate order reversed
INLINECODE5
map.getCenter() | Returns LngLat object |
| map.setZoom(zoom) | map.setZoom(zoom) | Same behavior |
| map.getZoom() | map.getZoom() | Same behavior |
| map.panTo(latLng) | map.panTo([lng, lat]) | Animated pan |
| map.fitBounds(bounds) | map.fitBounds([[lng,lat],[lng,lat]]) | Different bound format |
| map.setMapTypeId(type) | map.setStyle(styleUrl) | Completely different approach |
| map.getBounds() | map.getBounds() | Similar |
Map Events
Google Maps
Mapbox GL JS
Notes
INLINECODE19
INLINECODE20
Simpler syntax
INLINECODE21
event.lngLat | Event property name |
| 'center_changed' | 'move' / 'moveend' | Different event names |
| 'zoom_changed' | 'zoom' / 'zoomend' | Different event names |
| 'bounds_changed' | 'moveend' | No direct equivalent |
| 'mousemove' | 'mousemove' | Same |
| 'mouseout' | 'mouseleave' | Different name |
Markers and Points
Simple Marker
Google Maps:
CODEBLOCK2
Mapbox GL JS:
CODEBLOCK3
Multiple Markers
Google Maps:
CODEBLOCK4
Mapbox GL JS (Equivalent Approach):
CODEBLOCK5
Mapbox GL JS (Data-Driven Approach - Recommended for 100+ points):
CODEBLOCK6
Performance Advantage: Google Maps renders all markers as DOM elements (even when using the Data Layer), which becomes slow with 500+ markers. Mapbox's circle and symbol layers are rendered by WebGL, making them much faster for large datasets (1,000-10,000+ points). This is a significant advantage when building applications with many points.
Info Windows / Popups
Google Maps
CODEBLOCK7
Mapbox GL JS
CODEBLOCK8
Migration Strategy
Step 1: Audit Current Implementation
Identify all Google Maps features you use:
- [ ] Basic map with markers
[ ] Info windows/popups
[ ] Polygons/polylines
[ ] Geocoding
[ ] Directions
[ ] Clustering
[ ] Custom styling
[ ] Drawing tools
[ ] Street View (no Mapbox equivalent)
[ ] Other advanced features
Step 2: Set Up Mapbox
CODEBLOCK9
Step 3: Convert Core Map
Start with basic map initialization:
1. Replace new google.maps.Map() with INLINECODE36
Fix coordinate order (lat,lng -> lng,lat)
Update zoom/center
Step 4: Convert Features One by One
Prioritize by complexity:
1. Easy: Map controls, basic markers
Medium: Popups, polygons, lines
Complex: Clustering, custom styling, data updates
Step 5: Update Event Handlers
Change event syntax:
- google.maps.event.addListener() -> INLINECODE38
Update event property names (latLng -> lngLat)
Step 6: Optimize for Mapbox
Take advantage of Mapbox features:
- Convert multiple markers to data-driven layers
Use clustering (built-in)
Leverage vector tiles for custom styling
Use expressions for dynamic styling
Step 7: Test Thoroughly
- Cross-browser testing
Mobile responsiveness
Performance with real data volumes
Touch/gesture interactions
Gotchas and Common Issues
Coordinate Order
CODEBLOCK10
Always double-check coordinate order!
Event Properties
CODEBLOCK11
Timing Issues
CODEBLOCK12
Removing Features
CODEBLOCK13
Updating Data Without Flash
Never remove and re-add layers to update data — this reinitializes WebGL resources and causes a visible flash. Instead:
CODEBLOCK14
When NOT to Migrate
Consider staying with Google Maps if:
- Street View is critical - Mapbox doesn't have equivalent
Tight Google Workspace integration - Places API deeply integrated
- Initial release of the Mapbox Google Maps Migration Skill.
- Provides a comprehensive migration guide for developers moving from Google Maps Platform to Mapbox GL JS.
- Includes API equivalents, common pattern translations, and a summary of core conceptual differences.
- Presents practical examples for initializing maps, adding markers, popups, and handling map events.
- Features a step-by-step migration strategy and tips for optimizing applications on Mapbox.