デバイスのカメラの地理空間ポーズを取得する

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.TrackingStateTrackingState.TRACKING にならない場合は、Earth.TrackingStateTrackingState.PAUSED または TrackingState.STOPPED になる場合があります。上記の条件のどちらも true でない場合は、Earth.Earthstate を確認します。これにより、Earth オブジェクトをトラッキングできない可能性のある他のエラー状態が表示されます。

ポーズを調整して精度を高める

デバイスをデフォルトの向きで正面を向けた状態では、AR トラッキングと自然に調整されるため、ピッチ(X+)とロール(Z+)の角度は正確になります。ただし、ヨー(Y+)角度は、VPS データの可用性と場所の時間的条件によって変わる可能性があります。精度を高めるために、アプリによる調整が必要になる場合があります。

GeospatialPose.getOrientationYawAccuracy() は、特定の GeospatialPose のヨー(Y+)角度の精度推定値を提供します。向きのヨーの精度は、GeospatialPose.getEastUpSouthQuaternion() から返されたヨー角度の周囲の 68 パーセンタイル信頼区間の半径(度)を表す数値です。つまり、GeospatialPose の真のヨー角が正確である確率は 68% です。

値が大きいほど精度が低いことを示します。例えば、推定ヨー角が 60 度でヨー精度が 10 度の場合、真のヨー角が 50 度と 70 度の間である確率は 68% です。

次のステップ