我正在尝试使用for循环创建多个标记,将坐标存储到数组中。然后,我想将这些标记放入图层组中,并能够使用L.control.layers显示/隐藏它们。问题是只显示最后创建的标记。我知道这与闭包和范围有关,但我是JavaScript的新手,我还不了解这些事情。
var map = L.map('map').setView([44.6499282, 22.6327532], 14);
L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);
var coordinates = [
[44.649, 22.632],
[44.650, 22.642],
[44.652, 22.632]
];
for (i = 0; i < coordinates.length; i++) {
marker = L.marker([coordinates[i][0], coordinates[i][1]]);
marker.addTo(map);
}
var overlay = {'markers': marker};
L.control.layers(null, overlay).addTo(map);
这是指向JSFiddle的链接:http://jsfiddle.net/pufanalexandru/gryvsae2/
答案 0 :(得分:3)
您必须创建一个包含标记的layerGroup。您将layerGroup添加到地图(而不是标记)
var layerGroup = L.layerGroup().addTo(map);
for (i = 0; i < coordinates.length; i++) {
marker = L.marker([coordinates[i][0], coordinates[i][1]]);
layerGroup.addLayer(marker);
}
var overlay = {'markers': layerGroup};
L.control.layers(null, overlay).addTo(map);
请参阅此处的文档:http://leafletjs.com/reference.html#layergroup
在此处查看更正后的代码:http://jsfiddle.net/FranceImage/oLfnc5u3/