Sprawdź pozycję aparatu urządzenia w orientacji geoprzestrzennej
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Po skonfigurowaniu ustawień aplikacji pod kątem korzystania z interfejsu Geospatial API możesz wywołać funkcję Earth.getCameraGeospatialPose()
, aby uzyskać wartość GeospatialPose
, która opisuje pozycjonowanie geoprzestrzenne urządzenia dla aparatu w najnowszym ujęciu. Ta poza, zarządzana w obiekcie Earth
, zawiera te informacje:
- lokalizacja wyrażona w szerokości i długości geograficznej;
- Wysokość
- Orientacja zbliżona do kierunku, w którym zwrócony jest użytkownik w systemie współrzędnych EUS, gdzie X+ wskazuje na wschód, Y+ na górę, a Z+ na południe.
Sprawdzanie stanu śledzenia
Wartości geoprzestrzenne są prawidłowe tylko wtedy, gdy parametr Earth.TrackingState
ma wartość TrackingState.TRACKING
. Zawijaj wszystkie wywołania interfejsu Geospatial API w blok sterujący Earth.TrackingState
.
Java
if (earth != null && earth.getTrackingState() == TrackingState.TRACKING) {
GeospatialPose cameraGeospatialPose = earth.getCameraGeospatialPose();
// cameraGeospatialPose contains geodetic location, rotation, and confidences values.
}
Kotlin
if (earth.trackingState == TrackingState.TRACKING) {
val cameraGeospatialPose = earth.cameraGeospatialPose
// cameraGeospatialPose contains geodetic location, rotation, and confidences values.
}
Jeśli Earth.TrackingState
nie stanie się TrackingState.TRACKING
, Earth.TrackingState
może być TrackingState.PAUSED
lub TrackingState.STOPPED
. Jeśli żaden z tych warunków nie jest spełniony, sprawdź Earth.Earthstate
, aby wyświetlić inne stany błędów, które mogą uniemożliwiać śledzenie obiektu Earth
.
Dostosuj pozę, aby uzyskać dokładność.
Gdy urządzenie jest ustawione w domyślnej orientacji pionowej, kąty pochylenia (X+) i odchylenia (Z+) są zwykle dokładne ze względu na naturalne dopasowanie do śledzenia AR. Jednak kąty yaw (Y+) mogą się różnić w zależności od dostępności danych VPS i warunków czasowych w danej lokalizacji. Aplikacja może wymagać wprowadzenia korekty w celu zwiększenia dokładności.
GeospatialPose.getOrientationYawAccuracy()
podaje szacunkowy poziom dokładności kątów yaw (Y+) dla określonego GeospatialPose
. Dokładność orientacji skręcenia to liczba określająca promień (w stopniach) 68. percentyla poziomu ufności wokół kątów skręcenia zwróconych przez funkcję GeospatialPose.getEastUpSouthQuaternion()
. Innymi słowy, istnieje 68% prawdopodobieństwo, że rzeczywisty kąt yaw obiektu GeospatialPose
jest prawidłowy.
Większe wartości oznaczają mniejszą dokładność. Jeśli na przykład szacowany kąt odchylenia wynosi 60 stopni, a dokładność 10 stopni, prawdopodobieństwo, że rzeczywisty kąt odchylenia mieści się w przedziale od 50 do 70 stopni, wynosi 68%.
Co dalej?
O ile nie stwierdzono inaczej, treść tej strony jest objęta licencją Creative Commons – uznanie autorstwa 4.0, a fragmenty kodu są dostępne na licencji Apache 2.0. Szczegółowe informacje na ten temat zawierają zasady dotyczące witryny Google Developers. Java jest zastrzeżonym znakiem towarowym firmy Oracle i jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-26 UTC.
[null,null,["Ostatnia aktualizacja: 2025-07-26 UTC."],[[["\u003cp\u003eThe Geospatial API provides the device's location, altitude, and orientation using the \u003ccode\u003eEarth\u003c/code\u003e object and \u003ccode\u003eGeospatialPose\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eGeospatial data is only valid when \u003ccode\u003eEarth.TrackingState\u003c/code\u003e is \u003ccode\u003eTrackingState.TRACKING\u003c/code\u003e; ensure your code handles other tracking states.\u003c/p\u003e\n"],["\u003cp\u003eWhile pitch and roll are generally precise, yaw accuracy can vary and may require adjustments in your application.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eGeospatialPose.getOrientationYawAccuracy()\u003c/code\u003e provides an estimate of yaw accuracy, with larger values indicating lower accuracy.\u003c/p\u003e\n"],["\u003cp\u003eYou can leverage the Geospatial pose to place Geospatial anchors in your AR experience.\u003c/p\u003e\n"]]],[],null,["# Obtain the device camera's Geospatial pose\n\nOnce you have configured your app's settings to use the Geospatial API, you can call [`Earth.getCameraGeospatialPose()`](/ar/reference/java/com/google/ar/core/Earth#getCameraGeospatialPose-) to obtain a [`GeospatialPose`](/ar/reference/java/com/google/ar/core/GeospatialPose) that describes the device's Geospatial positioning for the camera in the latest frame. This pose, managed in an [`Earth`](/ar/reference/java/com/google/ar/core/Earth) object, contains the following information:\n\n- Location, expressed in latitude and longitude\n- Altitude\n- An orientation approximating the direction the user is facing in the EUS coordinate system with X+ pointing east, Y+ pointing up, and Z+ pointing south\n\nCheck the tracking state\n------------------------\n\nGeospatial values are only valid while [`Earth.TrackingState`](/ar/reference/java/com/google/ar/core/TrackingState) is [`TrackingState.TRACKING`](/ar/reference/java/com/google/ar/core/TrackingState#tracking). Make sure to wrap all Geospatial API calls in a [`Earth.TrackingState`](/ar/reference/java/com/google/ar/core/TrackingState) control block. \n\n### Java\n\n```java\nif (earth != null && earth.getTrackingState() == TrackingState.TRACKING) {\n GeospatialPose cameraGeospatialPose = earth.getCameraGeospatialPose();\n // cameraGeospatialPose contains geodetic location, rotation, and confidences values.\n}\n```\n\n### Kotlin\n\n```kotlin\nif (earth.trackingState == TrackingState.TRACKING) {\n val cameraGeospatialPose = earth.cameraGeospatialPose\n // cameraGeospatialPose contains geodetic location, rotation, and confidences values.\n}\n```\n\nIf [`Earth.TrackingState`](/ar/reference/java/com/google/ar/core/TrackingState) does not become [`TrackingState.TRACKING`](/ar/reference/java/com/google/ar/core/TrackingState#tracking), [`Earth.TrackingState`](/ar/reference/java/com/google/ar/core/TrackingState) may be [`TrackingState.PAUSED`](/ar/reference/java/com/google/ar/core/TrackingState#paused) or [`TrackingState.STOPPED`](/ar/reference/java/com/google/ar/core/TrackingState#stopped). If neither of these conditions are true, check [`Earth.Earthstate`](/ar/reference/java/com/google/ar/core/Earth.EarthState), which shows other error states that may keep the [`Earth`](/ar/reference/java/com/google/ar/core/Earth) object from tracking.\n\nAdjust the pose for accuracy\n----------------------------\n\nWhen the device is upright in the default orientation, the pitch (X+) and roll (Z+) angles tend to be precise due to a natural alignment with AR tracking. However, the yaw (Y+) angles can vary depending on VPS data availability and temporal conditions at the location. Your app may have to make adjustments for accuracy.\n\n[`GeospatialPose.getOrientationYawAccuracy()`](/ar/reference/java/com/google/ar/core/GeospatialPose#getOrientationYawAccuracy-) provides an accuracy estimate for the yaw (Y+) angles for a certain [`GeospatialPose`](/ar/reference/java/com/google/ar/core/GeospatialPose). The orientation yaw accuracy is a number that describes the radius, in degrees, of the 68th percentile confidence level around the yaw angles returned from [`GeospatialPose.getEastUpSouthQuaternion()`](/ar/reference/java/com/google/ar/core/GeospatialPose#getEastUpSouthQuaternion-). In other words, there is a 68% chance that the [`GeospatialPose`](/ar/reference/java/com/google/ar/core/GeospatialPose)'s true yaw angle is accurate.\n\nLarger values indicate lower accuracy. For example, if the estimated yaw angle is 60 degrees and the yaw accuracy is 10 degrees, then there is a 68% probability that the true yaw angle is between 50 and 70 degrees.\n\nWhat's next\n-----------\n\n- Place a [Geospatial anchor](/ar/develop/java/geospatial/anchors#wgs84_anchors) by obtaining the anchor's Geospatial pose."]]