如何循环遍历坐标数组以创建layerGroup的地图标记?

时间:2016-09-02 11:54:33

标签: javascript leaflet

这是目前使用for循环的快速片段。我只拿了一块地图来使用一个例子:

link

图片显示,截至目前,我的代码会在地图加载后自动显示所有灭火器 - 这不是我想要的。请阅读下面的相关详细版本的问题。

ChromeDriver

如上所示,这就是我如何显示五年级的标记。当我在图层选择选项上单击“五年级”时(在查看地图时)会弹出这三个标记。这正是我想要的灭火器。

但由于我有这么多坐标,我想要一种更有效的方法。虽然五年级我只有三个,所以我不介意单独手动输入它们。

所以我的问题基本上是询问是否有更有效的方法来做到这一点。正如我在上面所示,我现在让它在数组中运行for循环并将它们放在地图上,但问题是我不希望灭火器显示整个时间;我希望他们就像我有五年级(显然也是其他等级),我只是从layerGroups中选择它们然后它们都会出现。

我只是不想为灭火器的每一组坐标单独制作一个标记,因为我觉得这确实适得其反。

我无法弄清楚如何选择它,它会运行for循环并显示所有这些;我尝试时只会显示一组坐标。

我希望这更有意义。我非常感谢你抽出时间来帮助我!

1 个答案:

答案 0 :(得分:0)

function createMarker (coords) {

    return (new L.marker(coords, {icon: fireEx}).bindPopup('<strong>Hi! I\'m a fire extinguisher! And you are?</strong>').addTo(cmap));
}

function createMarkerGroup (markerLocationList) {
    var
        markerList = [];

    markerLocationList.forEach(function (location) {

        markerList.push(createMarker(location));
    });

    return L.layerGroup.apply(L.layerGroup, markerList);
}


var extinguishers = [
    [71.52491, -17.75391],
    [71.69129, 0.35156],
    [60.84491, -56.25],
    [49.49667, -14.41406],
    [10.66061, -33.75],
    [11.3508, -10.01953],
    [-21.45307, -22.5],
    [-50.1769, -60.46875],
    [-49.49667, -27.94922],
    [-59.88894, 36.03516],
    [-48.80686, 47.10938],
    [-49.15297, 84.72656],
    [-49.15297, 84.72656],
    [-48.80686, 47.10938]
];
var fireExtinguishers = createMarkerGroup(extinguishers);