Ottenere la posizione geospaziale della fotocamera del dispositivo

Dopo aver configurato le impostazioni dell'app per l'utilizzo dell'API Geospatial, puoi chiamare Earth.getCameraGeospatialPose() per ottenere un GeospatialPose che descriva il posizionamento geospaziale del dispositivo per la fotocamera nell'ultimo frame. Questa posa, gestita in un oggetto Earth, contiene le seguenti informazioni:

  • Posizione, espressa in latitudine e longitudine
  • Altitudine
  • Un orientamento approssimativo della direzione in cui si trova l'utente nel sistema di coordinate EUS con X+ rivolto verso est, Y+ rivolto verso l'alto e Z+ rivolto verso sud

Controllare lo stato di monitoraggio

I valori geospaziali sono validi solo quando Earth.TrackingState è TrackingState.TRACKING. Assicurati di racchiudere tutte le chiamate all'API geospaziale in un blocco di controllo 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.
}

Se Earth.TrackingState non diventa TrackingState.TRACKING, Earth.TrackingState potrebbe essere TrackingState.PAUSED o TrackingState.STOPPED. Se nessuna di queste condizioni è vera, controlla Earth.Earthstate, che mostra altri stati di errore che potrebbero impedire il monitoraggio dell'oggetto Earth.

Regola la posa per una maggiore precisione

Quando il dispositivo è in posizione verticale, con l'orientamento predefinito, gli angoli di inclinazione (X+) e rollio (Z+) tendono a essere precisi grazie a un allineamento naturale con il tracciamento AR. Tuttavia, gli angoli di yaw (Y+) possono variare a seconda della disponibilità dei dati VPS e delle condizioni temporali nella località. Potrebbe essere necessario apportare modifiche all'app per garantire l'accuratezza.

GeospatialPose.getOrientationYawAccuracy() fornisce una stima accurata degli angoli di scarto (Y+) per un determinato GeospatialPose. La precisione dell'orientamento dello scarto è un numero che descrive il raggio, in gradi, del livello di confidenza del 68° percentile intorno agli angoli di scarto restituiti da GeospatialPose.getEastUpSouthQuaternion(). In altre parole, esiste una probabilità del 68% che l'angolo di yaw reale di GeospatialPose sia preciso.

Valori più elevati indicano una minore accuratezza. Ad esempio, se l'angolo di yaw stimato è di 60 gradi e la precisione di yaw è di 10 gradi, esiste una probabilità del 68% che l'angolo di yaw reale sia compreso tra 50 e 70 gradi.

Passaggi successivi