leaflet.js로 여러 맵 전설을 전환하는 방법?
-
21-12-2019 - |
문제
Reaplet.js 라이브러리를 사용하여 통계 데이터를 기반으로 여러 개의지도를 만듭니다.각지도는 다양한 값 범위를 표시하므로 사용자가 맵을 변경할 때 범례를 변경하는 것이 좋습니다.
이 질문 이지만 필요하지만 필요합니다.2 개 이상의 레이어 사이를 전환합니다.코드에 "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);
}
})
.
JSFiddle에서 내지도의 예입니다. 나는 어떤 도움을 받아 감사 할 것입니다.
해결책
Vodlegend ||Budlegend ||lislegend
자바 스크립트에서 이것은 조건 (결과가 사실이거나 거짓) ... 예상대로 목록이 아닙니다
해당 컨트롤을 추적해야합니다
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