1. Übersicht
ARCore ist das Framework von Google zum Erstellen von Augmented-Reality-Erlebnissen auf Smartphones. Die neue ARCore Geospatial API verleiht Augmented Reality eine neue Dimension. Sie ermöglicht es Ihnen, standortspezifische Augmented Reality-Wegpunkte an realen Sehenswürdigkeiten zu platzieren.
Aufgaben
In diesem Codelab lernen Sie die ARCore Geospatial API kennen. Sie erfahren, welche Informationen die Geospatial API für Ihre AR-Anwendung bieten kann und wie diese Daten für eine einfache AR-Navigation verwendet werden können.

Lerninhalte
- Ein ARCore-Projekt einrichten, in dem die Geospatial API verwendet wird
- Hier erfahren Sie, wie Sie geografische Daten von der Geospatial API anfordern und mit Google Maps anzeigen.
- So platzieren Sie einen Anker, der an einem realen Ort angebracht ist.
Voraussetzungen
- Ein unterstütztes ARCore-Android-Gerät, das über ein USB-Kabel mit Ihrem Entwicklungscomputer verbunden ist und für USB-Debugging konfiguriert wurde.
- Android Studio ist installiert und für die Entwicklung von Android-Apps konfiguriert.
- Google Play-Dienste für AR 1.31 oder höher, installiert auf dem Android-Entwicklungsgerät.
2. Entwicklungsumgebung einrichten
Android Studio einrichten
Um mit der Geospatial API zu beginnen, haben wir ein Starterprojekt bereitgestellt, das die Grundlagen eines ARCore-Projekts enthält, das in das Google Maps SDK eingebunden ist. So können Sie schnell mit der Geospatial API loslegen.
- Starten Sie Android Studio und importieren Sie ein Projekt aus der Versionsverwaltung.
- Wenn Sie bereits ein Projekt geöffnet haben, verwenden Sie Datei > Neu > Projekt aus der Versionskontrolle....
- Wenn das Fenster Welcome to Android Studio angezeigt wird, verwenden Sie Get from VCS.

- Wählen Sie Git aus und importieren Sie das Projekt mit der URL
https://github.com/google-ar/codelab-geospatial.git.
Google Cloud-Projekt einrichten
Die Geospatial API verwendet Street View-Bilder in Kombination mit den Informationen des Magnetometers und des Kamerasensors des Geräts, um die Ausrichtungswerte zu verbessern. Um diesen Dienst nutzen zu können, müssen Sie ein Google Cloud-Projekt einrichten.
- Erstellen Sie ein Projekt in der Google Cloud Console:
- Google Cloud Platform-Projekt erstellen

- Geben Sie einen geeigneten Project name (Projektname) ein, z. B. „ARCore Geospatial API project“ (ARCore Geospatial API-Projekt), und wählen Sie einen beliebigen Standort aus.
- Klicken Sie auf Erstellen.
- Google Cloud Platform-Projekt erstellen
- Aktivieren Sie die erforderlichen APIs:
- Wählen Sie in der Seitenleiste APIs & Dienste und dann Bibliothek aus.
- Suchen Sie nach der ARCore API.
- Klicken Sie auf Aktivieren.
- Kehren Sie zur Mediathek zurück.
- Suchen Sie nach dem Maps SDK for Android.
- Klicken Sie auf Aktivieren.
- API-Schlüssel-Anmeldedaten erstellen:
- Wählen Sie unter APIs & Dienste die Option Anmeldedaten aus.
- Klicken Sie in der oberen Leiste auf Anmeldedaten erstellen und wählen Sie dann API-Schlüssel aus.
- Notieren Sie sich den erstellten Schlüssel, da Sie ihn für den nächsten Schritt benötigen. Kehren Sie zur Seite Anmeldedaten zurück, wenn Sie sie abrufen müssen.
Mit diesen Schritten haben Sie ein Google Cloud-Projekt mit API-Schlüsselautorisierung erstellt und können die Geospatial API verwenden.
API-Schlüssel in das Android Studio-Projekt einbinden
Um den API-Schlüssel aus Google Cloud mit Ihrem Projekt zu verknüpfen, öffnen Sie das in Android Studio erstellte Projekt und ändern Sie die API-Schlüssel:
- Öffnen Sie app > src > AndroidManifest.xml.
- Suchen Sie nach den folgenden
meta-data-Einträgen:<meta-data android:name="com.google.android.ar.API_KEY" android:value="PLACEHOLDER_API_KEY" /> <meta-data android:name="com.google.android.geo.API_KEY" android:value="PLACEHOLDER_API_KEY" /> - Ersetzen Sie
PLACEHOLDER_API_KEYdurch den API-Schlüssel, den Sie in Ihrem Google Cloud-Projekt erstellt haben.
Der in com.google.android.ar.API_KEY gespeicherte Wert autorisiert diese App zur Verwendung der Geospatial API und der in com.google.android.geo.API_KEY gespeicherte Wert autorisiert diese App zur Verwendung des Google Maps SDK.
Projekt bestätigen
Prüfen Sie, ob Ihr Projekt bereit ist. Führen Sie Ihre App in Android Studio aus. Sie sollten eine Kameraansicht und unten auf dem Bildschirm eine funktionierende Karte sehen.

3. Position des Nutzers ermitteln
In diesem Schritt fügen Sie dem Beispielprojekt Code hinzu, um mit der Geospatial API zu beginnen.
ARCore-Sitzung für die Verwendung der Geospatial API konfigurieren
Um Geodaten zu erhalten, müssen Sie die Geospatial API aktivieren. Ändern Sie GeospatialMode in Ihrer Sitzungskonfiguration in ENABLED, indem Sie die Funktion configureSession in HelloGeoActivity.kt ändern:
fun configureSession(session: Session) {
session.configure(
session.config.apply {
// Enable Geospatial Mode.
geospatialMode = Config.GeospatialMode.ENABLED
}
)
}
Wenn der Geospatial-Modus ENABLED ist, kann die Anwendung raumbezogene Informationen abrufen.
Daten von der Geospatial API anfordern
Suchen Sie in HelloGeoRenderer.kt nach der folgenden Zeile:
// TODO: Obtain Geospatial information and display it on the map.
Prüfen Sie darunter, ob das Earth-Objekt verfügbar ist. Das ist der Fall, wenn trackingState TrackingState.ENABLED.
val earth = session.earth
if (earth?.trackingState == TrackingState.TRACKING) {
// TODO: the Earth object may be used here.
}
Fordern Sie unterhalb von TODO raumbezogene Informationen von ARCore an. Fügen Sie diese Zeile hinzu:
val cameraGeospatialPose = earth.cameraGeospatialPose
So erhalten Sie ein GeospatialPose mit folgenden Informationen:
- Standort, angegeben in Breiten- und Längengrad. Außerdem wird eine Schätzung der Standortgenauigkeit angegeben.
- Höhe und eine Schätzung der Höhentreue.
- Die Richtung, in die das Gerät zeigt, und eine Schätzung der Genauigkeit der Richtung.
Positionierungsinformationen auf der Karte anzeigen
Sie können die in cameraGeospatialPose gespeicherte GeospatialPose verwenden, um eine Markierung auf der Karte zu verschieben, die den Standort des Nutzers angibt. Fahren Sie dort fort, wo Sie aufgehört haben, und fügen Sie Folgendes hinzu:
activity.view.mapView?.updateMapPosition(
latitude = cameraGeospatialPose.latitude,
longitude = cameraGeospatialPose.longitude,
heading = cameraGeospatialPose.heading
)
Dadurch wird die Position der Karte fortlaufend mit den Werten aktualisiert, die von der Geospatial API abgerufen werden.
Jetzt ausprobieren
Klicken Sie in Android Studio auf Play. Halten Sie Ihr Gerät hoch und bewegen Sie es, damit ARCore die Positionierung ermitteln kann. Nach kurzer Zeit sollte auf der Karte eine grüne Markierung angezeigt werden. Diese Markierung dreht sich, wenn Sie sich umsehen. Außerdem sollte er in die richtige Richtung zeigen: Wenn Sie nach Norden blicken, sollte der Pfeil ebenfalls nach Norden zeigen.

4. Anker mit geografischen Koordinaten platzieren
Mit der Geospatial API können Anker an beliebigen Koordinatenpaaren und Rotationen in der realen Welt platziert werden. So können Nutzer verankerte Inhalte sehen, wenn sie bestimmte Orte besuchen.
In diesem Schritt fügen Sie eine Möglichkeit hinzu, einen Anker zu platzieren, indem Sie auf die Karte tippen.
Aktion festlegen, die ausgeführt wird, wenn auf die Karte getippt wird
Das Projekt enthält eine onMapClick-Funktion, die mit Breiten- und Längengrad aufgerufen wird, wenn auf das Kartenfragment geklickt wird. Suchen Sie in HelloGeoRenderer.kt nach der Funktion onMapClick.
Prüfen, ob das Earth-Objekt verwendet werden kann
Bevor Sie Anker auf der Erde erstellen, muss die TrackingState des Earth-Objekts TRACKING sein. Das bedeutet, dass die Position der Erde bekannt ist. Achten Sie außerdem darauf, dass der EarthState-Wert ENABLED ist. Das bedeutet, dass bei der Geospatial API keine Probleme aufgetreten sind. Fügen Sie diese Zeilen in onMapClick ein:
val earth = session?.earth ?: return
if (earth.trackingState != TrackingState.TRACKING) {
return
}
Positionierung des neuen Ankers festlegen
Nachdem Sie bestätigt haben, dass das Earth-Objekt verfolgt wird, trennen Sie die vorherige earthAnchor, falls vorhanden. In den nächsten Schritten ersetzen Sie earthAnchor durch einen neuen Anker:
earthAnchor?.detach()
Verwenden Sie dann cameraGeospatialPose, um die Höhe für den neuen Anker zu bestimmen. Verwenden Sie das Koordinatenpaar, das durch Tippen auf die Karte entsteht, als Positionierung des Ankers.
// Place the earth anchor at the same altitude as that of the camera to make it easier to view.
val altitude = earth.cameraGeospatialPose.altitude - 1
// The rotation quaternion of the anchor in the East-Up-South (EUS) coordinate system.
val qx = 0f
val qy = 0f
val qz = 0f
val qw = 1f
earthAnchor =
earth.createAnchor(latLng.latitude, latLng.longitude, altitude, qx, qy, qz, qw)
Mit createAnchor wird ein Anchor erstellt, das an geodätische Koordinaten mit einer bestimmten Drehung gebunden ist. Dieser Anker versucht, stabil zu bleiben und an den angegebenen Koordinaten und der angegebenen Höhe fixiert zu werden.
Die platzierte Markierung auf der Karte anzeigen
Verschieben Sie dann eine neue Markierung, um anzugeben, wo die Markierung platziert wurde:
activity.view.mapView?.earthMarker?.apply {
position = latLng
isVisible = true
}
Jetzt ausprobieren
Klicken Sie in Android Studio auf Play. Halten Sie Ihr Gerät hoch und bewegen Sie es, damit ARCore die Position bestimmen kann. Nach kurzer Zeit sollte auf der Karte eine grüne Markierung angezeigt werden, die Ihre aktuelle Position angibt.
Wenn Sie auf die Karte tippen, wird mit der Geospatial API ein Anker platziert, der an einem realen Ort fixiert ist. Platzieren Sie den Anker in der Nähe Ihres aktuellen Standorts, damit er in der AR-Ansicht zu sehen ist. Es sollte stabil bleiben, während Sie sich in Ihrer Umgebung bewegen.

5. Fazit
In diesem Codelab haben Sie gelernt, wie Sie mit der Geospatial API eine einfache AR-Anwendung erstellen, die an die reale Welt gebunden ist.

Behandelte Themen
- Ein Google Cloud-Projekt mit aktivierter Geospatial API einrichten
- Hier erfahren Sie, wie Sie raumbezogene Informationen in einem ARCore-Projekt abrufen und auf einer Karte darstellen.
- So platzieren Sie einen Anker, der mithilfe der geografischen Positionierung in der realen Welt positioniert wird.
Zusätzliche Ressourcen
Weitere Informationen zu den geografischen Konzepten und SDKs, die in diesem Codelab verwendet werden, finden Sie in den folgenden zusätzlichen Ressourcen: