Sprawdź pozycję aparatu urządzenia w orientacji geoprzestrzennej

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 kamery w najnowszym ujęciu. Ta pozycja zarządzana w obiekcie Earth zawiera te informacje:

  • lokalizacja wyrażona w szerokości i długości geograficznej;
  • Wysokość
  • Orientacja przybliżona do kierunku, w którym skierowany jest użytkownik w układzie współrzędnych UES – X+ wskazuje wschód, Y+ jest skierowany w górę, a Z+ – południe

Sprawdzanie stanu śledzenia

Wartości geoprzestrzenne są prawidłowe tylko wtedy, gdy Earth.TrackingState to 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 zmieni się na TrackingState.TRACKING, Earth.TrackingState może mieć wartość TrackingState.PAUSED lub TrackingState.STOPPED. Jeśli żaden z tych warunków nie jest spełniony, sprawdź Earth.Earthstate, aby zobaczyć 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 odchylenia (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 oszacowanie dokładności kątów odchylenia (Y+) dla określonych elementów 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(). Oznacza to, że istnieje 68% szansy na to, że rzeczywiste odchylenie obiektu GeospatialPose jest dokładne.

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?