Google Maps API-проблема с маркерами отскока
Когда маркер выбран, я хочу, чтобы он отскочил. Когда я нажимаю на другой маркер, я хочу, чтобы первый перестал подпрыгивать, а второй начал подпрыгивать.
Я предположил, что это достижимо простым выполнением этого
function bindInfoWindow(marker, map, infoWindow, html) {
google.maps.event.addListener(marker, 'click', function() {
document.getElementById('loc-info').innerHTML = html;
if (marker.getAnimation() != null) {
marker.setAnimation(null);
} else {
marker.setAnimation(google.maps.Animation.BOUNCE);
}
});
}
Вместо этого первый маркер будет продолжать подпрыгивать до тех пор, пока он не будет нажат снова, чего я не хочу.
Есть какие-нибудь мысли?
1 ответ:
Вам нужно отслеживать" текущий " маркер и установить его анимацию в null, прежде чем отскакивать от нового маркера и устанавливать его в "текущий" маркер.
// track marker that is currently bouncing var currentMarker = null; function bindInfoWindow(marker, map, infoWindow, html) { google.maps.event.addListener(marker, 'click', function() { document.getElementById('loc-info').innerHTML = html; // remove the bounce from the "old" marker if (currentMarker) currentMarker.setAnimation(null); // set this marker to the currentMarker currentMarker = marker; // add a bounce to this marker marker.setAnimation(google.maps.Animation.BOUNCE); }); }Ваш предыдущий код смотрит только на маркер, который только что был нажат - если он не щелкает (начальное состояние), то вы заставляете его отскакивать. Следующий щелчок проверяет, не подпрыгивает ли он (это так), и останавливает его. Вы можете добавить ту же логику в код выше, если хотите, чтобы второй щелчок прекратил подпрыгивание.
Comments