Doku / Einrichtung / Android / Google Maps

Google Maps einrichten

Hier finden Sie die Schritte zur Verwendung des Google Maps SDK for Android aus MapConductor. Es wird alles abgedeckt, vom Abrufen des API-Schlüssels bis zum Einfügen des Schlüssels mit dem Secrets Gradle Plugin und bis zur Anzeige von GoogleMapView.

MODULE
com.mapconductor:for-googlemaps
API KEY
Erforderlich
VIEW
GoogleMapView
TIME
15 Minuten
Derselbe Anbieter, andere PlattformeniOSReact

Bevor Sie beginnen

Android-Entwicklungsumgebung (Android Studio)
Konto für die Google Cloud Console
In dem Google Cloud-Projekt ist das Maps SDK for Android aktiviert.
STEP 01

API-Schlüssel abrufen

  1. Rufen Sie die Google Cloud Console auf.
  2. Erstellen Sie ein neues Projekt oder wählen Sie ein vorhandenes aus.
  3. Aktivieren Sie das Maps SDK for Android.
  4. Erstellen Sie unter „Anmeldedaten“ einen API-Schlüssel.
  5. Beschränken Sie den Schlüssel auf den Paketnamen der App und den SHA-1-Zertifikatsfingerabdruck.
Da für Debug-Builds und Release-Builds unterschiedliche Signaturzertifikate verwendet werden, müssen die SHA-1-Werte separat registriert werden.
STEP 02

Secrets Gradle Plugin installieren

Dies ist ein Mechanismus, um zu vermeiden, dass der Schlüssel in die Quellverwaltung gelangt. Das Plug-in liest secrets.properties und fügt den Wert zur Buildzeit in den 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 03

Abhängigkeiten hinzufügen

Fügen Sie das Google Maps SDK selbst und das MapConductor-Modul zur App hinzu und wenden Sie das Secrets Gradle Plugin an. Die Version von MapConductor wird über die BOM zentral festgelegt.

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

dependencies {
    // Google Maps SDK
    implementation("com.google.android.gms:play-services-maps:20.0.0")

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

    implementation("com.mapconductor:core")
    implementation("com.mapconductor:for-googlemaps")
    // Optional: compose / icons / heatmap / marker-clustering / geojson / kml
}
STEP 04

Manifest und Schlüssel konfigurieren

Schreiben Sie nur Platzhalter in das Manifest, und platzieren Sie die tatsächlichen Werte in secrets.properties. Das Plug-in ersetzt sie zur Buildzeit.

AndroidManifest.xmlXML
<manifest>
    <!-- Add location permissions -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application>
        <!-- Google Maps API Key -->
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="${GOOGLE_MAPS_API_KEY}" />
    </application>
</manifest>
secrets.propertiesProperties
GOOGLE_MAPS_API_KEY=your_actual_api_key
In Apps, die keinen Standort nutzen, ist ACCESS_*_LOCATION nicht erforderlich. Für das Abrufen von Kacheln ist nur INTERNET erforderlich.
ACHTUNG
Bitte committen Sie secrets.properties nicht in die Versionsverwaltung. Wenn Sie es zu .gitignore hinzufügen, vermeiden Sie Fehler. In CI-Umgebungen übergeben Sie es über andere sichere Wege wie Umgebungsvariablen.
STEP 05

ProGuard / R8 konfigurieren (falls zutreffend)

Wenn Sie die Verschleierung aktiviert haben, behalten Sie die Klassen von Play Services Maps bei.

proguard-rules.proProGuard
# Google Play Services
-keep class com.google.android.gms.maps.** { *; }
-keep interface com.google.android.gms.maps.** { *; }
-dontwarn com.google.android.gms.**

PRÜFEN

Was Sie sehen sollten

Erstellen Sie diesen Bildschirm und führen Sie ihn aus; wenn die Karte angezeigt wird und Zoomen und Schwenken funktionieren, ist das Setup abgeschlossen.

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

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

Kartendesigns

GoogleMapDesign ist eine direkte Nachbildung der Kartentypen von Google.

GoogleMapDesign
Notes
Normal
Normale Straßenkarte (roadmap)
Satellite
Satellitenbilder
Hybrid
Satellitenbilder mit Straßen und Beschriftungen
Terrain
Topografische Karte
None
Keine Basiskarte

Fehlerbehebung

Karte wird nicht angezeigt (grauer Bildschirm)

  • Überprüfen Sie, ob der API-Schlüssel in secrets.properties korrekt ist.
  • Überprüfen Sie, ob das Maps SDK for Android in der Google Cloud Console aktiviert ist.
  • Überprüfen Sie, ob die Einschränkungen des Schlüssels mit dem tatsächlichen Paketnamen und dem SHA-1 übereinstimmen.

Im Protokoll wird ein API-Schlüsselfehler angezeigt

  • Überprüfen Sie den Wert und das Ablaufdatum des Schlüssels.
  • Überprüfen Sie die Einschränkungseinstellungen auf der Konsole.

Build schlägt fehl

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

Weiter

Wenn GoogleMapView angezeigt wird, können Overlays wie Marker, Polyline, Circle mit der gemeinsamen API geschrieben werden. Auch wenn der Anbieter ausgetauscht wird, bleibt dieser Teil des Codes unverändert.