2013-01-13 22 views
6

làm việc trên mã của tôi để truy xuất lat, dài bằng cách nhấp và nó hoạt động tốt. tự hỏi nếu nó có thể kết hợp 'click' và 'dragend' trong một event listener nếu không. Sẽ đánh giá cao whats một thay thế thích hợp.Google maps apiv3 'click' và 'dragend' người nghe đơn

Đây là những gì tôi đã làm việc.

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

Tôi đã thử làm điều này google.maps.event.addListener(map,'click','dragend', function(event) nhưng không có kết quả. cũng nếu có ai đó có ý định sửa đổi số marker.setPosition(location); này để có animation: google.maps.Animation.DROP. . cảm ơn trước.

Trả lời

7

Không có phương pháp tích hợp để áp dụng trình nghe cho nhiều sự kiện.

Khi sự cố của bạn là bạn không muốn xác định hàm gọi lại hai lần, bạn có thể sử dụng chức năng không ẩn danh hoặc xác định người nghe cho 1 sự kiện và kích hoạt sự kiện khi sự kiện khác kích hoạt:

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

liên quan đến hoạt hình:
Thay vì sử dụng các marker phương pháp (setAnimation, setPosition) để thiết lập marker tùy chọn, bạn cũng có thể sử dụng setOptions phương pháp để thiết lập nhiều tùy chọn cùng một lúc:

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

Cảm ơn bạn có ong n giúp đỡ rất nhiều. Sẽ sử dụng những kỹ thuật đó. –