Google Maps API v3, как изменить значок маркера при нажатии - PullRequest
7 голосов
/ 12 июня 2011

Как изменить значок маркера при щелчке маркера (по событию щелчка) и вернуть его к обычному значку при нажатии другого маркера?

Ответы [ 2 ]

14 голосов
/ 11 августа 2011

В любом случае, кто-нибудь захочет увидеть пример отслеживания предыдущего маркера в глобальной переменной, как упоминал Каспер, вот что я сделал:

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

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

(после установки selectedMarker в качестве глобальной переменной)

8 голосов
/ 12 июня 2011

Я не тестировал этот код, поэтому могут быть опечатки или ошибки, но он должен дать вам идею.

Сначала определите функцию обратного вызова, чтобы установить для всех маркеров обычный значок (для сброса любых ранее нажатых маркеров), а для значка текущего щелчкового маркера установите выбранный значок:

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, selectedIcon и arrayOfMarkers были глобальными переменными так, как предполагает приведенный выше код.И если у вас много маркеров, вы, вероятно, хотите вместо этого отслеживать ранее выбранный маркер, вместо того, чтобы петля for сбрасывала значок на каждом из них.

Но, как я уже сказал, этодолжен дать вам идею.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...