2011-06-11 179 views

回答

6

我還沒有測試過這段代碼,所以可能會出現拼寫錯誤或錯誤,但它應該給你提供這個想法。

首先,定義一個回調來設置所有標記爲正常圖標(重置任何先前點擊標記)和當前點擊的標記的圖標設定爲所選擇的圖標:

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

然後,分配回調每個標記上的點擊事件如下所示:

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

確實有一些代碼可以改進。例如,您可能不希望normalIcon,selectedIconarrayOfMarkers成爲上述代碼假定它們的全局變量。如果您有很多標記,則可能需要跟蹤之前選定的標記,而不是讓for循環重置每個標記上的圖標。

但正如我所說,這應該給你的想法。

+1

將是一個更容易簡單地將當前選中標記分配給一個全局變量,而不是通過所有標記每次:) – 2011-06-12 17:49:21

+1

@Kasper運行:是的,你是正確的,這將是更好! (在我的辯護中,我提到了這個問題:「如果你有很多標記,你可能想跟蹤上一個選定的標記,而不是在每個標記上都有一個'for'循環重置圖標。 「) – Trott 2011-06-12 18:46:43

+0

我確實很抱歉,我完全錯過了那部分。只專注於代碼示例:D – 2011-06-12 23:35:38

14

只需在任何情況下,任何人都希望看到跟蹤上一個標記的全局變量像卡斯帕提到,這裏的一個例子是我做過什麼:

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

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

(後設置selectedMarker作爲一個全局變量)

+0

謝謝!它的工作:) – VishwaKumar 2012-05-16 11:53:25

+0

需要我的情況下的一些變化,但想法是超級乾淨的人,謝謝 – vaskort 2015-11-26 14:43:40

+0

優秀的人,你提供了最好的解決方案 – Devz 2016-02-15 16:10:51

相關問題