小叶setLatLngs函数引发错误:“无法读取未定义的属性'apply'”

时间:2019-11-26 13:18:42

标签: javascript leaflet

我尝试在传单中设置折线的点。 函数'setLatLngs'引发错误:“无法读取未定义的属性'应用'”

    let points = link._path;
    ...change the points
    link.setLatLngs(points);

//point value is: 
[
  "M",
  [55.770483, 37.715871],
  "Q",
  [55.764653, 37.706289],
  [55.765565, 37.695111],
  "Q",
  [55.7391573, 37.6762553],
  [55.7288665, 37.6454815]
];

当我尝试添加具有相同值的新折线并删除prev时,效果很好:

let line = L.polyline.antPath(
             points,
             link.options);
line.addTo(map);
link.remove();

link.options包含:“ use:L.curve”'setLatlngs'函数会忽略它吗? 如果为true,该如何使用?

1 个答案:

答案 0 :(得分:0)

这是另外一种情况,应该鼓励您仔细阅读Leaflet documentation

L.Polyline constructor需要一个L.LatLngs(或类似L.LatLng的接受数据结构,as described)的数组。 setLatLngs method of L.Polyline也是如此。

但是,您传递的是LatLng属性(未记录,不受支持的内部)_path的修改后的副本,而不是M的数组,该属性应为SVGPathElement的实例(请注意QSVGPathElement,以及它们与drawing SVG paths的关系)。我什至惊讶您可以得到_path的数组/字符串表示形式。如果您使用L.Canvas而不是L.SVG作为矢量渲染器,甚至可能没有Question属性。

不要那样做。请勿使用未记录的内容(除非您愿意深入研究源代码)。

相反,请使用getLatLngs() method,并注意函数调用的输入和输出。