Leaflet:如何在featureGroup上添加多个标记

时间:2016-10-10 21:51:02

标签: javascript leaflet markers

我正在尝试做类似的事情:https://github.com/IvanSanchez/Leaflet.Polyline.SnakeAnim/blob/master/demo-group.gif 我有多个标记。

在示例代码中https://github.com/IvanSanchez/Leaflet.Polyline.SnakeAnim/blob/master/demo-group.html 已使用

手动添加每个位置
     var trd = [63.5, 11],
        mad = [40.5, -3.5],
        lnd = [51.5, -0.5],
        ams = [52.3, 4.75],
        vlc = [39.5, -0.5];

     var route = L.featureGroup([
        L.marker(trd),
        L.polyline([trd, ams]),
        L.marker(ams),
        L.polyline([ams, lnd]),
        L.marker(lnd),
        L.polyline([lnd, mad]),
        L.marker(mad),
        L.polyline([mad, vlc]),
        L.marker(vlc)
    ]);

我的问题是,如果我有许多标记(例如500个标记),如何在不手动将每个标记和折线添加到L.featureGroup的情况下创建路径。

   var bounds = new L.LatLngBounds();
   for (var i = 0; i < mTool.length; i++) {
            var loc = new L.LatLng(mTool[i].lat, mTool[i].lon);
            bounds.extend(loc);
            var marker = new L.Marker(loc);
            map.addLayer(marker);
    }
    map.fitBounds(bounds);

1 个答案:

答案 0 :(得分:3)

编辑:你想要做的是由同一个github project of IvanSanchez提供。请阅读demo.html而不是demo-group.html

通过循环标记数组可以轻松完成,正如您正确暗示的那样。代码如下:

var markers = [[63.5, 11],
        [40.5, -3.5],
        [51.5, -0.5],
        [52.3, 4.75],
        [39.5, -0.5]];

var route = L.featureGroup().addTo(map);

var n = markers.length;

for (var i = 0; i < n-1; i++) {
            var marker = new L.Marker(markers[i]);
            var line = new L.polyline([markers[i],markers[i+1]]);
            route.addLayer(marker);
            route.addLayer(line);
};
route.addLayer(new L.Marker(markers[n-1]));

map.fitBounds(route.getBounds());

我在gist(here)上创建了一个工作示例。