Maps SDK for Android – Kurzanleitung

Auf dieser Seite wird beschrieben, wie Sie mit der Google Maps-Vorlage für Android Studio eine Android-App erstellen, in der eine Karte zu sehen ist. Wenn Sie ein bereits bestehendes Projekt konfigurieren möchten, empfehlen wir den Artikel Bestehendes Android Studio-Projekt einrichten.

Diese Kurzanleitung ist für Entwickler gedacht, die mit den Grundlagen der Android-Entwicklung mit Java oder Kotlin vertraut sind.

Entwicklungsumgebung einrichten

  1. Für diese Schritte ist Android Studio erforderlich. Falls noch nicht geschehen, laden Sie es herunter und installieren Sie es.

  2. Fügen Sie das Google Play Services SDK in Android Studio ein. Sie können es über den SDK-Manager hinzufügen. Das Maps SDK for Android ist darin enthalten.

Android-Gerät einrichten

Um eine App auszuführen, in der das Maps SDK for Android verwendet wird, müssen Sie sie auf einem Android-Gerät oder einem Android Emulator bereitstellen, das bzw. der auf Android 4.0 oder höher basiert und Google APIs enthält.

  • Wenn Sie ein Android-Gerät verwenden möchten, folgen Sie der Anleitung zum Ausführen von Apps auf einem Hardwaregerät.
  • Wenn Sie einen Android Emulator verwenden möchten, können Sie ein virtuelles Gerät erstellen und den Emulator mit dem AVD Manager für virtuelle Android-Geräte installieren, der in Android Studio enthalten ist.

In Android Studio ein Google Maps-Projekt erstellen

  1. Öffnen Sie Android Studio und klicken Sie im Fenster Welcome to Android Studio (Willkommen in Android Studio) auf Create New Project (Neues Projekt erstellen).

  2. Klicken Sie im Fenster New Project (Neues Projekt) in der Kategorie Phone and Tablet (Smartphone und Tablet) auf Google Maps Activity (Google Maps-Aktivitäten). Klicken Sie dann auf Next (Weiter).

  3. Füllen Sie das Formular Google Maps Activity aus:

    • Legen Sie für Language (Programmiersprache) Java oder Kotlin fest. Beide Sprachen werden im Maps SDK for Android vollständig unterstützt. Weitere Informationen zu Kotlin

    • Geben Sie unter Minimum SDK (Min. SDK-Version) eine SDK-Version an, die mit Ihrem Testgerät kompatibel ist. Sie müssen eine Version auswählen, die höher als die Mindestversion ist, die für das Maps SDK for Android, Version 18.0.x, erforderlich ist. Das ist derzeit Android API-Level 19 (Android 4.4, KitKat) oder höher. Aktuelle Informationen zu den Versionshinweisen

  4. Klicken Sie auf Finish (Fertigstellen).

    Über Android Studio wird Gradle gestartet und das Projekt erstellt. Das kann einige Zeit dauern.

  5. Wenn der Build fertig ist, werden die Dateien google_maps_api.xml und MapsActivity von Android Studio geöffnet. Ihre Aktivität hat möglicherweise einen anderen Namen, aber abgesehen davon wird nichts daran geändert.

  6. Die Datei google_maps_api.xml enthält eine Anleitung, wie ein Google Maps API-Schlüssel abgerufen und anschließend in der Datei abgelegt werden kann. Fügen Sie der Datei google_maps_api.xml nicht Ihren eigenen API-Schlüssel hinzu, da er so weniger sicher gespeichert wird. Erstellen Sie stattdessen ein Cloud-Projekt und konfigurieren Sie den API-Schlüssel, wie in den folgenden Abschnitten beschrieben.

Einrichtung in der Cloud Console

Klicken Sie auf die Tabs unten, um die Einrichtung in der Cloud Console vorzunehmen:

Schritt 1

Cloud Console

  1. Klicken Sie in der Google Cloud Console auf der Seite für die Projektauswahl auf Projekt erstellen, um ein neues Cloud-Projekt einzurichten.

    Zur Projektauswahl

  2. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. Das können Sie hier überprüfen.

    Google Cloud bietet einen kostenlosen Testzeitraum. Dieser endet entweder nach 90 Tagen oder wenn im Konto Kosten in Höhe von 300 $ angefallen sind – je nachdem, welcher Fall zuerst eintritt. Eine Kündigung ist jederzeit möglich. Außerdem erhalten Sie jeden Monat ein Guthaben von 200 $ für die Google Maps Platform. Weitere Informationen finden Sie unter Guthaben auf dem Rechnungskonto und Abrechnung.

Cloud SDK

gcloud projects create "PROJECT"

Weitere Informationen zum Google Cloud SDK, zur Cloud SDK-Installation und zum folgenden Befehl:

Schritt 2

Damit Sie die Google Maps Platform verwenden können, müssen Sie die APIs und SDKs aktivieren, die Sie in Ihrem Projekt nutzen möchten.

Cloud Console

Maps SDK for Android aktivieren

Cloud SDK

gcloud services enable \
    --project "PROJECT" \
    "maps-android-backend.googleapis.com"

Weitere Informationen zum Google Cloud SDK, zur Cloud SDK-Installation und zum folgenden Befehl:

Schritt 3

Bei diesem Schritt wird der API-Schlüssel erstellt. Wenn Sie Ihren API-Schlüssel in der Produktionsumgebung verwenden, sollten Sie ihn unbedingt einschränken. Weitere Informationen

Der API-Schlüssel ist eine eindeutige ID. Damit werden die mit Ihrem Projekt verknüpften Anfragen zu Verwendungs- und Abrechnungszwecken authentifiziert. Sie müssen mindestens einen API-Schlüssel mit Ihrem Projekt verknüpft haben.

So erstellen Sie einen API-Schlüssel:

Cloud Console

  1. Rufen Sie Google Maps Platform > Anmeldedaten auf.

    Zur Seite „Anmeldedaten“

  2. Klicken Sie auf der Seite Anmeldedaten auf Anmeldedaten erstellen > API-Schlüssel.
    Im Dialogfeld API-Schlüssel erstellt wird der neu erstellte API-Schlüssel angezeigt.
  3. Klicken Sie auf Schließen.
    Der neue API-Schlüssel wird auf der Seite Anmeldedaten unter API-Schlüssel aufgeführt.
    Sie müssen den API-Schlüssel einschränken, bevor Sie ihn in der Produktionsumgebung verwenden.

Cloud SDK

gcloud alpha services api-keys create \
    --project "PROJECT" \
    --display-name "DISPLAY_NAME"

Weitere Informationen zum Google Cloud SDK, zur Cloud SDK-Installation und zum folgenden Befehl:

API-Schlüssel in die App einfügen

In diesem Abschnitt wird beschrieben, wie Sie Ihren API-Schlüssel speichern, damit er von Ihrer App sicherer referenziert werden kann. Er sollte nicht in Ihrem Versionsverwaltungssystem eingecheckt werden. Stattdessen empfehlen wir Ihnen, ihn im Stammverzeichnis Ihres Projekts in der Datei local.properties zu speichern. Weitere Informationen zur Datei local.properties finden Sie unter Attributdateien in Gradle.

Sie können das Secrets Gradle Plugin for Android verwenden, um diese Aufgabe zu optimieren. So installieren Sie das Plug-in und speichern Ihren API-Schlüssel:

  1. Öffnen Sie in Android Studio die Datei build.gradle auf Projektebene und fügen Sie folgenden Code in das Element dependencies unter buildscript ein:
    buildscript {
        dependencies {
            // ...
            classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.0"
        }
    }
        
  2. Öffnen Sie dann die Datei build.gradle auf Modulebene und fügen Sie dem Element plugins den folgenden Code hinzu.
    id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
        
  3. Speichern Sie die Datei und synchronisieren Sie Ihr Projekt mit Gradle.
  4. Öffnen Sie die Datei local.properties in Ihrem Verzeichnis auf Projektebene und fügen Sie den folgenden Code ein: Ersetzen Sie hierbei YOUR_API_KEY durch Ihren eigenen API-Schlüssel.
    MAPS_API_KEY=YOUR_API_KEY
        
  5. Speichern Sie die Datei.
  6. Gehen Sie in der Datei AndroidManifest.xml zu com.google.android.geo.API_KEY und nehmen Sie folgende Änderungen am android:value attribute vor:
    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="${MAPS_API_KEY}" />
        

Hinweis: Für den API-Schlüssel wird com.google.android.geo.API_KEY als Metadatenname empfohlen (siehe oben). Ein Schlüssel mit diesem Namen kann zur Authentifizierung bei mehreren Google Maps-basierten APIs auf der Android-Plattform verwendet werden, einschließlich Maps SDK for Android. Aus Gründen der Abwärtskompatibilität unterstützt die API auch den Namen com.google.android.maps.v2.API_KEY. Für diesen alten Namen wird nur die Authentifizierung bei Version 2 der Android Maps API unterstützt. In der Anwendung kann nur einer der Metadatennamen für den API-Schlüssel festgelegt werden. Falls beide angegeben werden, gibt die API eine Ausnahme aus.

Code ansehen

Überprüfen Sie den Code aus der Vorlage. Sehen Sie sich insbesondere die folgenden Dateien in Ihrem Android Studio-Projekt an.

Datei zur Google Maps-Aktivität

Dies ist die Hauptaktivität für die App. Sie enthält den Code zum Verwalten und Darstellen der Karte. Der Name der Datei, die die Aktivität definiert, ist standardmäßig MapsActivity.java. Wenn Kotlin als Sprache festgelegt ist, heißt sie MapsActivity.kt.

Die Hauptelemente der Google Maps-Aktivität:

  • Vom SupportMapFragment-Objekt wird der Lebenszyklus der Karte verwaltet. Es ist das übergeordnete Element der App-UI.

  • Über das GoogleMap-Objekt ist der Zugriff auf die Kartendaten und die -ansicht möglich. Dies ist die wichtigste Klasse des Maps SDK for Android. Im Leitfaden zu Kartenobjekten werden die Objekte SupportMapFragment und GoogleMap ausführlicher beschrieben.

  • Mit der Funktion moveCamera wird die Karte auf die LatLng-Koordinaten von Sydney (Australien) zentriert. Die ersten Einstellungen, die beim Hinzufügen einer Karte konfiguriert werden, sind in der Regel die Kartenposition und die Kameraeinstellungen, etwa Blickwinkel, Kartenausrichtung und Zoomstufe. Weitere Informationen

  • Mit der Funktion addMarker wird auf den Koordinaten von Sydney eine Markierung hinzugefügt. Weitere Informationen

Die Datei zur Google Maps-Aktivität enthält folgenden Code:

Java


import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback {

    private GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    /**
     * Manipulates the map once available.
     * This callback is triggered when the map is ready to be used.
     * This is where we can add markers or lines, add listeners or move the camera. In this case,
     * we just add a marker near Sydney, Australia.
     *
     * If Google Play services is not installed on the device, the user will be prompted to install
     * it inside the SupportMapFragment. This method will only be triggered once the user has
     * installed Google Play services and returned to the app.
     */
    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        // Add a marker in Sydney and move the camera
        LatLng sydney = new LatLng(-34, 151);
        mMap.addMarker(new MarkerOptions()
                .position(sydney)
                .title("Marker in Sydney"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
    }
}

      

Kotlin


import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

import com.google.android.gms.maps.CameraUpdateFactory
import com.google.android.gms.maps.GoogleMap
import com.google.android.gms.maps.OnMapReadyCallback
import com.google.android.gms.maps.SupportMapFragment
import com.google.android.gms.maps.model.LatLng
import com.google.android.gms.maps.model.MarkerOptions

internal class MapsActivity : AppCompatActivity(), OnMapReadyCallback {

    private lateinit var mMap: GoogleMap

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_maps)
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        val mapFragment = supportFragmentManager
            .findFragmentById(R.id.map) as SupportMapFragment
        mapFragment.getMapAsync(this)
    }

    /**
     * Manipulates the map once available.
     * This callback is triggered when the map is ready to be used.
     * This is where we can add markers or lines, add listeners or move the camera. In this case,
     * we just add a marker near Sydney, Australia.
     * If Google Play services is not installed on the device, the user will be prompted to install
     * it inside the SupportMapFragment. This method will only be triggered once the user has
     * installed Google Play services and returned to the app.
     */
    override fun onMapReady(googleMap: GoogleMap) {
        mMap = googleMap

        // Add a marker in Sydney and move the camera
        val sydney = LatLng(-34.0, 151.0)
        mMap.addMarker(MarkerOptions()
            .position(sydney)
            .title("Marker in Sydney"))
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney))
    }
}

      

Gradle-Datei des Moduls

Die Datei build.gradle des Moduls enthält die folgende Kartenabhängigkeit, die für das Maps SDK for Android erforderlich ist.

dependencies {
    implementation 'com.google.android.gms:play-services-maps:18.0.2'
    // ...
}

Weitere Informationen zum Verwalten der Kartenabhängigkeit finden Sie im Leitfaden zur Versionsverwaltung.

XML-Layoutdatei

Die Datei activity_maps.xml ist die XML-Layoutdatei, mit der die Strukturen der App-UI definiert werden. Sie befindet sich im Verzeichnis res/layout. In der Datei activity_maps.xml ist ein Fragment deklariert, das die folgenden Elemente enthält:

  • Mit tools:context wird die Standardaktivität des Fragments auf MapsActivity festgelegt. Die entsprechende Definition ist in der Datei zur Maps-Aktivität enthalten.
  • Mit android:name wird der Klassenname des Fragments auf SupportMapFragment festgelegt. Dies ist der Fragmenttyp, der in der Datei zur Maps-Aktivität verwendet wird.

Die XML-Layoutdatei enthält folgenden Code:

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/map"
    tools:context=".MapsActivity"
    android:name="com.google.android.gms.maps.SupportMapFragment" />

App bereitstellen und ausführen

Screenshot der Karte mit Markierung auf Sydney

Wenn die App korrekt programmiert ist und ausgeführt wird, ist dort nun eine Karte zu sehen, auf der Sydney markiert ist (wie im Screenshot oben dargestellt).

So können Sie die App bereitstellen und ausführen:

  1. Klicken Sie in Android Studio auf die Menüoption Run (Ausführen) oder das Wiedergabesymbol.
  2. Wählen Sie dann das Gerät aus:
    • Wählen Sie das Android-Gerät aus, das mit Ihrem Computer verbunden ist,
    • oder klicken Sie auf Launch Emulator (Launch-Emulator) und wählen Sie das von Ihnen eingerichtete virtuelle Gerät aus.
  3. Klicken Sie dann auf OK. In Android Studio wird Gradle gestartet, um Ihre App zu erstellen. Die Ergebnisse werden dann auf Ihrem Gerät oder in Ihrem Emulator angezeigt. Es kann einige Minuten dauern, bis die App gestartet wird.

Nächste Schritte

  • Karte einrichten: In diesem Artikel wird beschrieben, wie die Anfangs- und Laufzeiteinstellungen für die Karte festgelegt werden, beispielsweise Kameraposition, Kartentyp, UI-Komponenten und Touch-Gesten.

  • Karte zu Android-App hinzufügen (Kotlin): In diesem Codelab werden Sie Schritt für Schritt durch eine App geführt, in der einige Zusatzfunktionen des Maps SDK for Android veranschaulicht werden.

  • Maps Android KTX verwenden: Mit dieser Kotlin-Erweiterungsbibliothek (KTX) können Sie verschiedene Kotlin-Sprachfunktionen nutzen, während Sie das Maps SDK for Android verwenden.