Javascript 基于覆盖层更改传单地图上的图例

Javascript 基于覆盖层更改传单地图上的图例,javascript,leaflet,overlay,Javascript,Leaflet,Overlay,我正在使用moulate.js库根据统计数据创建多张地图。每个地图显示不同的值范围,所以当用户更改地图时,最好更改图例 我在这个问题中发现了一个类似的例子,但我需要在两个以上的层之间切换。我只是尝试在代码中添加更多的“if”语句和逻辑运算符,但效果并不理想 var overlays = { "threats":threats, "impact ":impact, "blockages":b

我正在使用moulate.js库根据统计数据创建多张地图。每个地图显示不同的值范围,所以当用户更改地图时,最好更改图例

我在这个问题中发现了一个类似的例子,但我需要在两个以上的层之间切换。我只是尝试在代码中添加更多的“if”语句和逻辑运算符,但效果并不理想

var overlays = {
        "threats":threats,
        "impact ":impact,
        "blockages":blockages
    }; 
var basemaps = {
        "OpenStreetMap":osmlayer
    };

L.control.layers(overlays,basemaps,{position:'topright'}).addTo(map);

var threats_legend = L.control({position: 'bottomleft'});
var impact_legend = L.control({position: 'bottomleft'});
var blockage_legend = L.control({position: 'bottomleft'});


threats_legend.onAdd = function (map) {
var div = L.DomUtil.create('div', 'info legend');
div.innerHTML +=
'<img src="./three.png" alt="legend" width="134" height="147">';
return div;
};

threats_legend.addTo(map);

impact_legend.onAdd = function (map) {
var div = L.DomUtil.create('div', 'info legend');
    div.innerHTML +=
    '<img src="./one.png" alt="legend" width="134" height="147">';
return div;
};

impact_legend.addTo(map);

blockage_legend.onAdd = function (map) {
    var div = L.DomUtil.create('div', 'info legend');
        div.innerHTML +=
        '<img src="./two.png" alt="legend" width="134" height="147">';
    return div;
    };
    blockage_legend.addTo(map); 

map.on('overlayadd', function (eventLayer) {
    // Switch to the Population legend...
    if (eventLayer.name === 'threats') {
        this.removeControl(impact_legend);
        this.removeControl(blockage_legend);
        threats_legend.addTo(this);
    } 

    else if(eventLayer.name === 'blockages') { 
        this.removeControl(impact_legend);
        this.removeControl(threats_legend);
        blockage_legend.addTo(this);
    }
    else if(eventLayer.name === 'impact'){ 
        this.removeControl(threats_legend);
        this.removeControl(blockage_legend);
        impact_legend.addTo(this);
    }
}); ````
var覆盖={
“威胁”:威胁,
“影响”:影响,
“封锁”:封锁
}; 
变量基本映射={
“OpenStreetMap”:osmlayer
};
图层(覆盖图,底图,{位置:'topright'}).addTo(地图);
var\u legend=L.control({位置:'bottomleft'});
var impact_legend=L.control({位置:'bottomleft'});
变量_legend=L.control({位置:'bottomleft'});
威胁\u legend.onAdd=功能(地图){
var div=L.DomUtil.create('div','info legend');
div.innerHTML+=
'';
返回div;
};
威胁_legend.addTo(地图);
impact_legend.onAdd=功能(地图){
var div=L.DomUtil.create('div','info legend');
div.innerHTML+=
'';
返回div;
};
影响_图例。添加到(地图);
阻塞\u legend.onAdd=功能(地图){
var div=L.DomUtil.create('div','info legend');
div.innerHTML+=
'';
返回div;
};
图例添加到(地图);
map.on('overlayadd',函数(eventLayer){
//切换到人口图例。。。
如果(eventLayer.name==‘威胁’){
此。移除控制(影响_图例);
此。解除控制(阻塞\u图例);
威胁与图例。添加到(本);
} 
else if(eventLayer.name==='blockages'){
此。移除控制(影响_图例);
此。删除控制(威胁和图例);
添加到(本)中的图例;
}
else if(eventLayer.name=='impact'){
此。删除控制(威胁和图例);
此。解除控制(阻塞\u图例);
影响_图例。添加到(本);
}
}); ````

如果您也可以添加代码,那就太好了。这个问题很难理解。欢迎来到SO!在你的情况下,“它不能正常工作”是什么意思?当我改变图层时,图例不会改变。。。