Android Google地图上缩放的行为不正确

时间:2013-10-03 07:51:10

标签: android google-maps

我在谷歌地图上遇到了一个奇怪的问题。

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

这是我的代码:

    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。

3 个答案:

答案 0 :(得分:6)

感谢gnuanu评论指点我:

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

解决方案是使用:

CameraUpdateFactory.newLatLngZoom()

而不是

CameraUpdateFactory.zoomTo()
CameraUpdateFactory.newLatLng()

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

答案 1 :(得分:0)

从您的问题中不清楚,在您执行上述代码的活动中。我假设你正在执行onCreate()函数的代码。在这种情况下,不要按“后退”按钮退出应用程序,而是尝试终止应用程序并再次启动它并检查它是否有效。

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

答案 2 :(得分:-1)

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