MapLibre einrichten
Anleitung zur Verwendung von MapLibre Native Android mit MapConductor. MapLibre selbst hat keinen API-Schlüssel; das Erscheinungsbild der Karte wird vom Ursprung des Styles-JSON bestimmt. Dies ist der Anbieter, der mit den kürzesten Schritten zum Laufen gebracht werden kann.
Bevor Sie beginnen
Tiles-Herkunft festlegen
MapLibre ist ein Renderer und kein Anbieter von Tiles. Für einen reinen Funktionstest reicht der Demo-Style von MapLibreDesign, aber in der Produktion müssen Sie den Anbieter explizit auswählen.
- Kostenlos / Community: OpenStreetMap-basierte Tiles, Protomaps (Self-Hosting möglich)
- Kommerziell: MapTiler Cloud, Stadia Maps (beide mit kostenlosem Kontingent)
- Self-Hosting: Eigene Auslieferung z. B. mit tileserver-gl
Abhängigkeiten hinzufügen
Da das MapLibre SDK aus Maven Central bezogen werden kann, sind keine zusätzlichen Repository-Konfigurationen erforderlich.
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")
}Berechtigungen zum Manifest hinzufügen
Da kein Schlüssel injiziert wird, sind nur Berechtigungen erforderlich.
<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>PRÜFEN
Was Sie sehen sollten
Zeigt die Karte unter Angabe eines Styles an. Wenn die Tiles geladen werden und Zoomen, Schwenken und Drehen funktionieren, sind Sie fertig.
@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)
}Kartendesigns
MapLibreDesign ist eine Konstante, die die URL des Styles-JSON umschließt. Wenn Sie einen eigenen Style verwenden, erstellen Sie einen Wert desselben Typs und übergeben ihn.
Fehlerbehebung
Karte bleibt komplett weiß
- Prüft, ob die Style-URL erreichbar ist und ob das JSON gültig ist.
- Prüft, ob die INTERNET-Berechtigung erteilt ist.
- Prüft in Logcat, ob Netzwerk- oder Parser-Fehler auftreten.
Nur Tiles werden nicht geladen
- URL des Tile-Servers überprüfen.
- Prüft, ob Sie gegen die Ratenbegrenzung des kostenlosen Dienstes verstoßen.
- Wenn Sie einen kommerziellen Anbieter verwenden, prüft, ob der in die Style-URL eingebettete Schlüssel gültig ist.
Build schlägt fehl
- Stellen Sie sicher, dass die Koordinaten und die Version des Map SDK mit den Angaben im Versionenkatalog übereinstimmen.
- Stellen Sie sicher, dass die Repository-Definitionen in settings.gradle.kts vorhanden sind (wenn repositoriesMode auf FAIL_ON_PROJECT_REPOS gesetzt ist, werden die repositories des Moduls ignoriert).
- Wenn mehrere Map SDKs gleichzeitig installiert sind, überprüfen Sie mit ./gradlew :app:dependencies, ob Abhängigkeitskonflikte vorliegen.
Weiter
Vektorkacheln sind leichter als Raster und rendern schneller. Wenn eine Offline-Nutzung erforderlich ist, erwägen Sie das Caching von Kacheln.