2013-08-26 2 views
0

У меня есть некоторые маркеры на моей карте, и я хотел анимировать тот или иной маркер, в зависимости от того, какой из них я нажал. Но анимация просто работает с последним маркером, который я создаю, а не с другими. Я попытался сделать маркер как массив, но та же проблема. Вот код:Анимация различных маркеров API V3 Карты Google

<script type="text/javascript"> 


    var marker = null; 
    var address = null; 
    var altura = null; 

function codeAddress() { 
    altura = document.getElementById('altura').value; 
    address = document.getElementById('address').value + ' ' + altura ; 
    geocoder.geocode({ 'address': address}, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
     map.setCenter(results[0].geometry.location); 
    // Marker 
     marker = new google.maps.Marker({ 
      map: map, 
      icon: document.getElementById('icono').value, 
      position: results[0].geometry.location, 
      animation: google.maps.Animation.DROP 
     }); 
    // Animating Listener 
     google.maps.event.addListener(marker, 'click', toggleBounce); 
    } else { 
     alert('Error: ' + status); 
    } 
    }); 
} 

function toggleBounce() { 
    if (marker.getAnimation() != null) { 
    marker.setAnimation(null); 
    } else { 
    marker.setAnimation(google.maps.Animation.BOUNCE); 
    } 
} 

</script> 

Спасибо заранее.

ответ

2

Вам нужно сохранить ссылки на все маркеры, которые вы хотите оживить, а затем настроить анимацию на правильную. В коде, который вы опубликовали, есть только один маркер.

Одним из способов решения вашей проблемы является замыканием функции:

function createMarker(latlng, address, icon){ 
    // Marker 
     var marker = new google.maps.Marker({ 
      map: map, 
      icon: icon, 
      position: latlng, 
      animation: google.maps.Animation.DROP 
     }); 
    // Animating Listener 
     google.maps.event.addListener(marker, 'click', function() { 
     if (marker.getAnimation() != null) { 
      marker.setAnimation(null); 
     } else { 
      marker.setAnimation(google.maps.Animation.BOUNCE); 
     } 
     }); 
} 

working example

+0

Спасибо за ваш ответ. Делает ту же проблему. Я сделал новый маркер, и когда я нажму, это нормально, но когда я сделаю новый, я не смогу выполнить действие с предыдущим. Вот новый адаптированный код: http://pastebin.com/Puie9sW7 – Chapo58

+0

Вы посмотрели рабочий пример? Это сработало для меня. – geocodezip

+0

Ваш код отличается от приведенного выше. Перед маркером отсутствует «var», который все еще оставляет только один маркер. – geocodezip

Смежные вопросы