【问题标题】:Incorrect behaviour with zoom on Android Google mapsAndroid Google 地图上的缩放行为不正确
【发布时间】:2013-10-03 07:51:09
【问题描述】:

我在使用 Android 版 Google 地图时遇到了一个奇怪的问题。

一切正常,但是当用户使用地图开始活动时,我想放大并将相机定位在指定位置。

这是我的代码:

    LatLng l = new LatLng(40.446951,-3.693295);
    defaultPos = mapa.addMarker(new MarkerOptions().position(new LatLng(l.latitude, l.longitude)).icon(BitmapDescriptorFactory.defaultMarker((float) 250.0)));
    Log.d("mappoi","zoom to");
    mapa.animateCamera(CameraUpdateFactory.zoomTo(17.0f));
    mapa.animateCamera(CameraUpdateFactory.newLatLng(l));

所以,如您所见,我创建了一个新的 LatLng 对象并使用它在地图上创建一个标记,然后我想将相机置于该位置并放大。

我不知道为什么,但是缩放仅在第一次执行时起作用,所以当我全新安装我的应用程序时它工作正常,但如果我返回并重新启动活动,它不会进行任何缩放并保持默认缩放级别,即使我关闭并重新启动我的应用程序它也不再工作,只有当我卸载并重新安装它才能再次工作,但只有一次。

我无法想象出了什么问题,如果第一次有效,为什么下次不行?

感谢您的帮助。

编辑:当我按下返回按钮时,我的活动被杀死,所以每次都会调用 onCreate。

【问题讨论】:

    标签: android google-maps


    【解决方案1】:

    感谢 gnunu 评论指点我:

    How to directly move camera to current location in Google Maps Android API v2?

    解决方案是使用:

    CameraUpdateFactory.newLatLngZoom()
    

    而不是

    CameraUpdateFactory.zoomTo()
    CameraUpdateFactory.newLatLng()
    

    也许 newLatLng 正在改变缩放级别。

    【讨论】:

      【解决方案2】:

      您的问题并不清楚,在您执行上述代码的活动中。我假设您正在执行来自 onCreate() 函数的代码。在这种情况下,不要按“返回”按钮退出应用程序,而是尝试杀死应用程序并再次启动它并检查它是否工作。

      或者如果您需要在每次启动活动时放大地图,请将代码移至活动的onResume() 函数。

      【讨论】:

      • 是的,该代码位于 onCreate() 的末尾,我说过杀死应用程序并重新启动不起作用,我已将该代码移至 onResume() 并且仍然无法正常工作。
      • 与代码示例类似的问题在这里,试一试stackoverflow.com/a/13905821/1230782
      • 解决方案是使用 newLatLngZoom() 而不是 newLatLng() 和 zoomTo() 也许 newLatLng 正在改变缩放等级,我不知道,它现在工作正常。
      【解决方案3】:

      您应该将您的代码(任何操作地图的代码)移动到活动的 onResume() 方法。 那么它会正常工作。

      【讨论】:

      • 移到 onResume(),还是一样。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-19
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多