A unified mapping library that provides a common API for multiple map providers including Google Maps, Mapbox, HERE, and ArcGIS. Write once, deploy across all major mapping platforms.
- 🗺️ Multi-Provider Support: Seamlessly switch between Google Maps, Mapbox, HERE, and ArcGIS with a single API
- 🎯 Unified Interface: Common abstractions for markers, circles, polylines, polygons, and ground overlays
- ⚡ High Performance: Spatial indexing with hexagonal cells for efficient marker clustering
- 🔄 Reactive State: Built on Kotlin StateFlow for reactive UI updates
- 🎨 Jetpack Compose: Modern Android UI toolkit integration
mapconductor-bom: Version managemenetcore: Core abstractions and shared functionalityfor-googlemaps: Google Maps implementationfor-mapbox: Mapbox implementationfor-here: HERE Maps implementationfor-arcgis: ArcGIS implementationicons: Reusable marker icon componentsexample-app: Comprehensive demo application
- MapViewController: Abstract controller interface for all map providers
- MapViewBase: Generic Compose-based map view component
- Overlay Managers: Separate managers for markers, circles, polylines, and polygons
- Projection Utilities: WebMercator and WGS84 coordinate transformations
- HexGeocell: Spatial indexing system for performance optimization
Clone the repository:
git clone https://github.com/MapConductor/android-sdk.gitAdd secrets.properties to the project root from https://github.com/MapConductor/map-sdk-credentials/
@Composable
fun MyMapScreen() {
GoogleMapView(
modifier = Modifier.fillMaxSize(),
onMapReady = { controller ->
// Add markers, circles, polylines, etc.
}
) { mapState, controller ->
// Your map content here
}
}Simply change the map view component:
// Google Maps
GoogleMapView { /* ... */ }
// Mapbox
MapboxMapView { /* ... */ }
// HERE Maps
HereMapView { /* ... */ }
// ArcGIS
ArcGISMapView { /* ... */ }./gradlew buildThis project follows KtLint conventions:
./gradlew allLintChecks| Google Maps | Mapbox | Here | ArcGIS | |
|---|---|---|---|---|
| Map | ☑ | ☑ | ☑ | ☑ |
| Marker | ☑ | ☑ | ☑ | ☑ |
| Circle | ☑ | ☑ | ☑ | ☑ |
| Polyline | ☑ | ☑ | ☑ | ☑ |
| Polygon | ☑ | ☑ | ☑ | ☑ |
| GroundImage | ☑ | N/A | N/A | N/A |
| RasterTileLayer | ☐ | ☐ | ☐ | ☐ |
| VectorTileLayer | ☐ | ☐ | ☐ | ☐ |
Note that the click functionality of Polyline and Polygon classes are not implemented yet.