我有以下代码:
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() } } );
}
因此,每次移动/缩放时,coords都会被发送到服务器。
问题是,如果用户进行“双击” - 滚动以更改缩放级别,则会触发2个事件,服务器必须进行双重工作。
我希望客户“忘记”第一个缩放事件并仅发送最后一个。
怎么做?
TIA
答案 0 :(得分: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() } } );
}