2013-08-01 4 views
3

클릭시 변경 아이콘이 표시되었지만 새 아이콘을 클릭하면 원본 아이콘 (새 아이콘으로 유지되지 않음)으로 다시 전환해야합니다.클릭시 전단지 아이콘 변경 (및 되돌리기)

예를 들어 내 아이콘이 모두 파란색이라고 말하면됩니다. 아이콘을 클릭하면 아이콘이 빨간색 아이콘으로 변경됩니다. 그런 다음 새 아이콘을 클릭하면 이전에 클릭 한 아이콘이 다시 파란색으로 변경됩니다.

mouseover 및 mouseout과 함께 작동하도록 할 수 있지만 실제로는 클릭으로 작동해야합니다. 새로운 클릭 기능을 로그해야한다고 생각하지만 어떻게해야할지 모르겠습니다.

는 여기에 내가 현재 가지고있는 작업은 다음과 같습니다

function clickFeature(e) { 
     var layer = e.target; 
     e.target.setIcon(stop); 

     info.update(layer.feature.properties); 
    } 


    var geojson; 

    /*function resetHighlight(e) { 
     geojson.resetStyle(e.target); 
     e.target.setIcon(arms); 
     info.update(); 
    }*/ 

    function onEachFeature(feature, layer) { 
     layer.on({ 
      click: clickFeature 
     }); 
    } 
    geojson = L.geoJson(crossingData, { 

     pointToLayer: function (feature, latlng) { 
      return L.marker(latlng, {icon: arms}); 
     }, 
     onEachFeature: onEachFeature 

    }).addTo(map); 

답변

3

당신은 함수 외부 seprate 변수를 정의하기 위해 시도 할 수 있습니다.

var clickedMarker; 

function clickFeature(e) { 
    if(clickedMarker) { 
      clickedMarker.setIcon(arms); 
    } 
    var layer = e.target; 
    e.target.setIcon(stop); 
    clickedMarker = e.target; 

    info.update(layer.feature.properties); 
} 
3

당신은 또 하나의 변화에 ​​대한 현재의 아이콘을 얻어야한다. 죄송합니다. L.marker에는 getIcon() 방법이 없지만 options.icon을 통해 액세스 할 수 있습니다. 현재 클릭 마커를 개최한다

function clickFeature(e) { 
    var layer = e.target; 
    layer.setIcon(layer.options.icon == arms ? stop : arms); 
} 
관련 문제