这是目前使用for循环的快速片段。我只拿了一块地图来使用一个例子:
图片显示,截至目前,我的代码会在地图加载后自动显示所有灭火器 - 这不是我想要的。请阅读下面的相关详细版本的问题。
ChromeDriver
如上所示,这就是我如何显示五年级的标记。当我在图层选择选项上单击“五年级”时(在查看地图时)会弹出这三个标记。这正是我想要的灭火器。
但由于我有这么多坐标,我想要一种更有效的方法。虽然五年级我只有三个,所以我不介意单独手动输入它们。
所以我的问题基本上是询问是否有更有效的方法来做到这一点。正如我在上面所示,我现在让它在数组中运行for循环并将它们放在地图上,但问题是我不希望灭火器显示整个时间;我希望他们就像我有五年级(显然也是其他等级),我只是从layerGroups中选择它们然后它们都会出现。
我只是不想为灭火器的每一组坐标单独制作一个标记,因为我觉得这确实适得其反。
我无法弄清楚如何选择它,它会运行for循环并显示所有这些;我尝试时只会显示一组坐标。
我希望这更有意义。我非常感谢你抽出时间来帮助我!
答案 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);