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