在Android中,缓存地图视图上绘制的内容

4
我正在开发一款校园地图应用程序,使用MapView显示校园;然后使用geopoints在MapView上绘制校园建筑的轮廓,使用扩展Overlay类的draw方法。有大约50-60幢建筑物被绘制,导致绘制方法不断重复,地图非常卡顿。
我已经研究了我的问题,并发现一些人提到在画布上绘制建筑物,但我没有找到任何好的示例或关于如何实施这一点的信息。有人能告诉我如何减少地图的卡顿吗? 地图看起来非常好,但卡顿使其无法发挥作用。
谢谢!

每次你移动地图时,它都会重新绘制你所参考的50-60个建筑物吗? - JQCorreia
我相信是这样的;当你改变缩放级别时也是如此。 - RyanG
你可能想在这里查看源代码示例:https://dev59.com/dnI95IYBdhLWcg3wvgl9 - Bachi
1个回答

2

如果您已将所有点组织成多边形,则可以在画布上绘制多边形,然后在覆盖层上绘制它。我认为这样会更快。

此外,您始终可以计算下一位置需要重新绘制建筑物的哪个部分,只需更改该部分画布即可。

如果您从先前的位置移动了(X,Y)像素,请将现有画布移动到新位置,然后只绘制出现在地图上的新事物。

当然,这不是最优解决方案,因为这种缓存方式无法与缩放配合使用。

希望它在某种程度上有所帮助! JQCorreia


我已经实现了这样一个功能,当地图缩放到一定程度且屏幕上只有少数建筑物时,它只会绘制这些建筑物。这大大减少了延迟,但如果你缩小地图并查看整个校园,仍然会有延迟。我还没有尝试在画布上绘制,但一旦我能让它工作起来,我会看看它是否有所帮助。 - RyanG
它起作用了吗?现在我很好奇,因为我也要做一个类似的实现,非常希望得到这些信息。提前感谢。 - JQCorreia

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