Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 华为地图和位置工具包-LocationCallback内调用getMapAsync()时出现错误_Android_Kotlin_Maps_Huawei Mobile Services_Huawei Developers - Fatal编程技术网

Android 华为地图和位置工具包-LocationCallback内调用getMapAsync()时出现错误

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突然触发并显示地图,好像没有问

当我在片段的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,它可以监听如果我有地图和当前位置,那么我会将地图动画化到我的当前位置