Получите геопространственную позу камеры устройства.

После того как вы настроили параметры своего приложения для использования Geospatial API, вы можете вызвать Earth.getCameraGeospatialPose() чтобы получить GeospatialPose , который описывает геопространственное положение устройства для камеры в последнем кадре. Эта поза, управляемая в объекте Earth , содержит следующую информацию:

  • Местоположение, выраженное в широте и долготе
  • Высота
  • Ориентация, приблизительно равная направлению, в котором смотрит пользователь в системе координат EUS, где X+ указывает на восток, Y+ указывает вверх, а Z+ указывает на юг.

Проверьте состояние отслеживания

Геопространственные значения действительны только в том случае, если Earth.TrackingState имеет значение TrackingState.TRACKING . Обязательно оберните все вызовы Geospatial API в блок управления Earth.TrackingState .

Ява

if (earth != null && earth.getTrackingState() == TrackingState.TRACKING) {
  GeospatialPose cameraGeospatialPose = earth.getCameraGeospatialPose();
  // cameraGeospatialPose contains geodetic location, rotation, and confidences values.
}

Котлин

if (earth.trackingState == TrackingState.TRACKING) {
  val cameraGeospatialPose = earth.cameraGeospatialPose
  // cameraGeospatialPose contains geodetic location, rotation, and confidences values.
}

Если Earth.TrackingState не становится TrackingState.TRACKING , Earth.TrackingState может быть TrackingState.PAUSED или TrackingState.STOPPED . Если ни одно из этих условий не верно, проверьте Earth.Earthstate , который показывает другие состояния ошибок, которые могут препятствовать отслеживанию объекта Earth .

Отрегулируйте позу для точности

Когда устройство находится в вертикальном положении в ориентации по умолчанию, углы наклона (X+) и крена (Z+) имеют тенденцию быть точными благодаря естественному выравниванию с отслеживанием AR. Однако углы отклонения (Y+) могут варьироваться в зависимости от доступности данных VPS и временных условий в месте расположения. Возможно, вашему приложению придется внести коррективы для обеспечения точности.

GeospatialPose.getOrientationYawAccuracy() предоставляет оценку точности углов отклонения (Y+) для определенного GeospatialPose . Точность отклонения от курса ориентации — это число, которое описывает радиус в градусах уровня достоверности 68-го процентиля вокруг углов отклонения от курса, возвращаемых из GeospatialPose.getEastUpSouthQuaternion() . Другими словами, существует 68% вероятность того, что истинный угол отклонения GeospatialPose является точным.

Большие значения указывают на меньшую точность. Например, если предполагаемый угол отклонения от курса составляет 60 градусов, а точность отклонения от курса составляет 10 градусов, то существует 68% вероятность того, что истинный угол отклонения от курса составляет от 50 до 70 градусов.

Что дальше