1

我有一堂课:

public class WaypointOverlay extends ItemizedOverlay<OverlayItem>

它覆盖draw()ItemizedOverlay.
在我的活动中,我有一个包含许多叠加项目的地图以及一个列表。我从 traceviewer 输出和 logcat 中注意到,MapView.onDraw()即使地图没有被触及,它也会被多次调用。这导致了一个非常无响应的列表和地图(当我的WaypointOverlay班级只是从这些onDraw调用中返回时,一切都运行良好)

我怎样才能让onDraw电话发生的频率降低 - 理想情况下只有当MapView更改跨越时?我尝试在onDraw中检查MapViewlat/lon 跨度是否与上次onDraw调用时相同,并且仅在两者不同时才绘制。这导致OverlayItems仅在地图平移或缩放时出现。

关于提高性能的任何想法?

4

1 回答 1

1

我想我可能已经解决了这个问题(至少就我而言)。在我的应用程序中,用户可以离开地图然后返回地图,所有这些都在同一个活动中。每次用户返回地图时,我都会重新添加我创建的所有叠加层。这意味着地图上有太多的叠加层——我看不到它们,因为它们重叠了。调用 MapView.getOverlays().clear() 使地图和列表的性能大大提高。

于 2011-05-22T13:18:21.127 回答