【问题标题】:Putting multiple markers in Layer Group在图层组中放置多个标记
【发布时间】:2015-01-03 14:47:54
【问题描述】:

我正在尝试使用 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/

【问题讨论】:

    标签: javascript leaflet closures


    【解决方案1】:

    您必须创建一个包含您的标记的 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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多