【问题标题】:Large amount of dynamic data points with leaflet or openlayers带有传单或开放层的大量动态数据点
【发布时间】:2017-09-12 12:35:25
【问题描述】:

我想实现一个包含大量数据的地图,例如 https://openlayers.org/en/latest/examples/geojson.html 要么 http://leafletjs.com/examples/quick-start/

当以 100% 缩小时,地图总共需要显示大约 50000 个标记或圆圈,这些标记或圆圈会动态更新(每 1-5 分钟)。根据用户设置,圆圈/标记可能有不同的颜色等。

放大时,要求显示大约 1000 张小图像(在以前的圆圈/标记处)。

如何处理地图中如此大量的动态数据?例如,如果我在 Leaflet 中使用小圆圈,我可以看到它在放大和缩小时处理了超过 1000 个圆圈而没有更大的问题,但是浏览器开始遇到超过 ~5000 个的问题,这可能是预期的,因为浏览器需要处理很多的数据点。我希望 OpenLayers 也有同样的问题。

有什么想法吗?

【问题讨论】:

  • 这不是完全相同的问题,但它是完全相同的领域“Leaflet 和 OpenLayers 之间的矢量性能比较”。不是重复的,但它可以向您展示 Leaflet“似乎”在更大的数据中更快:stackoverflow.com/questions/38997746/…

标签: leaflet openlayers-3


【解决方案1】:

您需要使用带有L.canvas 的画布渲染器。您可以将地图选项 preferCanvas 设置为 true 或使用 L.canvas 创建渲染器并使用 renderer 选项将其绑定到要素图层。所以它会是这样的:

L.geoJson(null,{renderer:L.canvas()});

另外我建议你在部分中添加特征,即使渲染器可以处理这么多的数据,一次渲染它仍然是一个很长的操作。您可以拆分数据并改用timeout

如果您需要一些自定义设计点,您还可以使用新的功能类型扩展此类。

使用这种技术,我能够无延迟地渲染超过 60000 个标记。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 2016-02-04
    相关资源
    最近更新 更多