Configurar MapLibre
Instrucciones para usar MapLibre Native Android desde MapConductor. MapLibre en sí no tiene clave de API; la apariencia del mapa la determina el origen del JSON de estilo. Es el proveedor que se puede poner en funcionamiento con los pasos más cortos.
Antes de empezar
Determinar el origen de los tiles
MapLibre es un renderizador, no un proveedor de tiles. Para probar el funcionamiento basta con el estilo de demostración de MapLibreDesign, pero en producción debe elegir explícitamente el origen.
- Gratuito / comunidad: Tiles basados en OpenStreetMap, Protomaps (self-hosting posible)
- Comercial: MapTiler Cloud, Stadia Maps (ambos con nivel gratuito)
- Self-hosting: Entrega propia, por ejemplo con tileserver-gl
Agregar dependencias
Dado que el SDK de MapLibre se puede obtener desde Maven Central, no se requiere configuración adicional de repositorios.
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}dependencies {
// MapLibre Native Android SDK
implementation("org.maplibre.gl:android-sdk:13.4.1")
// MapConductor BOM pins every module below
implementation(platform("com.mapconductor:mapconductor-bom:1.3.1"))
implementation("com.mapconductor:core")
implementation("com.mapconductor:for-maplibre")
}Agregar permisos al manifiesto
Como no se inyecta ninguna clave, solo se requieren permisos.
<manifest>
<!-- Add internet permission for tile loading -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application>
<!-- no key to inject for MapLibre -->
</application>
</manifest>VERIFICAR
Lo que deberías ver
Muestra el mapa especificando un estilo. Si se cargan los tiles y funcionan el zoom, el paneo y la rotación, ha terminado.
@Composable
fun TestMapLibre(modifier: Modifier = Modifier) {
val mapState = rememberMapLibreMapViewState(
cameraPosition = MapCameraPosition(
position = GeoPoint(35.6762, 139.6503),
zoom = 12.0,
),
mapDesign = MapLibreDesign.OpenMapTiles,
)
// If the map appears, the setup is correct.
MapLibreMapView(modifier = modifier, state = mapState)
}Diseños de mapa
MapLibreDesign es una constante que envuelve la URL del JSON de estilo. Si usa su propio estilo, cree un valor del mismo tipo y páselo.
Solución de problemas
El mapa se queda totalmente en blanco
- Verifica si se puede alcanzar la URL del estilo y si el JSON es válido.
- Verifica si se ha otorgado el permiso INTERNET.
- Mire en Logcat si hay errores de red o de análisis.
Solo no se cargan los tiles
- Verifique la URL del servidor de tiles.
- Verifique si ha alcanzado el límite de velocidad del servicio gratuito.
- Si utiliza un proveedor comercial, verifique que la clave incrustada en la URL del estilo sea válida.
La compilación falla
- Verifique que las coordenadas y la versión del SDK del mapa coincidan con las especificaciones del catálogo de versiones.
- Verifique que las definiciones de los repositorios estén en settings.gradle.kts (si repositoriesMode es FAIL_ON_PROJECT_REPOS, se ignorarán los repositorios del módulo).
- Si tiene varios SDK de mapa instalados al mismo tiempo, verifique con ./gradlew :app:dependencies si hay conflictos de dependencias.
Siguiente
Las teselas vectoriales son más ligeras que las ráster y se renderizan más rápido. Si necesita uso sin conexión, considere el almacenamiento en caché de teselas.