簡體   English   中英

Android Kotlin ARCore GeoSpatial API 類型不匹配錯誤:地球? 但地球是預期的

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM