Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置超时以减慢缩放更改事件的速度_Javascript_Google Maps_Zooming - Fatal编程技术网

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