Я не тестировал этот код, поэтому могут быть опечатки или ошибки, но он должен дать вам идею.
Сначала определите функцию обратного вызова, чтобы установить для всех маркеров обычный значок (для сброса любых ранее нажатых маркеров), а для значка текущего щелчкового маркера установите выбранный значок:
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
сбрасывала значок на каждом из них.
Но, как я уже сказал, этодолжен дать вам идею.