我尝试在传单中设置折线的点。 函数'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,该如何使用?
答案 0 :(得分:0)
这是另外一种情况,应该鼓励您仔细阅读Leaflet documentation。
L.Polyline
constructor需要一个L.LatLng
s(或类似L.LatLng
的接受数据结构,as described)的数组。 setLatLngs
method of L.Polyline
也是如此。
但是,您传递的是LatLng
属性(未记录,不受支持的内部)_path
的修改后的副本,而不是M
的数组,该属性应为SVGPathElement
的实例(请注意Q
和SVGPathElement
,以及它们与drawing SVG paths的关系)。我什至惊讶您可以得到_path
的数组/字符串表示形式。如果您使用L.Canvas
而不是L.SVG
作为矢量渲染器,甚至可能没有Question
属性。
不要那样做。请勿使用未记录的内容(除非您愿意深入研究源代码)。
相反,请使用getLatLngs()
method,并注意函数调用的输入和输出。