如何在任何时候都不要使用视口传单折线?

时间:2015-07-09 19:58:20

标签: javascript svg leaflet polyline

每当我在传单地图上移动视图时,都会删除其中心不再在视图中的折线。我有一个具有大笔画大小(~500px)的折线,即使它的一部分应该是不可见的。拖动地图时也可以观察到同样的问题,在拖动结束之前不会重绘折线。示例如下所示。

The left part of the polylines is not drawn until the drag ends

我尝试为传单remove事件添加一个侦听器但是没有触发。我也试过覆盖折线的onRemove方法但是没有用。现在要解决这个问题,我让地图比屏幕更大,但这会导致一些减速。

我认为从地图中删除不可见的折线是一种性能特征。有谁知道这可以被禁用吗?

2 个答案:

答案 0 :(得分:1)

我需要设置L.Path.CLIP_PADDING

通过查看github repo上的已关闭问题找到。 https://github.com/Leaflet/Leaflet/issues/2814

同样在文档中:http://leafletjs.com/reference.html#path-clip_padding

“在地图视图周围扩展剪辑区域的大小(相对于其大小,例如0.5是每个方向上屏幕的一半)。较小的值意味着在拖动地图时您将看到剪切的路径末端,较大的值会降低绘图性能。“

答案 1 :(得分:1)

是的,正如你所说的折线,geoJSON只有在收到“dragend”事件后才会重绘,所以即使在拖动过程中我们也必须重绘,我们可以通过编写以下代码轻松实现

map.on('drag', () => {
  map.fitBounds(map.getBounds());
});

甚至 L.Path.CLIP_PADDING 都不适合我。但强行设定界限对我有用。 另请参阅demo here