通过函数创建 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');
我有几十个层要创建,现在我正在使用(非常丑陋的)重复代码来创建它。 我确定有一种方法可以在一个函数中完成它(并多次调用它),但我不知道如何完成它(我对 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');