As âncoras geoespaciais são um tipo de âncora que permite colocar conteúdo 3D com coordenadas geográficas usando a API Geospatial.
As âncoras geoespaciais usam uma latitude e uma longitude para determinar o posicionamento. A latitude e a longitude são definidas pela especificação WGS84, que são as mesmas coordenadas mostradas em um sistema GPS típico.
Determinar a latitude e a longitude de um local
Se você tiver um ponto de interesse específico em mente, use o Google Maps para determinar a latitude e a longitude dele:
- Acesse o Google Maps em um computador desktop.
Acesse Camadas > Mais.


Mude o Tipo de mapa para Satélite e desmarque a caixa de seleção Visualização do globo no canto inferior esquerdo da tela.

Isso força uma perspectiva 2D e elimina possíveis erros que podem vir de uma visualização 3D em ângulo.
No mapa, clique com o botão direito do mouse no local e selecione a longitude e a latitude para copiá-las para a área de transferência.
Converter uma posição na área do usuário em uma âncora geoespacial
Se você puder viajar até o ponto de interesse, determine a latitude, a longitude e a altitude de uma leitura local convertendo uma pose local do dispositivo em uma pose geoespacial.
Posicionar conteúdo em uma âncora geoespacial
As âncoras geoespaciais exigem um valor de altitude, que é relativo ao elipsoide WGS84 ou ao terreno ou telhado.
Para valores de altitude relativos ao elipsoide WGS84, use
Geospatial.createAnchor:val createAnchorResult = geospatial.createAnchor( latitude, longitude, altitude, Quaternion.Identity, )
Para valores de altitude relativos ao terreno ou a um telhado, use
Geospatial.createAnchorOnSurface, comGeospatialSurface.TERRAINeGeospatialSurface.ROOFTOP, respectivamente, para especificar como a altitude final deve ser interpretada:val createAnchorResult = geospatial.createAnchorOnSurface( latitude, longitude, altitude, Quaternion.Identity, GeospatialSurface.TERRAIN, )
Ao usar
GeospatialSurface.ROOFTOP, a altitude padrão é a do terreno, quando não está em um edifício.
Em seguida, verifique o resultado da chamada de criação:
when (createAnchorResult) { is AnchorCreateSuccess -> { // Use anchorCreateResult.anchor to render content at the result. } else -> { // Anchor create failed. // See AnchorCreateResult for possible failure reasons. } }
Por fim, use a âncora para posicionar o conteúdo em 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)