Geospatial API 結合 VPS 和 GPS 資料,產生高精確度的地理空間轉換作業。只要裝置能夠判斷自身位置,這個 API 就能在任何地方使用:
- 在 GPS 精確度較低的區域 (例如室內空間和擁擠的都會環境),API 會依靠 VPS 涵蓋範圍產生高精確度的轉換。
- 在沒有或幾乎沒有上方遮蔽物的戶外環境中,Geospatial API 可能可以使用可用的 GPS 位置資料,產生精確度極高的地理空間轉換。
你可以在 AR 工作階段開始前,在特定水平位置決定 VPS 可用性,然後利用這個位置打造更具體的體驗,例如顯示「進入 AR」模式按鈕。
啟用 ARCore API
應用程式必須啟用 ARCore API,才能檢查 VPS 是否可用。
檢查應用程式中的 VPS 可用性
Geospatial API 可用於裝置能夠判斷其位置的任何位置。如果 AR 體驗取決於 VPS 涵蓋範圍,您可以使用 GARSession#checkVPSAvailabilityAtCoordinate:completionHandler:
取得 GARVPSAvailabilityFuture
,這是一個非同步工作,可檢查特定水平位置的 VPS 可用性。取得 GARVPSAvailabilityFuture
後,您可以透過輪詢或回呼取得結果。
對結果進行意見調查
使用 GARFuture.state
取得 Future
的狀態。狀態共有三種:
GARFutureStatePending
:作業尚未完成,因此無法取得任何結果。GARFutureStateCancelled
:GARFuture#cancel
已取消作業。系統不會呼叫任何已註冊的回呼。GARFutureStateDone
:作業已完成。使用GARVPSAvailabilityFuture.result
取得結果。
您可以繼續檢查 GARFuture.state
,直到工作完成為止。
透過回呼取得結果
您也可以透過回呼取得 Future
的結果。使用 GARSession#checkVPSAvailabilityAtCoordinate:completionHandler:
並提供 completionHandler
。Future
狀態變成 GARFutureStateDone
後,系統就會在主執行緒上呼叫這個 completionHandler
。
取消Future
使用 GARFuture#cancel
嘗試取消 Future
。基於執行緒平行處理的關係,取消嘗試可能並未成功。
如果這次嘗試成功,GARFuture#cancel
會傳回 YES
,否則會傳回 NO
。
在沒有 VPS 涵蓋範圍的情況下使用 Geospatial API
Geospatial API 也可用於沒有 VPS 涵蓋範圍的區域中。在沒有或幾乎沒有上方遮蔽物的室外環境中,GPS 可能就足以產生高精確度的姿勢。
後續步驟
- 取得裝置相機的地理空間姿勢,判斷使用者裝置在真實世界中的確切位置。