문제

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/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top