Одновременная анимация маркера Google Maps Api 3 - PullRequest
3 голосов
/ 29 июня 2011

Я работаю над приложением "Карта" и у меня возникают проблемы с анимацией маркера одновременно.Мне бы хотелось, чтобы при нажатии на новый маркер анимация другого удалялась.Я JS Noob и ломал голову.На данный момент у меня есть маркеры в массиве, так что я могу удалить анимацию ... но как я могу удалить анимацию каждого другого маркера при настройке анимации для другого? .. ниже приведен код, который я воспроизводилс

for (i in markersArray) {
if (markersArray[i].getAnimation() != null) {
markersArray[i].setAnimation(null);
}
if (marker[i].getAnimation() != null) {
marker[i].setAnimation(null);
} else {
marker[i].setAnimation(google.maps.Animation.BOUNCE);
}

}

Ответы [ 4 ]

1 голос
/ 01 июля 2011

В итоге я придумал следующий код после назначения уникального идентификатора каждому маркеру ... работал как талисман

for( var i in marker ){
marker[i].setAnimation(null);
if( marker[i].id == item.id ) marker[i].setAnimation(google.maps.Animation.BOUNCE);
}
1 голос
/ 10 января 2014
var new_marker = this;
if(prev_marker) {
  if (prev_marker.getAnimation() != null) {             
      prev_marker.setAnimation(null);                               
      new_marker.setAnimation(google.maps.Animation.BOUNCE);
      prev_marker = new_marker;
  }
} else {
  new_marker.setAnimation(google.maps.Animation.BOUNCE);
  prev_marker = new_marker;
}

Я предпочитаю стиль @Nick Canzoneri.Немного изменил его

1 голос
/ 29 июня 2011

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

previous_animation.setAnimation(null);
new_marker.setAnimation(google.maps.Animation.BOUNCE);
previous_animation = new_marker;
0 голосов
/ 20 октября 2015

Это то, что я получил, у меня есть маркеры в глобальной переменной. Что делает мои маркеры доступными в любое время.

google.maps.event.addListener(marker, 'click', function(event) {
    $("input#pickup-"+ marker.id +"").prop('checked', true);

    for (var i = window.markers.length - 1; i >= 0; i--) {
        window.markers[i].setAnimation();
        if(window.markers[i].id === this.id) {
            marker.setAnimation(google.maps.Animation.BOUNCE);
        }
    };

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