Skip to content

Tutorial

import { Tabs, TabItem } from ‘@astrojs/starlight/components’;

En este tutorial aprenderás a usar MapConductor Android SDK para mostrar un mapa, añadir marcadores y figuras, y manejar interacciones de usuario.

  • Cómo instalar y configurar el SDK de MapConductor.
  • Cómo mostrar un mapa.
  • Cómo añadir marcadores, círculos y polilíneas.
  • Cómo manejar eventos de tap/clic.
  • Cómo controlar la posición de la cámara.
  • Cómo cambiar entre distintos SDK de mapas.
  • Android Studio instalado.
  • Conocimientos básicos de Jetpack Compose.
  • Conocimientos básicos de Kotlin.

Añade las dependencias de MapConductor en build.gradle.kts o build.gradle del módulo:

dependencies {
val mapconductorVersion = "1.1.2"
// Usar BOM para unificar versiones
implementation(platform("com.mapconductor:mapconductor-bom:$mapconductorVersion"))
// Módulo core (obligatorio)
implementation("com.mapconductor:core")
// Usar Google Maps
implementation("com.mapconductor:for-googlemaps")
// O Mapbox
// implementation("com.mapconductor:for-mapbox")
// O HERE Maps
// implementation("com.mapconductor:for-here")
// O ArcGIS
// implementation("com.mapconductor:for-arcgis")
// O MapLibre
// implementation("com.mapconductor:for-maplibre")
}
dependencies {
def mapconductorVersion = "1.1.2"
// Usar BOM para unificar versiones
implementation platform("com.mapconductor:mapconductor-bom:$mapconductorVersion")
// Módulo core (obligatorio)
implementation "com.mapconductor:core"
// Usar Google Maps
implementation "com.mapconductor:for-googlemaps"
// O Mapbox
// implementation "com.mapconductor:for-mapbox"
// O HERE Maps
// implementation "com.mapconductor:for-here"
// O ArcGIS
// implementation "com.mapconductor:for-arcgis"
// O MapLibre
// implementation "com.mapconductor:for-maplibre"
}

Añade la siguiente configuración en build.gradle.kts o build.gradle:

android {
compileSdk = 35
defaultConfig {
minSdk = 26
targetSdk = 35
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
buildFeatures {
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = "35"
}
}
android {
compileSdk 35
defaultConfig {
minSdk 26
targetSdk 35
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = '17'
}
buildFeatures {
compose true
}
composeOptions {
kotlinCompilerExtensionVersion = "35"
}
}

Importante: MapConductor es una capa de API unificada sobre SDKs de mapas existentes. Debes configurar cada SDK de mapas de forma independiente antes de usar la integración de MapConductor.

Cada SDK requiere sus propias claves de API, permisos y configuración:

@Composable
fun BasicMapExample(modifier: Modifier = Modifier) {
val sanFrancisco = GeoPointImpl.fromLatLong(37.7749, -122.4194)
val camera = MapCameraPositionImpl(
position = sanFrancisco,
zoom = 13.0,
)
val mapViewState = rememberGoogleMapViewState(
cameraPosition = camera,
)
GoogleMapView(
modifier = modifier,
state = mapViewState,
onMapClick = { geoPoint ->
println("Map clicked at: ${geoPoint.latitude}, ${geoPoint.longitude}")
}
) {
// Contenido del mapa
}
}
GoogleMapView(
state = mapViewState
) {
Marker(
position = GeoPointImpl.fromLatLong(37.7749, -122.4194),
icon = DefaultIcon(label = "SF"),
extra = "San Francisco marker"
)
}
GoogleMapView(
state = mapViewState
) {
// Círculo
Circle(
center = GeoPointImpl.fromLatLong(37.7749, -122.4194),
radiusMeters = 1000.0,
strokeColor = Color.Blue,
fillColor = Color.Blue.copy(alpha = 0.3f)
)
// Polilínea
Polyline(
points = listOf(
GeoPointImpl.fromLatLong(37.7749, -122.4194),
GeoPointImpl.fromLatLong(37.7849, -122.4094),
),
strokeColor = Color.Magenta,
strokeWidth = 3.dp
)
}

Paso 4: Manejo de interacciones de usuario

Section titled “Paso 4: Manejo de interacciones de usuario”
GoogleMapView(
state = mapViewState,
onMapClick = { geoPoint ->
println("Map clicked at: ${geoPoint.latitude}, ${geoPoint.longitude}")
}
) {
// Contenido
}
GoogleMapView(
state = mapViewState,
onMarkerClick = { markerState ->
println("Marker clicked: ${markerState.extra}")
}
) {
Marker(
position = GeoPointImpl.fromLatLong(37.7749, -122.4194),
icon = DefaultIcon(label = "SF"),
extra = "San Francisco marker"
)
}

Para cambiar de Google Maps a Mapbox, solo cambia los tipos de estado y vista:

// Google Maps
val googleMapState = rememberGoogleMapViewState()
GoogleMapView(state = googleMapState) { /* contenido */ }
// Mapbox
val mapboxState = rememberMapboxMapViewState()
MapboxMapView(state = mapboxState) { /* mismo contenido */ }

Todos los overlays (Marker, Circle, Polyline, etc.) pueden reutilizarse entre proveedores siempre que intercambies el MapViewState y el composable de vista de mapa.

En este tutorial has visto los conceptos básicos de MapConductor:

  • Cómo instalar y configurar dependencias.
  • Cómo mostrar un mapa.
  • Cómo añadir marcadores y figuras.
  • Cómo manejar interacciones de usuario.
  • Cómo cambiar entre distintos SDK de mapas.

Para profundizar más, consulta: