2013-01-13 1 views
6

클릭하면 lat, long을 검색하는 코드가 작동하며 정상적으로 작동합니다. 단일 이벤트 리스너에서 '클릭'과 '끌기'를 결합 할 수 있는지 궁금합니다. 적절한 대안이 무엇인지 고맙게 생각합니다.Google지도 apiv3 'click'및 'dragend'단일 리스너

이것이 내가 작업 한 것입니다.

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

나는이 것을 시도했지만 google.maps.event.addListener(map,'click','dragend', function(event)하지만 아무 소용이 없습니다. 이 marker.setPosition(location);animation: google.maps.Animation.DROP으로 수정하려는 사람이있는 경우에도 . 미리 감사드립니다.

답변

7

여러 이벤트에 대해 수신기를 적용하는 기본 제공 방법이 없습니다.

콜백 함수를 두 번 정의하지 않으려는 경우 비 익명 함수를 사용하거나 1 이벤트에 대한 수신기를 정의하고 다른 이벤트가 발생하면 해당 이벤트를 트리거 할 수 있습니다.

애니메이션에 관련
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');}); 

:
대신 마커 - 옵션, 당신은 또한 한 번에 여러 옵션을 설정하는 방법 setOptions을 사용할 수 있습니다를 설정하는 마커-방법 (setAnimation, setPosition를)를 사용하여 :

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

고마워, 너 벌있어. n 큰 도움. 그 기술을 사용합니다. –