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);
}
});
}


Вместо этого первый маркер будет продолжать подпрыгивать до тех пор, пока он не будет нажат снова, чего я не хочу.
Есть какие-нибудь мысли?

578   1  

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

    Ничего не найдено.