2013-01-13 9 views
6

pracując nad moim kodem, aby pobrać lat, długie kliknięcie i działa dobrze. zastanawiasz się, czy możliwe jest łączenie "kliknięcia" i "przeciągania" w pojedynczym detektorze zdarzeń, jeśli nie. Doceniłbym, co jest właściwą alternatywą.Google map apiv3 "kliknij" i "przeciągnij" pojedynczy słuchacz

Nad tym właśnie pracowałem.

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

Próbowałem zrobić to google.maps.event.addListener(map,'click','dragend', function(event), ale na próżno. także jeśli ktoś ma pomysł, aby zmodyfikować ten marker.setPosition(location);, aby mieć animation: google.maps.Animation.DROP. . z góry dziękuję.

Odpowiedz

7

Nie ma wbudowanej metody zastosowania detektora dla wielu zdarzeń.

Gdy problem jest to, że nie chcesz, aby zdefiniować funkcję oddzwonienia-dwa razy, można użyć innego niż anonimową funkcję lub zdefiniować słuchacza przez 1 zdarzenia i wyzwalać zdarzenie gdy inne Zdarzenie:

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

związanych z animacją:
Zamiast używać marker metod (setAnimation, setPosition), aby ustawić marker opcje, również mogą korzystać z setOptions sposób na ustawienie wielu opcji naraz:

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

Dzięki, że jesteś pszczoła n wielkiej pomocy. Użyje tych technik. –

Powiązane problemy