Le ancora geospaziali sono un tipo di ancora che ti consente di posizionare contenuti 3D con coordinate geografiche utilizzando l'API Geospatial.
Le ancora geospaziali utilizzano la latitudine e la longitudine per determinare la loro posizione. La latitudine e la longitudine sono definite dalla specifica WGS84, che corrisponde alle stesse coordinate mostrate in un tipico sistema GPS.
Determinare la latitudine e la longitudine di una località
Se hai in mente un punto d'interesse specifico, utilizza Google Maps per determinarne la latitudine e la longitudine:
- Vai a Google Maps su un computer.
Vai a Livelli > Altro.


Cambia il Tipo di mappa in Satellite e deseleziona la casella di controllo Visualizzazione del globo nell'angolo in basso a sinistra dello schermo.

In questo modo viene forzata una prospettiva 2D ed eliminati i possibili errori che possono derivare da una visualizzazione 3D angolata.
Sulla mappa, fai clic con il tasto destro del mouse sulla località e seleziona la longitudine e la latitudine per copiarle negli appunti.
Converti una posizione nell'area dell'utente in un ancoraggio geospaziale
Se puoi raggiungere il punto di interesse, puoi determinare la latitudine, la longitudine e l'altitudine da una lettura locale convertendo una posa locale del dispositivo in una posa Geospatial.
Posiziona i contenuti in corrispondenza di un'ancora geospaziale
Le ancora geospaziali richiedono un valore di altitudine, relativo all'ellissoide WGS84 o al terreno o al tetto.
Per i valori di altitudine relativi all'ellissoide WGS84, utilizza
Geospatial.createAnchor:val createAnchorResult = geospatial.createAnchor( latitude, longitude, altitude, Quaternion.Identity, )
Per i valori di altitudine relativi al terreno o a un tetto, utilizza
Geospatial.createAnchorOnSurface, utilizzando rispettivamenteGeospatialSurface.TERRAINeGeospatialSurface.ROOFTOPper specificare come deve essere interpretata l'altitudine finale:val createAnchorResult = geospatial.createAnchorOnSurface( latitude, longitude, altitude, Quaternion.Identity, GeospatialSurface.TERRAIN, )
Quando utilizzi
GeospatialSurface.ROOFTOP, l'altitudine predefinita è quella del terreno se non viene posizionata su un edificio.
Quindi, controlla il risultato della chiamata di creazione:
when (createAnchorResult) { is AnchorCreateSuccess -> { // Use anchorCreateResult.anchor to render content at the result. } else -> { // Anchor create failed. // See AnchorCreateResult for possible failure reasons. } }
Infine, utilizza l'ancoraggio per posizionare i contenuti 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)