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