2013-01-13 17 views
6

kodumu üzerinde çalışmak için lat, uzun tıklayarak ve iyi çalışıyor. 'click' ve 'dragend' öğelerini tek bir olay dinleyicisinde birleştirip birleştirmediğini merak ediyorsanız. Neyin uygun bir alternatif olduğunu takdir ediyorum.Google maps apiv3 'tıklayın' ve 'dragend' tek dinleyici

Bu, üzerinde çalıştığım şey.

google.maps.event.addListener(map,'click', function(event) { 
    document.getElementById("latbox").value = event.latLng.lat(); 
    document.getElementById("lngbox").value = event.latLng.lng(); 
    addMarker(event.latLng); 
    }); 
} 

function addMarker(location) { 

if (!marker) { 

    marker = new google.maps.Marker({ 
    position: location, 
    map: map, 
    draggable:true, 
    animation: google.maps.Animation.DROP 
    }); 
} 
// Otherwise, simply update its location on the map. 
else { marker.setPosition(location); } 
} 

Bu google.maps.event.addListener(map,'click','dragend', function(event) yapıyor ama boşuna çalıştı. Ayrıca, herhangi birinin bu marker.setPosition(location);'u animation: google.maps.Animation.DROP olması için değiştirecek bir fikri varsa. . şimdiden teşekkürler.

cevap

7

Birden çok olay için bir dinleyiciyi uygulamak için yerleşik bir yöntem yoktur.

senin sorunun, olmayan bir anonim işlevini kullanın veya 1 etkinlik için dinleyici tanımlayıp olayı tetikleyebilir ya iki kere geri arama-işlevi tanımlamak istediğiniz kalmamasıdır zaman zaman diğer olay patlar:

animasyona İlgili
google.maps.event.addListener(map, 'click', 
           function(e){ alert('clicked or dragged');}); 
google.maps.event.addListener(map, 'dragend', function(){ 
           google.maps.event.trigger(this, 'click');}); 

:
yerine işaretleyici-seçenekleri, ayrıca bir kerede birden fazla seçeneklerini ayarlamak için yöntem setOptions kullanabilir ayarlamak için işaretleyici-yöntemleri (setAnimation, setPosition) kullanılarak:

marker.setOptions({ position : location, 
        animation : google.maps.Animation.DROP}); 
+0

Tesekkurler n büyük yardım. Bu teknikleri kullanacak. –