簡體   English   中英

Google Maps API v3,單擊時如何更改標記圖標

[英]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); 

當然可以進行一些代碼改進。 例如,您可能不希望normalIconselectedIconarrayOfMarkers成為上面代碼假定的全局變量。 如果您有很多標記,您可能希望跟蹤先前選擇的標記,而不是讓for循環重置每個標記上的圖標。

但就像我說的,這應該給你的想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM