我目前使用javascript和mySQL有一组声明良好的纬度/经度点数组,当我使用这组数组显示为多段线时,它是成功的。
var polyline=L.polyline(xxx).addTo(地图);
然而,当我厌倦了更换标记时,地图上没有描绘任何标记。
有什么帮助吗?非常感谢:)
这是因为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
时,就像上面多段线中显示的那样,它会抛出一个错误:
未捕获的类型错误:无法读取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的工作示例:http://plnkr.co/edit/3dbJgb?p=preview