Я пытаюсь создать приложение Geospatial AR с помощью Android ARCore и Maps for Android SDK.
Однако, когда я пытаюсь запустить приложение, оно выдает ошибку: «Несоответствие типов: предполагаемый тип — Земля? Но ожидалась Земля».
Эта ошибка возникает только в строке кода «activity.view.updateStatusText(earth, earth.cameraGeospatialPose)» внутри файла HelloGeoRenderer.kt.
Однако, когда я комментирую приведенную выше строку кода, код работает нормально, карта появляется под экраном приложения, как и ожидалось, но якорь 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 необходимо настроить сеанс на использование GeospatialMode.ENABLED. Поскольку можно вернуть null, когда функция Geospatial не включена, тип возвращаемого значения — Earth?, допускающий значение NULL, вместо Earth, что может вызвать ошибку несоответствия типов.
Чтобы настроить сеанс, вы можете написать:
session.configure(
config.apply {
geospatialMode = Config.GeospatialMode.ENABLED
}
)
Перед настройкой такой конфигурации важно проверить, совместимо ли устройство с Geospatial API с помощью функции:
if (session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED)) {...}