2017-09-16 36 views
0

我使用比例爲1.0的ImageWMS圖層,因此我的地圖請求正好是地圖<div>的尺寸。如果用戶緩慢調整地圖大小,可能會有數十個地圖請求。我想在resize事件上放一個setTimeout()來延遲映射請求,並希望減少請求的數量。有關我如何做到這一點的任何建議?如何在地圖上放置setTimeout()調整大小

回答

1

我結束了以下,它延遲了半秒更新地圖的大小(並因此向服務器發出請求)。

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

事件監聽器需要創建地圖對象之前進行註冊,否則stopImmediatePropagation()不會阻止默認的OpenLayers被調用調整處理。 window.updateSizeTimer可以是任何全局變量,但它必須是持久性的,如果它要被清除clearTimeout()

相關問題