我可以设置具有多个(叠加)图层的LeafletJS地图,并在使用基本GeoJSON文件时使用控制菜单管理其可见性,与文档示例完全相同:http://leafletjs.com/examples/layers-control/。
这很好用:
var geojson_layer1 = L.geoJson.ajax("layer1.geojson", {style: style, onEachFeature:onEachFeature});
var geojson_layer2 = L.geoJson.ajax("layer2.geojson", {style: style, onEachFeature:onEachFeature});
...
geojson_layer1.addTo(map);
geojson_layer2.addTo(map);
...
var baseMaps = {
"MyMap": map
};
var overlayMaps = {
"Layer1": Layer1,
"Layer2": Layer2
};
...
L.control.layers(baseMaps, overlayMaps).addTo(map);
现在我尝试使用来自GeoServer(WMS / WFS)的数据来做同样的事情(仍然使用控制的底图+覆盖层)。为此,我使用JQuery ajax调用,例如:
var xyz_Parameters = {
service: 'WFS',
version: '1.0.0',
request: 'GetFeature',
typeName: 'myworkspace:xyz',
maxFeatures: '50',
outputFormat: 'application/json',
};
var parameters_xyz = L.Util.extend(xyz_Parameters);
var URL = owsrootUrl + L.Util.getParamString(parameters_xyz);
console.log(URL);
$.ajax({ url: URL, success: function (data) {
var geojson_layer_1 = new L.geoJson(data, {style: style, onEachFeature:doNothing});
geojson_layer_1.addTo(map);
}
});
这样也可以正常工作但我无法通过菜单管理图层可见性,因为变量(geojson_layer_1此处)不会全局显示。
实际上我的问题是异步/回调(正常)行为。我想知道如何使用回调管理图层对象。 我在网上看过很多东西(例如:Handling ajax-request in leaflet map),但要么不是我想要的,要么我无法让它们发挥作用。
是否有人会有(更多)完整示例?
感谢。 汤姆