[英]Android Kotlin ARCore GeoSpatial API Type Mismatch Error: Earth? but Earth is Expected
我正在嘗試使用 Android ARCore 和地圖為 Android SDK 構建一個地理空間 AR 應用程序。
但是,當我嘗試運行該應用程序時,出現錯誤“類型不匹配:推斷類型是 Earth?但 Earth 是預期的。”
此錯誤僅發生在 HelloGeoRenderer.kt 文件內的代碼行“activity.view.updateStatusText(earth, earth.cameraGeospatialPose)”中。
然而,當我注釋掉上面的代碼行時,代碼運行正常,map 出現在應用程序屏幕下方,正如預期的那樣,但 AR 錨點沒有出現。
誰能幫我發現問題?
提前致謝!
// Obtain Geospatial information and display it on the map.
val earth = session.earth
if (earth?.trackingState == TrackingState.TRACKING) {
// The Earth object may be used here.
val cameraGeospatialPose = earth.cameraGeospatialPose
activity.view.mapView?.updateMapPosition(
latitude = cameraGeospatialPose.latitude,
longitude = cameraGeospatialPose.longitude,
heading = cameraGeospatialPose.heading
)
}
activity.view.updateStatusText(earth, earth.cameraGeospatialPose)
在獲取var earth
之前,需要配置 session 以使用GeospatialMode.ENABLED
。 由於在未啟用地理空間時可以返回null
,因此返回類型是可為 null 的Earth?
而不是Earth
,這可能會導致類型不匹配錯誤。
要配置 session,您可以這樣寫:
session.configure(
config.apply {
geospatialMode = Config.GeospatialMode.ENABLED
}
)
在設置這樣的配置之前,重要的是檢查設備是否與地理空間 API 和 function 兼容:
if (session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED)) {...}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.