【问题标题】:osmdroid trying to display many polygons overlayosmdroid 试图显示许多多边形叠加
【发布时间】:2014-06-11 04:46:12
【问题描述】:

我需要在地图上叠加许多(可点击)多边形(超过 5000 个),因此普通多边形叠加的性能很慢。

我的想法是创建一个自定义位图叠加,在位图画布上仅绘制当前边界坐标内的多边形,忽略外部多边形的所有绘制。

此外,出于性能原因,我只会在用户完成缩放或平移时重绘叠加层,而不是在此操作期间。

有人可以帮我指点吗?

谢谢。

【问题讨论】:

  • 你找到合适的解决方案了吗?

标签: android performance bitmap overlay osmdroid


【解决方案1】:

在您的情况下,当许多多边形完全位于视图框之外时,边界框测试是一个很好的解决方案。

您可以继承 Polygon,添加边界框属性,并覆盖 draw 方法以首先测试此边界框是否完全在视图框之外。

无需在位图画布上绘图。

现在,如果用户缩小,他将在视图框内拥有所有多边形:回到最初的问题......解决方案可能是处理细节层次。也许使用 DouglasPeucker 减速器(在 OSMBonusPack 实用程序中可用)。

【讨论】:

  • 使用 DouglasPeucker 可能是一个很好的解决方案,但是当我需要绘制所有 5000 个多边形时,我认为在每个多边形上运行 DouglasPeucker 减速器会比简单地绘制它们要慢。也许解决方案是将所有多边形的不同分辨率版本保存在内存中?
  • 是的,在绘图中使用减速器比仅仅绘图更糟糕。解决方案应该是在 Polygon 构造期间执行此操作(作为 setPoints 中的后操作)。并将各个级别保存在内存中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-26
相关资源
最近更新 更多