在传单地图中添加多个圆圈时效果不佳

时间:2017-07-12 13:52:28

标签: performance leaflet

我在尝试向画布渲染图层添加大量点时使用Leaflet时出现问题。

我使用类似下面的代码创建+85.000点:

首先我用我的所有点加载一个四叉树,一个点是一个带有其他特定东西的类,但是关于传单的东西,我们有以下代码:

var myCanvasRenderer = L.canvas({ paneName });

var geojsonMarkerOptions = { fillColor: "#AFC5CA", color: "#000", weight: 1, opacity: 1, fillOpacity: 0.8, stroke: false, renderer: myCanvasRenderer, pane: paneName }

point.circle = L.circle(latlng, 0.5, myHandler.geojsonMarkerOptions);

然后将该点添加到四叉树中。 移动地图时,我处理事件以在视口内绘制点,绘制点本身,调用以下方法:

circle.addTo(myLayer);

我将绘图限制在20.000点。达到此限制时停止进程并使用console.Time

测量时间

使用circle.addTo调用,该过程大约需要80秒来绘制20.000点。 在评论该电话时,该过程大约需要8秒钟来抽取" 20.000分。 ("画"因为不是真的画了)

  • 必须绘制所有点,因此不能选择涉及聚类点的解决方案。
  • 我必须有一个绘制圆圈的处理程序,因为稍后在应用程序中我需要显示/隐藏一些点或改变它们的颜色

如何加快积分的绘制? 是否有类似于" bulkAdd"传单库中的方法?

提前感谢您的帮助

1 个答案:

答案 0 :(得分:1)

可能发生的事情是您的圈子实际上并未在指定的画布上绘制。

您可以使用浏览器DOM检查器进行检查。

在Leaflet 1.x.x中,Circle的半径指定为L.circle([50.5, 30.5], {radius: 200}).addTo(map); 选项,而不是第二个参数:

0.5

因此,在您的代码中,第二个参数myHandler.geojsonMarkerOptions无效,您的第三个参数(def main(): check = MinecraftQuery('10.0.10.8', 25565) # It calls the __init__() method and constructs an object/instance of the class named 'MinecraftQuery' # using the given arguments and associate it with the given identifier 'check' check.get_status() # Now, this invokes the get_status() method of the instance named 'check'. print check )也没有效果,导致您不使用画布。