获取设备相机的地理空间姿势

将应用的设置配置为使用 Geospatial API 后,您可以调用 Earth.getCameraGeospatialPose() 来获取 GeospatialPose,该值描述了设备在最新帧中相机的地理空间定位。此姿势在 Earth 对象中进行管理,包含以下信息:

  • 位置(以纬度和经度表示)
  • 海拔高度
  • 在 EUS 坐标系中,近似用户所面向的方向的方向包括 X+ 指向东、Y+ 向上、Z+ 指向南

检查跟踪状态

地理空间值仅在 Earth.TrackingStateTrackingState.TRACKING 时有效。请务必将所有 Geospatial API 调用封装在 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.
}

如果 Earth.TrackingState 未变为 TrackingState.TRACKING,则 Earth.TrackingState 可能是 TrackingState.PAUSEDTrackingState.STOPPED。如果这两种情况都不满足,请检查 Earth.Earthstate,其中会显示可能导致 Earth 对象无法跟踪的其他错误状态。

调整姿势以提高准确性

当设备处于默认屏幕方向的竖屏状态时,由于与 AR 跟踪自然对齐,俯仰角 (X+) 和滚动角 (Z+) 通常是精确的。不过,偏航角 (Y+) 可能会因 VPS 数据可用性和相应位置的时间条件而异。您的应用可能需要进行调整以提高准确性。

GeospatialPose.getOrientationYawAccuracy() 会为特定 GeospatialPose 的偏航角 (Y+) 提供精度估算值。方向偏摆精度是一个数字,用于描述 GeospatialPose.getEastUpSouthQuaternion() 返回的偏摆角度周围第 68 个百分位数置信度的半径(以度为单位)。换句话说,GeospatialPose 的真实偏航角有 68% 的概率是准确的。

值越大,准确性越低。例如,如果估算偏摆角为 60 度,偏摆精度为 10 度,则真实偏摆角介于 50 度和 70 度之间的概率为 68%。

后续步骤