Android 华为地图和位置工具包-LocationCallback内调用getMapAsync()时出现错误
当我在片段的onViewCreated()上调用getMapAsync()时,OnMapReady回调将触发并在屏幕上显示映射 但是我需要在LocationCallBack中调用getMapAsync,因为在显示地图之前我需要当前位置 奇怪的是,在locationCallback中调用getMapAsync()时,当第一次使用huawei maps输入片段时,OnMaReady回调没有触发。但当我导航到另一个片段,然后使用华为地图返回到该片段时,onMapReady突然触发并显示地图,好像没有问题一样 有人经历过这个错误吗?它总是在第一次使用华为地图输入片段时发生 我的位置回调是这样的:Android 华为地图和位置工具包-LocationCallback内调用getMapAsync()时出现错误,android,kotlin,maps,huawei-mobile-services,huawei-developers,Android,Kotlin,Maps,Huawei Mobile Services,Huawei Developers,当我在片段的onViewCreated()上调用getMapAsync()时,OnMapReady回调将触发并在屏幕上显示映射 但是我需要在LocationCallBack中调用getMapAsync,因为在显示地图之前我需要当前位置 奇怪的是,在locationCallback中调用getMapAsync()时,当第一次使用huawei maps输入片段时,OnMaReady回调没有触发。但当我导航到另一个片段,然后使用华为地图返回到该片段时,onMapReady突然触发并显示地图,好像没有问
private var locationRequest: LocationRequest? = null
private var locationCallback: LocationCallback? = null
locationRequest
?: LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY)
.setInterval(30000)
.setFastestInterval(10000)
.setSmallestDisplacement(250.toFloat())
.also {
locationRequest = it }
locationCallback
?: object :
LocationCallback() {
override fun onLocationResult(
locationResult: LocationResult?
) {
locationResult
?: return
locationResult.lastLocation
?: return
currentLocation = LatLng(
locationResult.lastLocation.latitude, locationResult.lastLocation.longitude
)
// getMapAsync only if the map isn't initialized yet
if (huaweiMap == null && this@SampleMapsFragment.isAdded) {
mSupportMapFragment?.getMapAsync(this@SampleMapsFragment)
}
}
override fun onLocationAvailability(
locationAvailability: LocationAvailability?
) {
}
}.also {
locationCallback = it }
locationClient
?: LocationServices.getFusedLocationProviderClient(requireActivity())
.also {
locationClient = it }
那么我有这个,
private var locationClient: FusedLocationProviderClient? = null
locationClient?.requestLocationUpdates(locationRequest, locationCallback, null)
()应在以下情况下初始化。这是因为回调期间不允许初始化。如果要获取当前位置,然后显示地图,建议您在设置地图时隐藏地图
是否真正调用了
getmapsync
?可能您有locationResult
或locationResult.lastLocation
null
并且在调用getMapAsync
之前返回?是的,我添加了一个断点和一个日志,并且在locationCallback内部调用getMapAsync。谢谢!我按照你说的做了,修正了这个错误。我将getMapAsync调用移到LocationCallback之外。现在,我在onViewCreated()上调用getMapsAsync,并将LocationCallback调用放在onMapsReady回调中。基本上,我首先初始化了映射,并在映射初始化后调用locationcallback请求。我有一个livedata,它可以监听如果我有地图和当前位置,那么我会将地图动画化到我的当前位置