2013-01-13 16 views
6

lavorando sul mio codice per recuperare lat, long cliccando e funziona bene. chiedendo se è possibile combinare "clic" e "trascina" in un singolo listener di eventi se non lo è. Apprezzerei che cosa è un'alternativa adeguata.Google maps apiv3 'click' e 'dragend' single listener

Questo è quello su cui ho lavorato.

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

Ho provato a fare questo google.maps.event.addListener(map,'click','dragend', function(event) ma senza successo. anche se qualcuno ha un'idea per modificare questo marker.setPosition(location); per avere animation: google.maps.Animation.DROP. . Grazie in anticipo.

risposta

7

Non esiste un metodo incorporato per applicare un listener per più eventi.

Quando il problema è che non si vuole definire la funzione di callback per due volte, si può ricorrere ad una funzione non-anonima o definire l'ascoltatore per 1 evento e attivare l'evento quando gli altri generato l'evento:

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

correlati a l'animazione:
Invece di usare i marcatori metodi (setAnimation, setPosition) per impostare marcatori-opzioni, è anche possibile utilizzare i setOptions metodo per impostare le opzioni multiple in una sola volta:

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

Grazie Hai ape n di grande aiuto. Userò quelle tecniche. –