【问题标题】:android google maps not loading the map when using GoogleMap.AnimateCamera()android google maps 使用 GoogleMap.AnimateCamera() 时未加载地图
【发布时间】:2019-10-04 05:26:06
【问题描述】:

谷歌地图文档

根据Google maps document,为了对地图应用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() 不能?

【问题讨论】:

  • 您是否在清单中添加了 gMaps API 密钥,它看起来像这样` `
  • 发布您的 manifest.xml 文件
  • @trinadhthatakula 是的,我做到了。这就是为什么 GoogleMap.moveCamera() 可以很好地加载地图的原因
  • @amin 清单中有很多东西。但与谷歌地图相关的只有

标签: android google-maps-android-api-2


【解决方案1】:

这对我有用

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

我用它通过 LatLng 将地图动画化到特定位置,但我从未尝试过倾斜

【讨论】:

  • 谢谢兄弟,但没用。我清除了应用程序捕获并重新启动应用程序。我只看到一个灰色的屏幕。除非我开始手动移动地图,否则地图不会加载。
【解决方案2】:
  1. 尝试将.builder(mMap.cameraPosition)...更改为.builder()...
  2. 确保在onMapReady回调之后调用此方法

【讨论】:

  • 感谢您的回答。我试过但没有用。是的,这个方法肯定只能在 onMapReady() 回调之后调用
猜你喜欢
  • 1970-01-01
  • 2017-04-10
  • 2013-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-01
  • 1970-01-01
相关资源
最近更新 更多