2013-07-02 4 views
2

의 속도를 느리게하는 나는 다음과 같은 코드가 있습니다설정 시간 제한 ZOOM_CHANGED 이벤트

google.maps.event.addListener(map, 'dragend', updateBounds); 
    google.maps.event.addListener(map, 'zoom_changed', updateBounds); 

    function updateBounds() { 
     bounds = map.getBounds(); 
     $.ajax({ url:url, params:{ b:bounds.toUrlValue() } }); 
    } 

때문에, 각 이동에 /를 좌표가 서버로 전송받을 줌.

사용자가 "2 클릭"스크롤을 사용하여 확대/축소 수준을 변경하면 2 개의 이벤트가 발생하고 서버는 이중 작업을해야합니다.

나는 클라이언트가 첫 번째 줌 - 이벤트를 "잊어 버리고"마지막 것만 보내길 바란다.

어떻게 수행하나요?

TIA

답변

2

당신은 당신의 제목이 시사하는 것 ...을 취소 한 후, 모든 줌 이벤트에 제한 시간을 설정 할 타임 아웃이 완료되기 전에 다른 줌 이벤트가 있다면 아마도과 같이, 재설정 할 수 있습니다 :

google.maps.event.addListener(map, 'dragend', updateBounds); 
google.maps.event.addListener(map, 'zoom_changed', updateDebounce); 

var debounceTimeout; 
function updateDebounce() { 
    window.clearTimeout(debounceTimeout); 
    debounceTimeout = window.setTimeout(updateBounds, 1000); 
} 

function updateBounds() { 
    bounds = map.getBounds(); 
    $.ajax({ url:url, params:{ b:bounds.toUrlValue() } }); 
}