通过函数创建 Leaflet 图层

Creating Leaflet layers via function

我有几十个层要创建,现在我正在使用(非常丑陋的)重复代码来创建它。 我确定有一种方法可以在一个函数中完成它(并多次调用它),但我不知道如何完成它(我对 Leaflet 很陌生)。

这是我当前的代码:

var aaa = L.geoJson(null, {
      pointToLayer: function(feature, latlng) {
        var marker = L.circleMarker(latlng);
        marker.setStyle({weight: 1});
        return marker;
      }
    })
    $.getJSON("json/AAA.json", function(data) {
      aaa.addData(data);
    });

我如何将其压缩到一个函数中,以便我可以这样做:

makeLayer('aaa');
makeLayer('bbb');
function makeLayer(name) {
   ???
}

您可以使用 template literals 构建基于名称的 JSON 的路径。如果需要结果层的值,可以使用return传回函数的结果。

function makeLayer(name) {
  var newLayer = L.geoJson(null, {
    pointToLayer: function(feature, latlng) {
      var marker = L.circleMarker(latlng);
      marker.setStyle({weight: 1});
      return marker;
    }
  });
  $.getJSON(`json/${name}.json`, function(data) {
    newLayer.addData(data);
  });
  return newLayer;
}

var aaa = makeLayer('aaa');
var bbb = makeLayer('bbb');