繁体   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