folium/leaflet 地图中有 600 万个标记

6 millions of markers in folium/leaflet map

通过MarkerCluster算法,可以将附近的标记聚类在一起,所以地图在视觉上是可以接受的。

然而,我发现传单地图的性能和响应随着其中标记的数量而降低。

我还是不明白,但我发现人们在谈论服务器端集群解决方案而不是客户端集群。

This durable module project 是在传单地图中使用此概念(服务器端集群)的大量标记的解决方案。

我的问题是:

单张地图是怎​​么做到的?
如何在 python at folium maps 中制作此解决方案?

服务器端集群可以通过 XHR 请求来完成。

最简单的方法是将您的地图划分为正方形,并让它在单一特征层之间切换,并使用 MAP.on('zoomend', function(e){}); 事件替换 geoJSON/JSON 层。

举个例子,如果jQuery可用,你可以在zoomend上做$.getJSON(SERVER_SIDE_URL, {VARIABLE: 'VALUE'}, function(data){});。这里匿名函数将携带响应数据。您可以使用此数据创建替代图层组或单个图层,同时跟踪并销毁其谓词。

服务器端需要访问完整的数据集,并且能够提供 JSON 抽象附近的单个特征,或 radius/square 半径内的一组特征占位符。

这是一个选项的摘要。或者,可能有市场就绪的解决方案。但是自己编写应该可以为这样一个简单的任务提供更有效的解决方案。

我找到了 leafletMapbox 的开源解决方案。

这是传单所有者创建的SuperCluster project。 它是 Server-Side Clustring 解决方案 node.js 和 Client-Side Clustring with MapBox.

解释了这些算法的概念here