Les ancres géospatiales sont un type d'ancre qui vous permet de placer du contenu 3D avec des coordonnées géographiques à l'aide de l'API Geospatial.
Les ancres géospatiales utilisent une latitude et une longitude pour déterminer leur positionnement. La latitude et la longitude sont définies par la spécification WGS84, qui correspond aux mêmes coordonnées que celles affichées dans un système GPS standard.
Déterminer la latitude et la longitude d'un lieu
Si vous avez un point d'intérêt spécifique en tête, utilisez Google Maps pour déterminer sa latitude et sa longitude :
- Accédez à Google Maps sur un ordinateur de bureau.
Accédez à Calques > Plus.


Définissez le Type de carte sur Satellite et décochez la case Vue Globe en bas à gauche de l'écran.

Cela force une perspective 2D et élimine les erreurs possibles pouvant provenir d'une vue 3D inclinée.
Sur la carte, effectuez un clic droit sur l'emplacement, puis sélectionnez la longitude et la latitude pour les copier dans votre presse-papiers.
Convertir une position dans la zone de l'utilisateur en ancrage géospatial
Si vous pouvez vous rendre au point d'intérêt, vous pouvez déterminer la latitude, la longitude et l'altitude à partir d'une lecture locale en convertissant une pose locale de l'appareil en pose géospatiale.
Positionner du contenu au niveau d'un ancrage géospatial
Les ancres géospatiales nécessitent une valeur d'altitude, qui est relative à l'ellipsoïde WGS84, au terrain ou au toit.
Pour les valeurs d'altitude par rapport à l'ellipsoïde WGS84, utilisez
Geospatial.createAnchor:val createAnchorResult = geospatial.createAnchor( latitude, longitude, altitude, Quaternion.Identity, )
Pour les valeurs d'altitude relatives au terrain ou à un toit, utilisez
Geospatial.createAnchorOnSurface, en utilisant respectivementGeospatialSurface.TERRAINetGeospatialSurface.ROOFTOPpour spécifier comment l'altitude finale doit être interprétée :val createAnchorResult = geospatial.createAnchorOnSurface( latitude, longitude, altitude, Quaternion.Identity, GeospatialSurface.TERRAIN, )
Lorsque vous utilisez
GeospatialSurface.ROOFTOP, l'altitude par défaut correspond à l'altitude du terrain lorsqu'elle n'est pas placée sur un bâtiment.
Vérifiez ensuite le résultat de l'appel de création :
when (createAnchorResult) { is AnchorCreateSuccess -> { // Use anchorCreateResult.anchor to render content at the result. } else -> { // Anchor create failed. // See AnchorCreateResult for possible failure reasons. } }
Enfin, utilisez l'ancrage pour positionner le contenu 3D :
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)