一切正常,但是当用户使用地图开始活动时,我想放大并将相机放在指定的位置。
这是我的代码:
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。
答案 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()活动方法。 然后它会正常工作。