Документ Google Maps
В соответствии с документом Google maps , чтобы применить CameraUpdate к карте, мы можем либо мгновенно переместить камеру (используяGoogleMap.moveCamera (CameraUpdate)) или плавно анимировать камеру (с помощью GoogleMap.animateCamera (CameraUpdate)).
Что я сделал
Итак, я начал с помощью GoogleMap.moveCamera (CameraUpdate). Карта может быть загружена просто отлично. Однако, когда я использовал GoogleMap.animateCamera (CameraUpdate), карта не может быть загружена. То, что я видел, было просто серым экраном или картой размытия. Карта будет полностью загружена или станет ясной снова, если я не переместу ее вручную.
Может кто-нибудь сказать, пожалуйста, в чем проблема? Требуется ли что-то еще при работе с GoogleMap.animateCamera ()?
Обновлено : я только что обнаружил большую ошибку в своем коде и очень сожалею, что не описал ее достаточно четко. Я использовал GMap.animateCamera (), чтобы обновлять камеру при каждом изменении курса устройства (используется датчик вращения ...). Это происходит слишком быстро, поэтому cameraAnimation () никогда не сможет завершить свою работу. поэтому карта не может быть полностью загружена.
onDeviceHeadingChange(){
val cameraPosition = CameraPosition.builder(mMap.cameraPosition)
.target(myLatLng)
.bearing(myBearing)
.tilt(50f)
.build()
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
// the map will be loaded just fine with this method
// mMap.moveCamera(cameraUpdate)
// the problem appeared when I update camera with aniteCamera()
mMap.animateCamera(cameraUpdate, 500, null)
}
Карта при использовании animateCamera :
Карта при использовании moveCamera :
Решено
onDeviceHeadingChange(){
if(!cameraIsMoving){
cameraIsMoving = true
val cameraPosition = CameraPosition.builder(mMap.cameraPosition)
.target(myLatLng)
.bearing(myBearing)
.tilt(50f)
.build()
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
mMap.animateCamera(cameraUpdate, 500, object: GoogleMap.CancelableCallback{
override fun onFinish() {
cameraIsMoving = false
}
override fun onCancel() {
cameraIsMoving = false
}
})
}
}
Это приведет меня к новому вопросу ПочемуGoogleMap.moveCamera () может обрабатывать эти вызовы? но GoogleMap.animateCamera () не может?