Leaflet.jsと複数の地図の凡例を切り替える方法?
-
21-12-2019 - |
質問
Leaflet.jsライブラリを使用して統計データに基づいて複数のマップを作成します。各マップにはさまざまな範囲の値が表示されるため、ユーザーがマップを変更したときに凡例を変更するのがいいでしょう。
この質問、しかし、必要なものが必要です2つ以上のレイヤーを切り替えるには。私は単にコード内の論理演算子と論理演算子をさらに追加してみましょうが、正しい作業を行いません:
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);
}
})
.
JSfiddleでのマップの例です。 私はあらゆる助けに感謝します。
解決
VodleGend ||BudleGend ||LisleGend
JavaScriptでは、これは条件(結果が真または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);
}
})
.
修正されたフィドルはここにあります: http://jsfiddle.net/franceImage/x678g/
所属していません StackOverflow