【问题标题】:How to keep out of viewport leaflet polylines rendered at all times?如何始终保持渲染的视口传单折线?
【发布时间】:2015-09-28 09:27:19
【问题描述】:

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

我已尝试为传单remove 事件添加侦听器,但这并未触发。我还尝试覆盖折线的onRemove 方法,但这不起作用。现在为了解决这个问题,我将地图设置为比屏幕大,但这会导致速度变慢。

我认为从地图中删除不可见的折线是一项性能功能。有谁知道这是否可以禁用?

【问题讨论】:

  • 称其为功能真的很可爱,但这绝对不是 SVG 的“错”
  • 所以是传单的错?
  • 可能,通过推断(可能也是你的错:-)

标签: javascript svg leaflet polyline


【解决方案1】:

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

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

即使L.Path.CLIP_PADDING 对我也不起作用。但有力地设定界限对我有用。 另请参阅demo here

【讨论】:

    【解决方案2】:

    我需要设置L.Path.CLIP_PADDING

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-01-23
      • 1970-01-01
      • 1970-01-01
      • 2012-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-08
      • 2010-10-15
      相关资源
      最近更新 更多