如何停止自动重绘Android MapView?

时间:2012-08-09 16:56:44

标签: android android-mapview

我有一个基于Google MapView的应用程序,带有许多大型矢量叠加层。屏幕上一次最多可以有500个复杂的多边形。在我的手机(Android 2.3.4)上,无论是否需要,都会在短时间内自动触发MapView的重绘。

问题:
由于大的地图重绘时间,UI响应可能会很慢。例如,打开菜单可能需要大约一秒钟。任何对话框的反应都很差。

问题:
是否可以关闭MapView的自动重绘?或者其他任何想法如何改善UI响应?

* MapView.SetEnabled(false)没有这样做,MapView只能变得不可点击。 MapView.setWillNotDraw(true)给我留下了黑屏。

*据我所知,在Android 2.2上没有自动重绘(需要MapView.Invalidate()来查看任何更改)。也许它不仅是OS /库版本,还有硬件问题。

1 个答案:

答案 0 :(得分:1)

就我对MapView的了解而言,只有在拖动地图或放大/缩小时才会重绘地图,除非你调用map.postInvalidate()。现在回答你的问题:

“是否可以关闭MapView的自动重绘功能?”是。你将不得不重写MapView的onDraw()方法,因为它是每当绘制/重绘地图时调用的onDraw()方法,基本上,你需要有一个布尔控制变量,你可以使用它来改变是否整个应该绘制地图(默认绘图是通过使用super.onDraw()调用完成的)或者如果你只需要专门绘制一些覆盖图等。