2011-06-11 6 views

답변

6

이 코드를 테스트하지 않았으므로 오타 나 버그가있을 수 있지만 아이디어를 얻을 수 있습니다.

첫째, 일반 아이콘에 대한 모든 마커를 설정하는 콜백을 정의 (모든 이전 마커를 클릭 재설정) 선택한 아이콘으로 현재 클릭 된 마커의 아이콘을 설정, 그리고

var markerCallback = function() { 
    for (var i=0; i<arrayOfMarkers.length; i++) { 
     arrayOfMarkers[i].setIcon(normalIcon); 
    } 
    this.setIcon(selectedIcon); 
} 

에 콜백을 할당 다음과 같이 각 마커의 click 이벤트는 다음과 같습니다.

google.maps.event.addListener(marker, 'click', markerCallback); 

확실히 개선 된 사항이 있습니다. 예를 들어, normalIcon, selectedIconarrayOfMarkers이 위의 코드에서 가정 한대로 전역 변수가되는 것을 원하지 않을 수 있습니다. 마커가 많은 경우 for 아이콘을 루프마다 재설정하지 않고 이전에 선택한 마커를 추적하는 것이 좋습니다.

하지만 내가 말했듯이 이것은 당신에게 아이디어를 줄 것입니다. 어떤 경우 누구나 카스퍼 언급처럼 여기, 전역 변수의 이전 마커를 추적의 예를보고 싶어 그냥에서

+1

매번 모든 마커를 거치지 않고 현재 선택된 마커를 전역 변수에 할당하는 것이 훨씬 쉽습니다. –

+1

@Kasper : 예, 정확합니다. (나의 변론에서 나는 그 문제에 대해 언급했다. "마커가 많은 경우에는, 이전에 선택한 마커를 추적하고 대신에 for 루프를 사용하여 아이콘을 재설정해야합니다. ") – Trott

+0

나는 정말로 미안하다, 나는 그 부분을 완전히 놓쳤다. 코드 예제에만 집중 : D –

14

내가 무슨 짓을 :

google.maps.event.addListener(marker,'click',function() { 

     if (selectedMarker) { 
      selectedMarker.setIcon(normalIcon); 
     } 
     marker.setIcon(selectedIcon); 
     selectedMarker = marker; 
    }); 

(전역 변수로 selectedMarker을 설정 한 후)

+0

감사합니다! 그것은 일했다 :) – VishwaKumar

+0

내 사건에 대한 몇 가지 변화가 필요하지만 아이디어는 슈퍼 깨끗한 사람, 감사 – vaskort

+0

훌륭한 사람, 당신은 최상의 솔루션을 제공했습니다 – Devz

관련 문제