无论如何暂停打开图层更新线程?

时间:2018-02-13 22:28:40

标签: javascript openlayers

当向量源中存在大量折线功能时,我在Chrome中看到与请求/响应性能有关的问题。我注意到如果我将源图层设置为setVisible(false),这个问题就会消失。这里的首选方法是不必隐藏层,而是在处理ajax响应时停止更新线程运行片刻。这听起来像是一种可行的方法,是否可以做到?提前谢谢。

1 个答案:

答案 0 :(得分:0)

我找到了一种方法,可以通过重载当前的地图渲染器并添加一个属性来支持暂停渲染器。对于后代,我已经发布了以下代码。可能有更好的方法来实现这一点,例如实现渲染器,然后设置地图渲染器以使用新的自定义渲染器,但是,这适用于我的目的。

//custom OpenLayers pauseRenderer method
ol.renderer.canvas.Map.prototype.pauseRenderer = function(pause){
    this.pauseRenderer_ = pause;
}

//custom OpenLayers map renderer to allow for pausing when needed
ol.renderer.canvas.Map.prototype.renderFrameSuper = ol.renderer.canvas.Map.prototype.renderFrame;
ol.renderer.canvas.Map.prototype.renderFrame = function(frameState) {

    if(this.pauseRenderer_)
        return;

    this.renderFrameSuper(frameState);
};