TomTom einrichten
Hier sind die Schritte zur Verwendung des TomTom Orbis Maps Display SDK aus MapConductor. Fügen Sie das dedizierte Maven-Repository hinzu und übergeben Sie den API-Schlüssel im Manifest.
Bevor Sie beginnen
API-Schlüssel abrufen
Stellen Sie im TomTom Developer Portal einen API-Schlüssel für Orbis Maps aus.
TomTom-Repository hinzufügen
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
// TomTom Orbis Maps SDK repository
maven {
url = uri("https://repositories.tomtom.com/artifactory/maven")
}
}
}Abhängigkeiten hinzufügen
dependencies {
// TomTom Orbis Maps Display SDK
implementation("com.tomtom.sdk.maps:map-display-standard:2.4.2")
// MapConductor BOM pins every module below
implementation(platform("com.mapconductor:mapconductor-bom:1.3.1"))
implementation("com.mapconductor:core")
implementation("com.mapconductor:for-tomtom")
}Schlüssel im Manifest schreiben
<manifest>
<uses-permission android:name="android.permission.INTERNET" />
<application>
<meta-data
android:name="TOMTOM_API_KEY"
android:value="${TOMTOM_API_KEY}" />
</application>
</manifest>Theme prüfen
Die TomTom-UI-Overlays (Logo, Kompass usw.) basieren auf AppCompat-Themes. Bei anderen Themes funktioniert die Darstellung zwar, aber es werden Warnlogs ausgegeben. Theme.AppCompat oder Theme.MaterialComponents werden empfohlen.
PRÜFEN
Was Sie sehen sollten
Fertig, wenn die Karte und Marker angezeigt werden.
@Composable
fun TestTomTom(modifier: Modifier = Modifier) {
val mapState = rememberTomTomMapViewState(
mapDesign = TomTomMapDesign.Standard,
cameraPosition = MapCameraPosition(
position = GeoPoint(52.3676, 4.9041),
zoom = 11.0,
),
)
TomTomMapView(state = mapState, modifier = modifier) {
Marker(
MarkerState(
position = GeoPoint(52.3676, 4.9041),
icon = DefaultMarkerIcon().copy(label = "Amsterdam"),
),
)
}
}Kartendesigns
TomTomMapDesign unterstützt die Standardstile von Orbis Maps.
Fehlerbehebung
Position der Kartendarstellung verschoben
- MapConductor gibt MapOptions(renderToTexture = true) an. Dies liegt daran, dass die standardmäßige SurfaceView-Darstellung mit SubcomposeLayout von Compose kollidiert. Wenn Sie MapOptions selbst zusammenstellen, ist dieselbe Angabe erforderlich.
Build schlägt fehl
- Prüfen Sie, ob die Koordinaten und die Version des Map SDK mit den Angaben im Versionskatalog übereinstimmen.
- Prüfen Sie, ob die Repository-Definition in settings.gradle.kts vorhanden ist (wenn repositoriesMode FAIL_ON_PROJECT_REPOS ist, werden repositories im Modul ignoriert).
- Wenn Sie mehrere Map SDKs gleichzeitig installiert haben, prüfen Sie mit ./gradlew :app:dependencies auf Konflikte zwischen den Abhängigkeiten.
Weiter
Marker, Polylinien, Polygone, Kreise, Ground Images, Raster-Layer und InfoBubble können alle über die gemeinsame API verwendet werden. Da TomTom kein natives Ziehen für Marker hat, verarbeitet MapConductor MotionEvents direkt, um das Ziehen zu implementieren. Dragbare Marker funktionieren sofort.