API unificada
Escribe el código relacionado con mapas una sola vez y cambia de proveedor cuando lo necesites. Incluso si pasas de Google Maps a Mapbox, no tendrás que reescribir grandes partes de tu base de código.
API unificada
Escribe el código relacionado con mapas una sola vez y cambia de proveedor cuando lo necesites. Incluso si pasas de Google Maps a Mapbox, no tendrás que reescribir grandes partes de tu base de código.
Optimizado para Jetpack Compose
Diseñado para el desarrollo moderno en Android, con una API pensada específicamente para Jetpack Compose.
Varios proveedores compatibles
Ofrece un comportamiento consistente con Google Maps, Mapbox, HERE Maps, ArcGIS y MapLibre.
Código abierto
Proyecto de código abierto bajo licencia Apache 2.0, desarrollado por la comunidad.
Usar MapConductor es sencillo: combinas rememberXxxxViewState con XxxxView.
La parte Xxxx cambia entre GoogleMap, Mapbox y otros proveedores.
Si quieres cambiar a Mapbox, basta con sustituir rememberGoogleMapViewState() por rememberMapboxMapViewState()
y GoogleMapView por MapboxMapView. El resto del código permanece igual.
| SDK de mapas | hook mapViewState | composable de mapa |
|---|---|---|
| GoogleMaps | rememberGoogleMapViewState | GoogleMapView |
| Mapbox | rememberMapboxViewState | MapboxMapView |
| MapLibre | rememberMapLibreViewState | MapLibreView |
| HERE | rememberHereMapViewState | HereMapView |
| ArcGIS | rememberArcGISMapViewState | ArcGISMapView |
@Composablefun MyMap() { // Posición inicial de la cámara en el mapa val targetPosition = GeoPointImpl.fromLatLong(37.7749, -122.419) val initCamera = MapCameraPositionImpl( position = targetPosition, zoom = 12.0, ) // Controla el estado visible del mapa a través de este mapViewState val mapViewState = rememberGoogleMapViewState( cameraPosition = initCamera, )
GoogleMapView( state = mapViewState, onMapClick = { geoPoint -> println("Clicked: ${geoPoint.latitude}, ${geoPoint.longitude}") } ) { Marker( position = targetPosition, icon = DefaultIcon(label = "SF") ) }}
@Composablefun MyMap() { // Posición inicial de la cámara en el mapa val targetPosition = GeoPointImpl.fromLatLong(38.911254, -77.033458) val initCamera = MapCameraPositionImpl( position = targetPosition, zoom = 12.0, ) // Controla el estado visible del mapa a través de este mapViewState val mapViewState = rememberMapboxMapViewState( cameraPosition = initCamera, )
MapboxMapView( state = mapViewState, onMapClick = { geoPoint -> println("Clicked: ${geoPoint.latitude}, ${geoPoint.longitude}") } ) { Marker( position = targetPosition, icon = DefaultIcon(label = "WA") ) }}
@Composablefun MyMap() { // Posición inicial de la cámara en el mapa val targetPosition = GeoPointImpl.fromLatLong(51.43901, 5.47191) val initCamera = MapCameraPositionImpl( position = targetPosition, zoom = 12.0, ) // Controla el estado visible del mapa a través de este mapViewState val mapViewState = rememberHereMapViewState( cameraPosition = initCamera, )
HereMapView( state = mapViewState, onMapClick = { geoPoint -> println("Clicked: ${geoPoint.latitude}, ${geoPoint.longitude}") } ) { Marker( position = targetPosition, icon = DefaultIcon(label = "EIN") ) }}
| Función | Google Maps | Mapbox | HERE | ArcGIS | MapLibre |
|---|---|---|---|---|---|
| Mapa | ✓ | ✓ | ✓ | ✓ | ✓ |
| Marcador | ✓ | ✓ | ✓ | ✓ | ✓ |
| Círculo | ✓ | ✓ | ✓ | ✓ | ✓ |
| Polilínea | ✓ | ✓ | ✓ | ✓ | ✓ |
| Polígono | ✓ | ✓ | ✓ | ✓ | ✓ |
| GroundImage | ✓ | N/A | N/A | N/A | N/A |
Cuando estés listo para integrar MapConductor en tu app Android, consulta la Introducción y el Tutorial.