Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 传单-如何显示标记而不是多段线_Javascript_Leaflet_Polyline - Fatal编程技术网

Javascript 传单-如何显示标记而不是多段线

Javascript 传单-如何显示标记而不是多段线,javascript,leaflet,polyline,Javascript,Leaflet,Polyline,我目前有一组使用javascript和mySQL很好地声明的纬度/经度点数组,当我使用这组数组显示为多段线时,它是成功的 var polyline=L.polylinexx.addTomap 然而,当我疲于改变标记,地图上没有描绘任何标记 有什么帮助吗?非常感谢:这是因为L.Polyline采用多个lat/lng坐标的嵌套数组作为第一个参数,L.Marker采用一个带有lat/lng坐标的数组。签名不同: L.多段线: new L.Polyline([[-45, -45], [45, 45]],

我目前有一组使用javascript和mySQL很好地声明的纬度/经度点数组,当我使用这组数组显示为多段线时,它是成功的

var polyline=L.polylinexx.addTomap

然而,当我疲于改变标记,地图上没有描绘任何标记

有什么帮助吗?非常感谢:

这是因为L.Polyline采用多个lat/lng坐标的嵌套数组作为第一个参数,L.Marker采用一个带有lat/lng坐标的数组。签名不同:

L.多段线:

new L.Polyline([[-45, -45], [45, 45]], {/*options*/});
L.标记:

new Marker([-45, -45], {/*options*/});
将嵌套数组传递给L.Marker时(如上图中多段线中所示),会引发错误:

未捕获的TypeError:无法读取null的属性“lat”

如果要使用多段线的坐标集在直线的起点和/或终点显示标记,可以执行以下操作:

var coordinates = [[-45, -45], [45, 45]];

var startMarker = new Marker(coordinates[0], {/*options*/});
var endMarker = new Marker(coordinates[1], {/*options*/});
如评论中所承诺的,从大型数组中添加标记的另一种更简单的方法是:

var coordinates = [
  [-41.31825,174.80768],
  [-41.31606,174.80774],
  [-41.31581,174.80777],
  [-41.31115,174.80827],
  [-41.30928,174.80835],
  [-41.29127,174.83841],
  [-41.33571,174.84846],
  [-41.34268,174.82877]
];

coordinates.forEach(function (coordinate) {
  new L.Marker(coordinate).addTo(map);
});
比做更容易:

new L.Marker(coordinate[0]).addTo(map);
new L.Marker(coordinate[1]).addTo(map);
new L.Marker(coordinate[2]).addTo(map);
new L.Marker(coordinate[3]).addTo(map);
new L.Marker(coordinate[4]).addTo(map);
new L.Marker(coordinate[5]).addTo(map);
new L.Marker(coordinate[6]).addTo(map);
new L.Marker(coordinate[7]).addTo(map);

Plunker上的工作示例:

亲爱的@iH8,感谢您的回复,我有一组坐标,您的代码仍然适用吗?非常感谢你的帮助。var planelatlong=[-41.31825174.80768]、-41.31606174.80774]、-41.31581174.80777]、-41.311115174.80827]、-41.30928174.80835]、-41.29127174.83841]、-41.33571174.84846]、-41.34268174.82877];不用了,谢谢,你总是受欢迎的,这就是为什么。如果答案是您的问题的解决方案,请接受它,以便其他正在寻找类似解决方案的用户也可以从接受的解决方案中受益,请参阅:是的,这种方法仍然有效,但我将更新我的答案以添加第二个解决方案,这在处理大型阵列时会更方便一些。