Dopo aver configurato le impostazioni dell'app per l'utilizzo dell'API Geospaziale, puoi chiamare ArEarth_getCameraGeospatialPose
per ottenere un ArGeospatialPose
che descrive la posizione geospaziale del dispositivo della videocamera nell'ultimo frame. Questa posa, gestita in un oggetto ArEarth
, contiene le seguenti informazioni:
- Posizione, espressa in latitudine e longitudine
- Altitudine
- Un orientamento che si avvicina alla direzione in cui l'utente è rivolto nel sistema di coordinate EUS con X+ rivolto a est, Y+ rivolto verso l'alto e Z+ rivolto a sud
Controllare lo stato del monitoraggio
I valori geospaziali sono validi solo quando ArEarth.ArTrackingState
è ArTrackingState.AR_TRACKING_STATE_TRACKING
e ArEarth.ArEarthState
è AR_EARTH_STATE_ENABLED
. Assicurati di racchiudere tutte le chiamate all'API geospaziale in un blocco di controllo ArEarth.ArTrackingState
.
if (ar_earth != NULL) { ArTrackingState earth_tracking_state = AR_TRACKING_STATE_STOPPED; ArTrackable_getTrackingState(ar_session, (ArTrackable*)ar_earth, &earth_tracking_state); if (earth_tracking_state == AR_TRACKING_STATE_TRACKING) { ArGeospatialPose* camera_geospatial_pose = NULL; ArGeospatialPose_create(ar_session, &camera_geospatial_pose); ArEarth_getCameraGeospatialPose(ar_session, ar_earth, camera_geospatial_pose); // camera_geospatial_pose contains geodetic location, rotation, and // confidences values. ArGeospatialPose_destroy(camera_geospatial_pose); } }
Se ArEarth.ArTrackingState
non diventa ArTrackingState.AR_TRACKING_STATE_TRACKING
, ArEarth.ArTrackingState
potrebbe essere AR_TRACKING_STATE_PAUSED
o AR_TRACKING_STATE_STOPPED
. Se nessuna di queste condizioni è vera, controlla ArEarth.ArEarthState
, che mostra altri stati di errore che potrebbero impedire il monitoraggio dell'oggetto ArEarth
.
Regola la posa per una maggiore precisione
Quando il dispositivo è in posizione verticale nell'orientamento predefinito, gli angoli di inclinazione (X+) e di roll (Z+) tendono ad essere precisi a causa di un allineamento naturale con il rilevamento AR. Tuttavia, gli angoli di scarto (Y+) possono variare a seconda della disponibilità dei dati VPS e delle condizioni temporali della località. L'app potrebbe dover apportare modifiche per garantire l'accuratezza.
ArGeospatialPose_getOrientationYawAccuracy()
fornisce una stima accurata degli angoli di scarto (Y+) per un determinato ArGeospatialPose
. 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 ArGeospatialPose_getEastUpSouthQuaternion()
. In altre parole, esiste una probabilità del 68% che l'angolo di scarto reale di ArGeospatialPose
sia accurato.
Valori più alti indicano una precisione minore. 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
- Posiziona un ancora geospaziale ottenendo la sua posa geospaziale.