gpt4 book ai didi

javascript - 如何使用 leaflet.js 在多个 map 图例之间切换?

转载 作者:行者123 更新时间:2023-11-28 19:41:02 25 4
gpt4 key购买 nike

我正在使用 leaflet.js 库根据统计数据创建多个 map 。每个 map 显示不同的值范围,因此当用户更改 map 时更改图例会很好。

我在这个 question 中找到了类似的例子,但我需要在两层以上之间切换。我尝试简单地在代码中添加更多“if”语句和逻辑运算符,但它无法正常工作:

map.on('baselayerchange', function (eventLayer) {
if (eventLayer.name === 'Agricultural') {
map.removeControl(VODlegend || BUDlegend || LISlegend);
SGlegend.addTo(map);
}
else if (eventLayer.name === 'Building') {
map.removeControl(SGlegend || LISlegend || VODlegend);
BUDlegend.addTo(map);
}
else if (eventLayer.name === 'Forest') {
map.removeControl(BUDlegend || VODlegend || SGlegend);
LISlegend.addTo(map);
}
else if (eventLayer.name === 'Water') {
map.removeControl(LISlegend || SGlegend || BUDlegend);
VODlegend.addTo(map);
}
})

Here is example of my map on jsfiddle.如果有任何帮助,我将不胜感激。

最佳答案

VODlegend || BUDlegend || LISlegend

在 javascript 中,这是一个条件(结果为 true 或 false)...而不是您期望的列表

您需要像这样跟踪当前的控件

SGlegend.addTo(map);
currentLegend = SGlegend;


map.on('baselayerchange', function (eventLayer) {
if (eventLayer.name === 'Agricultural') {
map.removeControl(currentLegend );
currentLegend = SGlegend;
SGlegend.addTo(map);
}
else if (eventLayer.name === 'Building') {
map.removeControl(currentLegend );
currentLegend = BUDlegend;
BUDlegend.addTo(map);
}
else if (eventLayer.name === 'Forest') {
map.removeControl(currentLegend );
currentLegend = LISlegend;
LISlegend.addTo(map);
}
else if (eventLayer.name === 'Water') {
map.removeControl(currentLegend );
currentLegend = VODlegend;
VODlegend.addTo(map);
}
})

修改后的 fiddle 在这里:http://jsfiddle.net/FranceImage/X678g/

关于javascript - 如何使用 leaflet.js 在多个 map 图例之间切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25051680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com