Leaflet - 仅绘制折线顶点

标签 leaflet polyline vertices

标题很清楚,我正在使用 Leaflet,我只需要显示多段线的顶点。例如看这张图片:

enter image description here

目前我只能有黑线,我只想要红色方 block 。使用标记不是性能问题的选项,我的线可能很大(500 000 个顶点)并且需要使用 smoothFactor。

这可能吗?如果没有,是否有人知道可以执行此操作的插件,或者提示我如何通过扩展 Polyline 类来执行此操作?

最佳答案

在这里您可以做的是每次渲染多段线时,获取它的 SVG 路径的段,使用这些点将 SVG 矩形元素添加到多段线的容器中:

var polyline = L.Polyline([]).addTo(map),
    list = polyline._path.pathSegList

// Iterate segments
for (var i = 0; i < list.length; i++) {

    // Create SVG rectangle element
    rectangle = document.createElementNS('http://www.w3.org/2000/svg', 'rect')

    // Set rectangle size attributes
    rectangle.setAttributeNS(null, 'height', 4)
    rectangle.setAttributeNS(null, 'width', 4)

    // Set position attributes, compensate for size
    rectangle.setAttributeNS(null, 'x', list[i].x - 2)
    rectangle.setAttributeNS(null, 'y', list[i].y - 2)

    // Set rectangle color
    rectangle.setAttributeNS(null, 'fill', 'red')

    // Append rectangle to polyline container
    polyline._container.appendChild(rectangle)
  }

enter image description here

就我有时间测试它而言,它似乎工作得很好 ;) 不得不使用超时,但不知道为什么,当我有更多时间时再看看。

Plunker 示例:http://embed.plnkr.co/vZI7aC/preview

关于Leaflet - 仅绘制折线顶点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33003140/

相关文章:

javascript - 非常基本的 javascript 函数调用

javascript - 防止重复 map 并在世界范围内继续拖动

ios - 在 Swift 中记录 CLLocationPoints 时不准确

javascript - Virtual Earth V6.3 (Bing) map 控件中高缩放级别的折线问题

algorithm - 将多边形顶点数组 "match"到另一个数组的最佳方法?

iphone - 有人可以解释一下如何使用 glDrawElements (iPhone) 吗?

javascript - ngx-leaflet Angular 2 +,更喜欢Canvas : true don't render canvas

javascript - 如何在文本框中传输传单标记纬度/经度

google-maps - 在 flutter 中单击时更改折线的颜色

opengl - OpenGL中的顶点限制