Geospatial-Anker sind eine Art von Anker, mit dem Sie 3D-Inhalte mit geografischen Koordinaten über die Geospatial API platzieren können.
Georäumliche Anker verwenden einen Breiten- und Längengrad, um ihre Position zu bestimmen. Breiten- und Längengrad werden durch die WGS84-Spezifikation definiert. Es handelt sich um dieselben Koordinaten, die in einem typischen GPS-System angezeigt werden.
Breiten- und Längengrad eines Standorts ermitteln
Wenn Sie einen bestimmten POI im Sinn haben, können Sie mit Google Maps den Längen- und Breitengrad ermitteln:
- Rufen Sie Google Maps auf einem Computer auf.
Gehen Sie zu Ebenen > Mehr.


Ändern Sie den Kartentyp in Satellit und entfernen Sie das Häkchen aus dem Kästchen Globusansicht unten links auf dem Bildschirm.

Dadurch wird eine 2D-Perspektive erzwungen und mögliche Fehler, die durch eine schräge 3D-Ansicht entstehen können, werden vermieden.
Klicken Sie auf der Karte mit der rechten Maustaste auf den Standort und wählen Sie den Längen- und Breitengrad aus, um ihn in die Zwischenablage zu kopieren.
Position im Bereich des Nutzers in einen Georäumlichen Anker umwandeln
Wenn Sie zum POI reisen können, können Sie den Breiten-, Längen- und Höhengrad anhand einer lokalen Messung bestimmen, indem Sie eine geräteinterne Position in eine Geospatial-Position umwandeln.
Inhalte an einem Georäumlichen Anker positionieren
Für raumbezogene Anker ist ein Höhenwert erforderlich, der sich auf das WGS84-Ellipsoid oder auf das Gelände oder Dach bezieht.
Verwenden Sie für Höhenwerte relativ zum WGS84-Ellipsoid
Geospatial.createAnchor:val createAnchorResult = geospatial.createAnchor( latitude, longitude, altitude, Quaternion.Identity, )
Für Höhenwerte relativ zum Gelände oder zu einem Dach verwenden Sie
Geospatial.createAnchorOnSurface. MitGeospatialSurface.TERRAINbzw.GeospatialSurface.ROOFTOPgeben Sie an, wie die endgültige Höhe interpretiert werden soll:val createAnchorResult = geospatial.createAnchorOnSurface( latitude, longitude, altitude, Quaternion.Identity, GeospatialSurface.TERRAIN, )
Wenn Sie
GeospatialSurface.ROOFTOPverwenden, wird die Höhe standardmäßig auf die Geländehöhe festgelegt, wenn das Objekt nicht auf einem Gebäude platziert wird.
Prüfen Sie dann das Ergebnis des Erstellungsaufrufs:
when (createAnchorResult) { is AnchorCreateSuccess -> { // Use anchorCreateResult.anchor to render content at the result. } else -> { // Anchor create failed. // See AnchorCreateResult for possible failure reasons. } }
Verwenden Sie schließlich den Anker, um 3D-Inhalte zu positionieren:
Compose XR
Subspace(FollowTarget.anchor(anchorCreateResult.anchor)) { SpatialPanel { GeospatialContent() } }
SceneCore
val anchorSpace = AnchorSpace.create(session, anchorCreateResult.anchor) val contentEntity = createGeospatialContentEntity(context, session) anchorSpace.addChild(contentEntity)