Google maps Google Map Lite模式moveCamera不调用SetOnCameraireListener
地图显示正确,然后在移动相机之前检查地图是否已完全加载。然后,地图显示边界定义的正确区域。但是在移动之后,SetOnCameraideListener从未像预期的那样被调用。下面是问题的代码Google maps Google Map Lite模式moveCamera不调用SetOnCameraireListener,google-maps,kotlin,android-maps-v2,Google Maps,Kotlin,Android Maps V2,地图显示正确,然后在移动相机之前检查地图是否已完全加载。然后,地图显示边界定义的正确区域。但是在移动之后,SetOnCameraideListener从未像预期的那样被调用。下面是问题的代码 map.setOnMapLoadedCallback(GoogleMap.OnMapLoadedCallback { Log.e(tag, "setOnMapLoadedCallback") //set camera bounds map.moveCamera(C
map.setOnMapLoadedCallback(GoogleMap.OnMapLoadedCallback {
Log.e(tag, "setOnMapLoadedCallback")
//set camera bounds
map.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 100))
})
map.setOnCameraIdleListener {
//create snapshot
Log.e(tag, "setOnCameraIdleListener")
}
我正在使用lite模式的地图,根据它看起来应该得到支持,但我找不到任何明确的
我会错过什么
更新:
下面是我如何在SDK中解决这个bug的
创建了定义为回调的val
private val snapshotReadyCallback : GoogleMap.SnapshotReadyCallback = GoogleMap.SnapshotReadyCallback {
SaveSnapshot(it)
}
“它”是地图的位图。您可以直接在回调中进行保存,但我调用了一个函数
在setOnMapLoadedCallback中,执行了以下操作
gmap?.setOnMapLoadedCallback {
gmap?.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 100))
//2 seconds lag to ensure camera has had time to move
//since camera move override doesnt work in setOnMapLoadedCallback
handler.postDelayed({ // Do something after 2s = 2000ms
gmap?.snapshot(snapshotReadyCallback)
}, 2000)
}
添加抓取快照的延迟可以让相机有足够的时间移动。然后,它将调用snapshotReadyCallback,然后调用执行实际保存的函数。看到同样的行为,您是否找到了解决方案?@GrantKamin我做了一个变通。我确实向谷歌提交了一个关于这个问题的bug,但它不见了。