将应用设置配置为使用 Geospatial API 之后,您可以调用 Earth.getCameraGeospatialPose()
来获取 GeospatialPose
,以便描述设备在最新一帧中的相机地理空间定位。此姿势在 Earth
对象中管理,包含以下信息:
- 位置,以纬度和经度表示
- 海拔高度
- 在 EUS 坐标系中,近似用户所面向的方向的方向包括 X+ 指向东、Y+ 向上、Z+ 指向南
检查跟踪状态
仅当 Earth.TrackingState
为 TrackingState.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.PAUSED
或 TrackingState.STOPPED
。如果这两种情况都不满足,请检查 Earth.Earthstate
,其中会显示可能导致 Earth
对象无法跟踪的其他错误状态。
调整姿势以提高准确度
当设备在默认屏幕方向下处于竖直状态时,由于与 AR 跟踪自然对齐,倾斜度 (X+) 和旋转角度 (Z+) 往往很精确。但是,偏摆 (Y+) 角度可能因 VPS 数据可用性和位置的时间条件而异。您的应用可能需要进行调整,以确保准确性。
GeospatialPose.getOrientationYawAccuracy()
提供某个 GeospatialPose
的偏摆 (Y+) 角度的精确度估算值。方向偏摆精度是一个数字,用于描述 GeospatialPose.getEastUpSouthQuaternion()
返回的偏摆角度周围第 68 个百分位数置信度的半径(以度为单位)。换句话说,GeospatialPose
的真实偏航角有 68% 的概率是准确的。
值越大表示准确率越低。例如,如果估算的偏摆角度为 60 度,且偏摆准确度为 10 度,则真实偏摆角度介于 50 度和 70 度之间的概率为 68%。
后续步骤
- 通过获取锚点的地理空间姿势来放置地理空间锚点。