如何在地图上调整setTimeout()大小

时间:2017-09-16 20:16:51

标签: openlayers openlayers-3

我使用比率为1.0的ImageWMS图层,因此我的地图请求正好是地图<div>的尺寸。如果用户缓慢调整地图大小,则可能会有数十个地图请求。我想在resize事件上放置一个setTimeout()来延迟映射请求,并希望减少请求的数量。关于我如何做到这一点的任何建议?

1 个答案:

答案 0 :(得分:1)

我最终得到了以下内容,这会延迟更新地图的大小(从而向服务器发出请求)半秒钟。

window.addEventListener('resize', function(e) {
    if (e) {
        e.stopImmediatePropagation()
        clearTimeout(window.updateSizeTimer)
        window.updateSizeTimer = setTimeout(function() {
          map.updateSize();
      }, 500);
    }
});

事件监听器需要在创建映射对象之前注册,否则stopImmediatePropagation()不会阻止调用默认的OpenLayers resize处理程序。 window.updateSizeTimer可以是任何全局变量,但如果要由clearTimeout()

清除,则必须保持不变。