安卓谷歌地图缩放的错误行为

5

我在使用安卓版的谷歌地图时遇到了一个奇怪的问题。

所有功能正常,但当用户启动地图活动时,我想将相机缩放并定位到特定位置。

这是我的代码:

    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个回答

6

0

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

或者,如果你需要地图每次启动活动时都缩放,将代码移动到你的活动的onResume()函数中。


是的,那段代码在onCreate()的末尾,我已经说过杀死应用程序并重新启动不起作用了,我已经将该代码移动到onResume()中,但仍然无法正常工作。 - Nanoc
1
类似的问题和代码示例在这里,可以试一试:https://dev59.com/V2Yr5IYBdhLWcg3wVY3J#13905821 - gnuanu
解决方案是使用newLatLngZoom()而不是同时使用newLatLng()和zoomTo(),也许newLatLng会改变缩放级别,我不知道,现在它正常工作了。 - Nanoc

-1
你应该将操作地图的代码(任何操作地图的代码)移动到activity的onResume()方法中,这样它就可以正常工作了。

已经转移到onResume(),但仍在做同样的事情。 - Nanoc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接