[英]Google Maps API v3, how to change marker icon when clicked
如何在單擊標記時(在單擊事件上)更改標記圖標,並在單擊另一個標記時將其恢復為正常圖標?
無論如何,任何人都希望看到一個在全局變量中跟蹤前一個標記的示例,例如 Kasper 提到的,這就是我所做的:
google.maps.event.addListener(marker,'click',function() {
if (selectedMarker) {
selectedMarker.setIcon(normalIcon);
}
marker.setIcon(selectedIcon);
selectedMarker = marker;
});
(將 selectedMarker 設置為全局變量后)
我沒有測試過這段代碼,所以可能有錯別字或錯誤,但它應該給你的想法。
首先,定義一個回調以將所有標記設置為普通圖標(以重置任何先前單擊的標記)並將當前單擊的標記的圖標設置為選定的圖標:
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
、 selectedIcon
和arrayOfMarkers
成為上面代碼假定的全局變量。 如果您有很多標記,您可能希望跟蹤先前選擇的標記,而不是讓for
循環重置每個標記上的圖標。
但就像我說的,這應該給你的想法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.