Kotwice geoprzestrzenne to rodzaj kotwic, które umożliwiają umieszczanie treści 3D ze współrzędnymi geograficznymi za pomocą interfejsu Geospatial API.
Kotwice geoprzestrzenne wykorzystują szerokość i długość geograficzną do określania swojego położenia. Szerokość i długość geograficzna są określane zgodnie ze specyfikacją WGS84, która odpowiada współrzędnym wyświetlanym w typowym systemie GPS.
Określanie szerokości i długości geograficznej lokalizacji
Jeśli masz na myśli konkretne miejsce, użyj Map Google, aby określić jego szerokość i długość geograficzną:
- Otwórz Mapy Google na komputerze.
Kliknij Warstwy > Więcej.


Zmień Typ mapy na Satelita i odznacz pole wyboru Widok kuli ziemskiej w lewym dolnym rogu ekranu.

Wymusza to perspektywę 2D i eliminuje możliwe błędy, które mogą wynikać z widoku 3D pod kątem.
Kliknij lokalizację na mapie prawym przyciskiem myszy i wybierz długość i szerokość geograficzną, aby skopiować ją do schowka.
Konwertowanie pozycji w obszarze użytkownika na kotwicę geoprzestrzenną
Jeśli możesz udać się do danego miejsca, możesz określić szerokość i długość geograficzną oraz wysokość na podstawie lokalnego odczytu, konwertując lokalną pozycję urządzenia na pozycję geoprzestrzenną.
Umieszczanie treści w kotwicy geoprzestrzennej
Kotwice geoprzestrzenne wymagają wartości wysokości, która jest określana względem elipsoidy WGS84 lub względem terenu albo dachu.
W przypadku wartości wysokości względem elipsoidy WGS84 użyj
Geospatial.createAnchor:val createAnchorResult = geospatial.createAnchor( latitude, longitude, altitude, Quaternion.Identity, )
W przypadku wartości wysokości względem terenu lub dachu użyj
Geospatial.createAnchorOnSurface, podając odpowiednioGeospatialSurface.TERRAINiGeospatialSurface.ROOFTOP, aby określić, jak należy interpretować ostateczną wysokość:val createAnchorResult = geospatial.createAnchorOnSurface( latitude, longitude, altitude, Quaternion.Identity, GeospatialSurface.TERRAIN, )
Jeśli używasz
GeospatialSurface.ROOFTOP, wysokość jest domyślnie ustawiana na wysokość terenu, gdy nie jest umieszczona na budynku.
Następnie sprawdź wynik wywołania tworzenia:
when (createAnchorResult) { is AnchorCreateSuccess -> { // Use anchorCreateResult.anchor to render content at the result. } else -> { // Anchor create failed. // See AnchorCreateResult for possible failure reasons. } }
Na koniec użyj kotwicy, aby umieścić treści 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)