android google maps在使用GoogleMap.AnimateCamera()时未加载地图

android google maps在使用GoogleMap.AnimateCamera()时未加载地图,android,google-maps-android-api-2,Android,Google Maps Android Api 2,谷歌地图文档 根据,为了将CameraUpdate应用于地图,我们可以立即移动相机(使用GoogleMap.moveCamera(CameraUpdate)) 或者(通过使用GoogleMap.animateCamera(CameraUpdate))平滑地设置相机动画 我所做的 onDeviceHeadingChange(){ if(!cameraIsMoving){ cameraIsMoving = true val cameraPosition = Camera

谷歌地图文档

根据,为了将CameraUpdate应用于地图,我们可以立即移动相机(使用GoogleMap.moveCamera(CameraUpdate)) 或者(通过使用GoogleMap.animateCamera(CameraUpdate))平滑地设置相机动画

我所做的

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(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()不能吗?

  • 尝试将
    .builder(mMap.cameraPosition)…
    更改为
    .builder()…
  • 确保在
    onMapReady
    callback之后调用此方法
  • 这对我有用

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

    我用它来用LatLng将地图动画化到一个特定的位置,我从来没有尝试过倾斜,不过

    你在清单中添加了你的gMaps API键了吗它看起来像这样`` post your manifest.xmlfile@trinadhthatakula是的。这就是为什么GoogleMap.moveCamera()可以直接加载地图fine@amin舱单上有很多东西。但与谷歌地图相关的只是谢谢你的回答。我试过了,但没有成功。是的,可以肯定的是,这个方法只能在onMapReady()callback之后调用。谢谢兄弟,但它不起作用。我清除了应用程序捕获并重新启动应用程序。我只看到一个灰色的屏幕。除非我开始手动移动地图,否则地图不会加载。