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

将应用的设置配置为使用 Geospatial API 后,您就可以获取设备相机的 AREarthManager.CameraGeospatialPose。此姿势在 AREarthManager 对象中进行管理,包含以下信息:

  • 位置,以纬度和经度表示
  • 海拔高度
  • 在 EUS 坐标系中,大致相当于用户所朝向的方向,其中 X+ 指向东方,Y+ 指向上方,Z+ 指向南方

检查跟踪状态

仅当 AREarthManager.EarthTrackingStateTrackingState.Tracking 时,地理空间值才有效。请务必将所有 Geospatial API 调用封装在 AREarthManager.EarthTrackingState 控制块中。

var earthTrackingState = EarthManager.EarthTrackingState;
if (earthTrackingState == TrackingState.Tracking)
{
  // camera_geospatial_pose contains geodetic location, rotation, and
  // confidences values.
  var cameraGeospatialPose = EarthManager.CameraGeospatialPose;
}

如果 AREarthManager.EarthTrackingState 未变为 TrackingState.Tracking,则 AREarthManager.EarthTrackingState 可能为 TrackingState.LimitedTrackingState.None。如果这两种情况都不满足,请检查 TrackingState.EarthTrackingState,其中会显示可能导致 AREarthManager 对象无法跟踪的其他错误状态。

调整姿势以提高准确性

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

GeospatialPose.OrientationYawAccuracy 用于估算某个 AREarthManager.CameraGeospatialPose 的偏摆 (Y+) 角度的准确度。方向偏航精度是一个数字,用于描述 GeospatialPose.EunRotation 中偏摆角周围第 68 个百分位置信度的半径(以度为单位)。换句话说,AREarthManager.CameraGeospatialPose 的真实偏航角有 68% 的概率在 GeospatialPose.OrientationYawAccuracy 返回的度数范围内。

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

后续步骤