android - ItemizedOverlay.draw() 的性能问题

标签 android android-mapview itemizedoverlay

我有一个类:

public class WaypointOverlay extends ItemizedOverlay<OverlayItem>

它覆盖了 ItemizedOverlaydraw() 方法。
在我的 Activity 中,我有一张包含许多叠加项的 map 以及一个列表。我从 traceviewer 输出和 logcat 注意到 MapView.onDraw() 被调用了很多次,即使 map 没有被触及。这导致了一个真正无响应的列表和 map (当我的 WaypointOverlay 类只是从这些 onDraw 调用返回时,一切都运行良好)

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

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

最佳答案

我想我可能已经解决了这个问题(至少对我来说是这样)。在我的应用程序中,用户可以离开 map 然后返回,所有这些都在同一 Activity 中进行。每次用户返回 map 时,我都会重新添加我创建的所有叠加层。这意味着 map 上有太多叠加层 - 我看不到它们,因为它们重叠了。调用 MapView.getOverlays().clear() 使 map 和列表的性能显着提高。

关于android - ItemizedOverlay.draw() 的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6085096/

相关文章:

java - 将数据添加到ListView后崩溃

android - 关于发布具有应用内购买的游戏所需的 Google Merchant 帐户的疑问

objective-c - 刷新 mkannotation 属性和刷新注释

java - 如何在OSM中获取点击的ItemizedIconOverlay的索引

android - 获取当前正在绘制的 OverlayItem

java - 检测用户手指触摸的大小

java - 使用自定义对象数组列表实例化 fragment 第二部分

google-maps - 安卓 : requires unavailable shared library com. google.android.maps;失败

java - Android 谷歌放置 API REQUEST_DENIED

android - 如何在 mapview 上固定项目的 onTap 区域?