Javascript 设置超时以减慢缩放更改事件的速度
我有以下代码:Javascript 设置超时以减慢缩放更改事件的速度,javascript,google-maps,zooming,Javascript,Google Maps,Zooming,我有以下代码: 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:bound
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-click”(2-click)滚动来更改缩放级别,则会触发2个事件,服务器必须执行双重操作
我希望客户端“忘记”第一个缩放事件,只发送最后一个
怎么做
TIA您可以按照标题的建议进行操作……在每个缩放事件上设置一个超时,然后在超时完成之前如果还有其他缩放事件,则清除并重置它,可能类似这样:
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() } } );
}