Карты Google Android не загружают карту при использовании GoogleMap.AnimateCamera () - PullRequest
0 голосов
/ 04 октября 2019

Документ 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 : enter image description here

Карта при использовании moveCamera : enter image description here

Решено

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 () не может?

Ответы [ 2 ]

0 голосов
/ 04 октября 2019

это работает для меня

LatLng initialLocation = new LatLng(latitude, longitude);
gmap.animateCamera(CameraUpdateFactory.newLatLngZoom(initialLocation, 18.0f));

Я использую его для анимации карты с определенным местоположением с помощью LatLng, хотя я никогда не пробовал наклонять, хотя

0 голосов
/ 04 октября 2019
  1. Попробуйте изменить .builder(mMap.cameraPosition)... на .builder()...
  2. Убедитесь, что вы вызываете этот метод после onMapReady обратного вызова
...