Skip to content

Compatibilidad de proveedores

Esta página muestra qué componentes de MapConductor están soportados por cada proveedor de mapas. Aunque MapConductor intenta ofrecer una API unificada, algunas funciones no están disponibles en todos los proveedores debido a limitaciones de los SDK subyacentes.

ComponenteGoogle MapsMapboxHERE MapsArcGISMapLibre
Map View
Marker
Circle
Polyline
Polygon
GroundImage
  • Totalmente soportado: la función está disponible y se ha probado
  • No soportado: la función no está disponible por limitaciones del SDK
  • ⚠️ Soporte limitado: la función está disponible con restricciones (actualmente ninguna)

Componentes básicos (todos los proveedores)

Section titled “Componentes básicos (todos los proveedores)”

Todos los proveedores de mapas soportan, al menos, las siguientes capacidades básicas en la vista de mapa:

  • Posicionamiento y movimiento de la cámara
  • Interacción del usuario (pan, zoom, rotación, inclinación, cuando el SDK lo permite)
  • Estilo y apariencia del mapa
  • Manejo de eventos (tap, pulsación prolongada, eventos de movimiento de cámara)

En v1.1.2 están disponibles los siguientes callbacks de cámara (cuando el SDK subyacente los expone):

  • onCameraMoveStart
  • onCameraMove
  • onCameraMoveEnd

Todos los proveedores soportan funcionalidad de marcadores con:

  • Iconos y colores personalizados
  • Eventos de clic e interacción
  • Arrastrar y soltar
  • Ventanas de información / info bubbles (cuando el proveedor las soporta)

Todos los proveedores soportan:

  • Overlays de círculo con centro y radio
  • Polilíneas que conectan múltiples puntos
  • Polígonos con estilos de relleno y borde

La apariencia visual exacta puede variar ligeramente entre proveedores debido a las implementaciones de cada SDK.

Los overlays de tipo GroundImage solo están soportados en Google Maps.

  • Google Maps: la API nativa GroundOverlay permite superponer imágenes con límites geográficos.
  • Mapbox / HERE / ArcGIS / MapLibre: los SDK móviles no ofrecen un equivalente sencillo y nativo. Es posible lograr resultados similares con capas personalizadas, pero MapConductor todavía no proporciona una abstracción unificada para ello.

Si utilizas componentes que no están soportados en todos los proveedores, prioriza la detección en tiempo de ejecución y la degradación elegante.

Ejemplo de detección en tiempo de ejecución

Section titled “Ejemplo de detección en tiempo de ejecución”
@Composable
fun CompatibilityAwareMap() {
val mapViewState = rememberGoogleMapViewState()
val supportsGroundImage = mapViewState is GoogleMapViewStateImpl
// Sustituye MapView por el proveedor que prefieras, como GoogleMapView o MapboxMapView
MapView(state = mapViewState) {
// Componentes siempre soportados
Marker(
position = GeoPointImpl.fromLatLong(37.7749, -122.4194),
icon = DefaultIcon()
)
Circle(
center = GeoPointImpl.fromLatLong(37.7749, -122.4194),
radiusMeters = 1000.0,
fillColor = Color.Blue.copy(alpha = 0.3f)
)
// Componentes soportados de forma condicional
if (supportsGroundImage) {
GroundImage(
bounds = imageBounds,
image = overlayImage,
opacity = 0.7f
)
}
}
}
  1. Detección de capacidades – comprueba las capacidades del proveedor antes de usar funciones específicas.
  2. Degradación elegante – ofrece alternativas (o desactiva controles) cuando una función no está soportada.
  3. Documentación – documenta qué proveedores soporta tu app y qué diferencias de funcionalidad existen.
  4. Pruebas – prueba tu app con todos los proveedores objetivo para detectar diferencias visuales o de comportamiento.

A medida que se añadan nuevas funciones a MapConductor o a los SDK de los proveedores, esta página debería actualizarse para reflejar el estado de compatibilidad más reciente.