答案 0 :(得分:1)
这里很少有人注意到, 您将这两个图层添加到单个变量中,因此它们不能被视为两个图层,因此无法在控制框中将其视为两个图层。
此外,您指定要在图层之间切换,即,您希望一次只能看到一个图层,因此,默认情况下,只有在我们将图层设置为基础图层时才能实现此功能{{ 3}}
因此,您首先需要更改getDefaultWmsValues()
功能,如下所示
function getDefaultWmsValues() {
var layer1, layer2;
layer2= 'Street';
layer1= 'Satellite';
return {
url: "http://dummy.com/wms/service",
mapCenter: [1, 2],
startZoom: 15,
layer1: [layer1],
layer2: [layer2],
imageFormat: 'image/jpeg',
autor: "WMS Dummy",
maxZoom: 17,
minZoom: 12,
version: '1.1.0',
interactiveMapBoundaries: [[123, 1234], [1245.164611, 17890.023279]],
usedProjection: L.CRS.EPSG4326
};
}
同样,您需要创建修改getWmsConfig()
函数,并单独传递图层属性,如下所示
function getWmsConfig(wmsDefaultValues, layer) {
return L.tileLayer.wms(wmsDefaultValues.url, {
layers: layer,
format: wmsDefaultValues.imageFormat,
version: wmsDefaultValues.version,
maxZoom: wmsDefaultValues.maxZoom,
minZoom: wmsDefaultValues.minZoom,
crs: wmsDefaultValues.usedProjection,
attribution: wmsDefaultValues.autor
});
}
现在,每次调用getWmsConfig()
两次传递一层
var wmsConfig1 = getWmsConfig(wmsDefaultValues,wmsDefaultValues.layer1);
var wmsConfig2 = getWmsConfig(wmsDefaultValues,wmsDefaultValues.layer2);
wmsConfig1.addTo(map);
wmsConfig2.addTo(map);
现在,将这两个wmsConfig
变量添加到控件
var baseMaps = {
"Layer Name 1": wmsConfig1,
"Layer Name 2": wmsConfig2
};
祝你好运