我刚接触leafletjs。之前一直在使用cesiumjs,现在我们正在尝试使用leaflet。转换的主要原因是想看看性能上是否有巨大的差异。
在Cesium中,我有一个基本点的集合进行绘制。在使用leafletjs时,最有效的绘制140K个点的方法是使用标记还是创建许多小圆?
我也在考虑使用聚类插件 (http://leafletjs.com/2012/08/20/guest-post-markerclusterer-0-1-released.html),请分享任何关于性能方面的想法。
我刚接触leafletjs。之前一直在使用cesiumjs,现在我们正在尝试使用leaflet。转换的主要原因是想看看性能上是否有巨大的差异。
在Cesium中,我有一个基本点的集合进行绘制。在使用leafletjs时,最有效的绘制140K个点的方法是使用标记还是创建许多小圆?
我也在考虑使用聚类插件 (http://leafletjs.com/2012/08/20/guest-post-markerclusterer-0-1-released.html),请分享任何关于性能方面的想法。
您有两个常见的选择:
在基于Canvas的图层中显示您的点,例如使用Circle Markers,并强制将它们渲染到Canvas上而不是SVG(还可以参考Leaflet MaskCanvas插件)。即使在画布上,Circle Markers仍然会发出事件,因此您可以检测到“click”等。
使用聚合插件,例如您提到的Leaflet.markercluster插件。它可以处理您的140k个点,取决于客户端计算机的性能(请参阅https://github.com/Leaflet/Leaflet.markercluster#handling-lots-of-markers和演示http://leaflet.github.io/Leaflet.markercluster/example/marker-clustering-realworld.50000.html,其中包含50k个点,但请注意演示使用旧版的插件,而当前版本更快)。
试图在没有Canvas或聚合的情况下显示您的140k个点将肯定会导致浏览器崩溃。