Documentación / Configuración / Android / MapLibre

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.

MODULE
com.mapconductor:for-maplibre
API KEY
No necesario
VIEW
MapLibreMapView
TIME
5 minutos
El mismo proveedor, otras plataformasiOSReact

Antes de empezar

Entorno de desarrollo de Android (Android Studio)
URL del JSON de estilo (tiles de demostración, servicio comercial o hosting propio)
STEP 01

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.

  1. Gratuito / comunidad: Tiles basados en OpenStreetMap, Protomaps (self-hosting posible)
  2. Comercial: MapTiler Cloud, Stadia Maps (ambos con nivel gratuito)
  3. Self-hosting: Entrega propia, por ejemplo con tileserver-gl
PRECAUCIÓN
Las tiles de demostración son solo para pruebas de funcionamiento. No debe enviar tráfico de producción a ellas. Además, la mayoría de los proveedores de tiles requieren atribución (por ejemplo, © OpenStreetMap contributors). Verifique los términos de uso y muéstrelos en la interfaz de usuario.
STEP 02

Agregar dependencias

Dado que el SDK de MapLibre se puede obtener desde Maven Central, no se requiere configuración adicional de repositorios.

settings.gradle.ktsKotlin
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}
app/build.gradle.ktsKotlin
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")
}
STEP 03

Agregar permisos al manifiesto

Como no se inyecta ninguna clave, solo se requieren permisos.

AndroidManifest.xmlXML
<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>
En aplicaciones que no utilizan ubicación, no se requieren los permisos ACCESS_*_LOCATION. Para obtener tiles solo se necesita INTERNET.

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.

TestMapLibre.ktJetpack Compose
@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.

MapLibreDesign
Notes
DemoTiles
Tiles de demostración oficiales de MapLibre. Funcionan más rápido sin clave.
OsmBright / OsmBrightEn / OsmBrightJa
OSM Bright. Idiomas distintos para las etiquetas.
MapTilerTonerEn / MapTilerTonerJa
Estilo Toner de alto contraste
MapTilerBasicEn / MapTilerBasicJa
Estilo Basic con menos información
OpenMapTiles
Estilo OpenMapTiles general

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.