Android应用程序的地图标记直到屏幕被触摸才出现

5

我遇到了一个应用问题。第一个出现的屏幕是一张地图,显示基于从我们的服务器加载的XML文件定位的标记。

有时应用程序按预期加载。其他时候,地图会加载,但在触摸屏幕之前不会显示任何标记。

有什么想法为什么会发生这种情况,以及如何解决这个问题?


为什么我的问题被其他人编辑了? - Chris
也许只需要调整标签或修复拼写错误等小问题,那些在SO上帮助过一段时间的人都有这样的能力。 - CommonsWare
4个回答

6
有时应用程序能够正常加载,但其他时候地图会加载,但是屏幕上没有出现任何标记,直到您触摸屏幕。如果我要猜测的话,这可能是一个时间问题--有时候,您的服务器响应足够快,以至于标记在初始地图渲染中被捕获,有时则不行。我不知道您如何实现服务器获取和标记填充,但是在准备好标记后,请在您使用的ItemizedOverlay上调用populate(),然后如果需要,在MapView上调用invalidate()。

2

在我的一个项目中,我遇到了类似的问题。覆盖层在我的测试手机(三星G5)上可以正确绘制,但是在模拟器上,只有在我执行某些操作(如屏幕触摸)后,才会出现覆盖层。后来我在Nexus One上测试了同样的项目,行为与模拟器上相同。

如CommonsWare所提到的,一旦Overlay被填充,我现在通过在mapview上调用invalidate()来强制重绘MapView。


1

地图上有多少个针脚?如果有很多针脚,请在针脚准备好后仅使用一次populate,否则会花费时间。每个populate语句都需要很长时间,因此请仅使用一次populate。


0
另一种解决方法是添加一个GoogleMap.OnMapLoadedCallBack()来初始化您的显示。然后时间问题就完全消失了。

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