2013-01-13 66 views
6

工作我的代碼檢索經緯度,通過點擊和長期工作正常。想知道是否可以在單個事件監聽器中結合'click'和'dragend',如果不是的話。將不勝感激什麼是一個適當的選擇。谷歌地圖apiv3'點擊'和'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');}); 

相關的動畫:
而不是使用標記方法(setAnimation,setPosition兩種)來設置標記的選項,你也可以使用該方法setOptions一次設置多個選項:

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

謝謝你有蜜蜂非常有幫助。將使用這些技術。 –