15 Jahre Google Maps Platform – Neuigkeiten und Ankündigungen

Karte mit einer Markierung hinzufügen

In dieser Anleitung wird erläutert, wie du eine Google-Karte in deine Android-App einbindest. Die Karte enthält eine Markierung, um einen bestimmten Standort anzugeben.

Folge der Anleitung, um eine Android-App mit dem Maps SDK for Android zu erstellen. Die empfohlene Entwicklungsumgebung ist Android Studio.

Code abrufen

Klone das Repository "Google Maps Android API v2 Samples" oder lade es von GitHub herunter.

Entwicklungsprojekt einrichten

Führe die folgenden Schritte aus, um das Anleitungsprojekt in Android Studio zu erstellen.

  1. Lade Android Studio herunter und installiere die Anwendung.
  2. Füge das Paket Google Play-Dienste zu Android Studio hinzu.
  3. Klone das Repository "Google Maps Android API v2 Samples" oder lade es herunter, sofern du das noch nicht zu Beginn dieser Anleitung getan hast.
  4. Anleitungsprojekt importieren:

    • Wähle in Android Studio File > New > Import Project aus.
    • Gehe zu dem Speicherort, an dem du das Repository "Google Maps Android API v2 Samples" nach dem Download gespeichert hast.
    • Suche dort nach dem Projekt MapWithMarker:
      PATH-TO-SAVED-REPO/android-samples/tutorials/MapWithMarker
    • Wähle das Projektverzeichnis aus und klicke auf OK. In Android Studio wird dein Projekt jetzt mit dem Build-Tool Gradle erstellt.

API-Schlüssel abrufen und die erforderlichen APIs aktivieren

Als letzten Schritt benötigst du noch einen Google API-Schlüssel, der eine Berechtigung zum Verwenden von Maps SDK for Android hat.

Klicke hier, um einen Schlüssel anzufordern und die API zu aktivieren.

Jetzt starten

Weitere Informationen findest du in der vollständigen Anleitung zum Abrufen eines API-Schlüssels.

API-Schlüssel der App hinzufügen

  1. Bearbeite die gradle.properties-Datei deines Projekts.
  2. Füge deinen API-Schlüssel in den Wert der GOOGLE_MAPS_API_KEY-Eigenschaft ein. Wenn du deine App erstellst, kopiert Gradle den API-Schlüssel in das Android-Manifest der App, wie unten erläutert.

    GOOGLE_MAPS_API_KEY=PASTE-YOUR-API-KEY-HERE
    

App erstellen und ausführen

  1. Verbinde ein Android-Gerät mit deinem Computer. Befolge die Anleitung, um Entwickleroptionen auf deinem Android-Gerät zu aktivieren und dein System so zu konfigurieren, dass das Gerät erkannt wird. Alternativ kannst du mit Android Virtual Device (AVD) Manager ein virtuelles Gerät konfigurieren. Beim Auswählen eines Emulators solltest du ein Image angeben, das die Google-APIs enthält. Weitere Informationen findest du im Startleitfaden.
  2. Klicke in Android Studio auf die Menüoption Run (oder das Abspielsymbol). Wähle ein Gerät aus, wenn du dazu aufgefordert wirst.

In Android Studio wird Gradle aufgerufen, um die App zu erstellen. Dann wird die App auf dem Gerät oder im Emulator ausgeführt. Es sollte eine Karte mit einer Markierung für Sydney an der Ostküste Australiens angezeigt werden, ähnlich wie das Bild auf dieser Seite.

Fehlerbehebung:

Code verstehen

In diesem Teil der Anleitung werden die wesentlichsten Teile der App MapWithMarker erläutert, damit du besser verstehst, wie du eine ähnliche App erstellst.

Android-Manifest kontrollieren

Beachte folgende Elemente in der Datei AndroidManifest.xml deiner App:

  • Füge ein meta-data-Element hinzu, um die Version der Google Play-Dienste einzubetten, mit der die App kompiliert wurde.

    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
    
  • Füge ein meta-data-Element hinzu, mit dem der API-Schlüssel angegeben wird. Im Beispiel, das zu dieser Anleitung gehört, wird der Wert für den API-Schlüssel einem String google_maps_key zugeordnet. Wenn du deine App erstellst, wird der API-Schlüssel von Gradle aus der gradle.properties-Datei deines Projekts kopiert und in den Stringwert eingefügt.

    <meta-data
      android:name="com.google.android.geo.API_KEY"
      android:value="@string/google_maps_key" />
    

    Wie der API-Schlüssel dem Stringwert zugeordnet ist, kannst du anhand des build.gradle-Elements in deiner App sehen. Es enthält die folgende Zeile, in der der String google_maps_key der Gradle-Eigenschaft GOOGLE_MAPS_API_KEY zugeordnet ist:

      resValue "string", "google_maps_key",
              (project.findProperty("GOOGLE_MAPS_API_KEY") ?: "")
    

Hier siehst du ein Beispiel eines vollständigen Manifests:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.mapwithmarker">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <!--
             The API key for Google Maps-based APIs.
        -->
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="@string/google_maps_key" />

        <activity
            android:name=".MapsMarkerActivity"
            android:label="@string/title_activity_maps">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Karte hinzufügen

Rufe eine Karte mit dem Maps SDK for Android auf.

  1. Füge der Layoutdatei activity_maps.xml deiner Aktivität ein <fragment>-Element hinzu. Mit diesem Element wird ein SupportMapFragment definiert, das als Container für die Karte fungiert und Zugriff auf das GoogleMap-Objekt bietet. In der Anleitung wird die Version der Android Support Library des Kartenfragments verwendet, um die Abwärtskompatibilität mit früheren Versionen des Android-Frameworks sicherzustellen.

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.mapwithmarker.MapsMarkerActivity" />
    
    
  2. Lege in der onCreate()-Methode die Layoutdatei als Inhaltsansicht fest: Erstelle einen Ziehpunkt für das Kartenfragment, indem du FragmentManager.findFragmentById() aufrufst. Registriere dich dann mit getMapAsync() für den Karten-Callback:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Retrieve the content view that renders the map.
        setContentView(R.layout.activity_maps);
        // Get the SupportMapFragment and request notification
        // when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }
    
  3. Implementiere die Schnittstelle OnMapReadyCallback und überschreibe die onMapReady()-Methode, um die Karte einzurichten, wenn das GoogleMap-Objekt verfügbar ist:

    public class MapsMarkerActivity extends AppCompatActivity
            implements OnMapReadyCallback {
        // Include the OnCreate() method here too, as described above.
        @Override
        public void onMapReady(GoogleMap googleMap) {
            // Add a marker in Sydney, Australia,
            // and move the map's camera to the same location.
            LatLng sydney = new LatLng(-33.852, 151.211);
            googleMap.addMarker(new MarkerOptions().position(sydney)
                    .title("Marker in Sydney"));
            googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
        }
    }
    

Standardmäßig wird vom Maps SDK for Android der Inhalt des Infofensters angezeigt, wenn der Nutzer auf eine Markierung tippt. Wenn du mit der Standardfunktionsweise zufrieden bist, musst du keinen Klick-Listener für die Markierung hinzufügen.

Weitere Informationen

Weitere Informationen zum Kartenobjekt und den Möglichkeiten, die Markierungen bieten