5

我对适用于 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。

4

3 回答 3

6

感谢 gnunu 评论指出我:

如何在 Google Maps Android API v2 中直接将相机移动到当前位置?

解决方案是使用:

CameraUpdateFactory.newLatLngZoom()

代替

CameraUpdateFactory.zoomTo()
CameraUpdateFactory.newLatLng()

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

于 2013-10-03T08:40:50.630 回答
0

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

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

于 2013-10-03T08:09:01.957 回答
-1

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

于 2013-10-03T08:01:07.737 回答