Doku / Einrichtung / Android / HERE

HERE einrichten

Schritte zur Verwendung des HERE SDK (voraussichtlich Explore Edition) mit MapConductor. Da das HERE SDK nicht über Maven, sondern als AAR verteilt wird, sind Schritte erforderlich, um Dateien im Projekt zu platzieren.

MODULE
com.mapconductor:for-here
API KEY
Key ID + Secret
VIEW
HereMapView
TIME
25 Minuten
Derselbe Anbieter, andere PlattformeniOSReact

Bevor Sie beginnen

Android-Entwicklungsumgebung (Android Studio)
HERE-Entwicklerkonto
Access Key ID und Access Key Secret
AAR-Datei des HERE SDK Explore Android (Version 4.26)
STEP 01

Bereitstellen der Anmeldedaten und des AAR

  1. Erstellen Sie ein HERE Developer-Konto.
  2. Erstellen Sie im HERE Developer Portal ein Projekt.
  3. Generieren Sie die Access Key ID und das Secret.
  4. Laden Sie das AAR des HERE SDK Explore Android herunter. Es funktioniert mit der Serie 4.26.
STEP 02

AAR im Projekt platzieren

Platzieren Sie das AAR im libs/-Verzeichnis des Projekts. Stellen Sie sicher, dass der Dateiname exakt mit dem Namen übereinstimmt, auf den von Gradle verwiesen wird.

project layouttext
<project root>/
└── libs/
    └── heresdk-explore-android-4.27.2.0.309975.aar
Die im Dateinamen enthaltene Build-Nummer ist ein Referenzwert. Die Entwicklung und Verifizierung von MapConductor wurde mit dieser Version durchgeführt, sie muss jedoch nicht hier festgelegt werden. MapConductor ist so konzipiert, dass es möglichst nicht von spezifischen Funktionen der einzelnen Karten-SDKs abhängt, sodass es auch mit leicht abweichenden Versionen funktioniert. Bitte passen Sie den Dateinamen an den tatsächlich heruntergeladenen AAR-Dateinamen an.
ACHTUNG
Die Weiterverteilung des AAR des HERE SDK ist eingeschränkt. Bitte committen Sie es nicht in ein öffentliches Repository (fügen Sie libs/heresdk-*.aar zur .gitignore hinzu).
STEP 03

Secrets Gradle Plugin hinzufügen

Ein Mechanismus, um zu vermeiden, dass Schlüssel in der Quellverwaltung abgelegt werden. Das Plugin liest secrets.properties und fügt die Werte beim Erstellen in die Platzhalter in AndroidManifest.xml ein.

(root)/build.gradle.ktsKotlin
plugins {
    id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") version "2.0.1" apply false
}
STEP 04

Abhängigkeiten hinzufügen

Das AAR wird als lokale Datei referenziert. Passen Sie den Dateinamen an die tatsächlich platzierte Datei an.

app/build.gradle.ktsKotlin
plugins {
    // ... other plugins
    id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
}

dependencies {
    // HERE SDK (local AAR).
    // This build number is only the one MapConductor is developed against —
    // use the file name of the AAR you downloaded.
    implementation(
        files("${rootProject.projectDir}/libs/heresdk-explore-android-4.27.2.0.309975.aar")
    )

    // MapConductor BOM pins every module below
    implementation(platform("com.mapconductor:mapconductor-bom:1.3.1"))

    implementation("com.mapconductor:core")
    implementation("com.mapconductor:for-here")
}
STEP 05

Manifest und Anmeldedaten konfigurieren

HERE verwendet sowohl ID als auch Secret. Beide werden über Platzhalter übergeben.

AndroidManifest.xmlXML
<manifest>
    <!-- Add internet and location permissions -->
    <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>
        <!-- HERE Access Key ID -->
        <meta-data
            android:name="HERE_ACCESS_KEY_ID"
            android:value="${HERE_ACCESS_KEY_ID}" />

        <!-- HERE Access Key Secret -->
        <meta-data
            android:name="HERE_ACCESS_KEY_SECRET"
            android:value="${HERE_ACCESS_KEY_SECRET}" />
    </application>
</manifest>
secrets.propertiesProperties
HERE_ACCESS_KEY_ID=your_actual_here_access_key_id
HERE_ACCESS_KEY_SECRET=your_actual_here_access_key_secret
ACHTUNG
Bitte committen Sie secrets.properties nicht in die Versionsverwaltung. Wenn Sie es zu .gitignore hinzufügen, verhindern Sie Fehler. In der CI-Umgebung werden sie über andere sichere Wege wie Umgebungsvariablen übergeben.

PRÜFEN

Was Sie sehen sollten

Wenn die Karte von HERE angezeigt wird, sind Sie fertig.

TestHere.ktJetpack Compose
@Composable
fun TestHere(modifier: Modifier = Modifier) {
    val mapState = rememberHereMapViewState(
        cameraPosition = MapCameraPosition(
            position = GeoPoint(35.6762, 139.6503),
            zoom = 12.0,
        ),
    )

    // If the map appears, the setup is correct.
    HereMapView(modifier = modifier, state = mapState)
}

Kartendesigns

HereMapDesign unterstützt die Map-Schemes von HERE. Es sind verschiedene Stile für verschiedene Zwecke verfügbar, wie z. B. Tag/Nacht oder für die Logistik.

HereMapDesign
Notes
NormalDay / NormalNight
Standard-Stil Tag/Nacht
Satellite
Satellitenbild
HybridDay / HybridNight
Satellitenbild mit Straßen und Beschriftungen
LiteDay / LiteNight
Leichtgewichtiger Stil mit reduzierter Informationsmenge
LogisticsDay
Für Logistik
RoadNetworkDay
Fokus auf Straßennetzwerk

Fehlerbehebung

Karte wird nicht geladen

  • Überprüfen Sie, ob die Access Key ID und der Secret in `secrets.properties` korrekt sind.
  • Überprüfen Sie, ob der Schlüssel gültig ist (nicht deaktiviert).

Es wird gemeldet, dass die AAR nicht gefunden wurde

  • Überprüfen Sie, ob die AAR in `libs/` vorhanden ist.
  • Überprüfen Sie, ob der Dateiname mit der Angabe in `build.gradle.kts` exakt übereinstimmt (einschließlich der Versionsnummer).

Build schlägt fehl

  • Überprüfen Sie, ob die Koordinaten und die Version des Map SDK mit der Angabe im Versionskatalog übereinstimmen.
  • Überprüfen Sie, ob die Repository-Definition in `settings.gradle.kts` vorhanden ist (wenn `repositoriesMode` auf `FAIL_ON_PROJECT_REPOS` gesetzt ist, werden `repositories` auf Modulebene ignoriert).
  • Wenn mehrere Map SDKs gleichzeitig installiert sind, überprüfen Sie mit `./gradlew :app:dependencies`, ob keine Abhängigkeitskonflikte vorliegen.

Weiter

Wenn `HereMapView` erscheint, können Sie Overlays über dieselbe allgemeine API wie bei anderen Anbietern stapeln.