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
- Android Studio Arctic Fox oder höher ist erforderlich. Falls noch nicht geschehen, müssen Sie diese Version von Android Studio herunterladen und installieren.
- Es muss mindestens Version 7.0 des Android Gradle-Plug-ins in Android Studio verwendet werden.
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
Öffnen Sie Android Studio und klicken Sie im Fenster Welcome to Android Studio (Willkommen in Android Studio) auf Create New Project (Neues Projekt erstellen).
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).
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
Klicken Sie auf Finish (Fertigstellen).
Über Android Studio wird Gradle gestartet und das Projekt erstellt. Das kann einige Zeit dauern.
Wenn der Build fertig ist, werden die Dateien
AndroidManifest.xml
undMapsActivity
von Android Studio geöffnet. Ihre Aktivität hat möglicherweise einen anderen Namen, aber abgesehen davon wird nichts daran geändert.Die Datei
AndroidManifest.xml
enthält eine Anleitung, wie ein Google Maps API-Schlüssel abgerufen und anschließend in der Datei „local.properties“ abgelegt werden kann. Fügen Sie der DateiAndroidManifest.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.
Google Cloud-Projekt einrichten
Klicken Sie auf die Tabs unten, um die Einrichtung in der Cloud Console vorzunehmen:
Schritt 1
Cloud Console
-
Klicken Sie in der Google Cloud Console auf der Seite für die Projektauswahl auf Projekt erstellen, um ein neues Cloud-Projekt einzurichten.
-
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
Cloud SDK
gcloud services enable \ --project "PROJECT" \ "maps-android-backend.googleapis.com"
Weitere Informationen zum Google Cloud SDK, zur Cloud SDK-Installation und zu folgenden Befehlen:
Schritt 3
Dieser Schritt behandelt nur die Erstellung des API-Schlüssels. Wenn Sie Ihren API-Schlüssel in der Produktionsumgebung verwenden, sollten Sie ihn außerdem 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. Mit Ihrem Projekt muss mindestens ein API-Schlüssel verknüpft sein.
So erstellen Sie einen API-Schlüssel:
Cloud Console
-
Rufen Sie Google Maps Platform > Anmeldedaten auf.
-
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. -
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 Gradle properties files (nur in englischer Sprache verfügbar).
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:
- Öffnen Sie in Android Studio die Datei
build.gradle
auf Projektebene und fügen Sie folgenden Code in das Elementdependencies
unterbuildscript
ein:plugins { // ... id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' version '2.0.1' apply false }
- Öffnen Sie dann die Datei
build.gradle
auf Modulebene und fügen Sie dem Elementplugins
den folgenden Code hinzu:id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
- Speichern Sie die Datei und synchronisieren Sie Ihr Projekt mit Gradle.
- Öffnen Sie die Datei
local.properties
in Ihrem Verzeichnis auf Projektebene, fügen Sie den folgenden Code ein und ersetzen Sie dabeiYOUR_API_KEY
durch Ihren eigenen API-Schlüssel:MAPS_API_KEY=YOUR_API_KEY
- Speichern Sie die Datei.
- Gehen Sie in der Datei
AndroidManifest.xml
zucom.google.android.geo.API_KEY
und nehmen Sie folgende Änderungen amandroid: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 Anzeigen 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 Kartenansicht möglich. Dies ist die wichtigste Klasse des Maps SDK for Android. Im Leitfaden zu Kartenobjekten werden die ObjekteSupportMapFragment
undGoogleMap
ausführlicher beschrieben.Mit der Funktion
moveCamera
wird die Karte auf dieLatLng
-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 InformationenMit der Funktion
addMarker
wird an 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.1.0' // ... }
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 aufMapsActivity
festgelegt. Die entsprechende Definition ist in der Datei zur Maps-Aktivität enthalten. - Mit
android:name
wird der Klassenname des Fragments aufSupportMapFragment
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
Wenn die App korrekt programmiert ist und ausgeführt wird, ist dort nun eine Karte zu sehen, auf der Sydney in der Mitte liegt und markiert ist (wie im Screenshot oben dargestellt).
So können Sie die App bereitstellen und ausführen:
- Klicken Sie in Android Studio auf die Menüoption Run (Ausführen) oder das Wiedergabesymbol.
- 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.
- 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.