【问题标题】:OL3: force redraw layerOL3:强制重绘图层
【发布时间】:2014-05-09 18:16:19
【问题描述】:

我目前正在使用新版本的 OpenLayers OL3 升级 OpenLayers 客户端版本 2.13.1。我的设置包括作为 WMS 映射服务器的 Mapserver 和前面提到的 OpenLayers 客户端。

在旧系统中,我支持用户交互,如果用户单击地图的某些部分,则地图文件会再次生成,因此我强制重绘图层以使地图的某些部分着色。 OL2版本代码示例:

$.ajax({
  params: ...
  success: function (data) {
    if (data.success) {
      gisLayer.redraw(true);
    }
  }
});

我想在 OL3 中获得相同的功能,但没有重绘功能。我发现了两个有用的功能,但为了获得相同的功能,还需要做一些额外的事情: - layer.getSource().updateParams(params);和 - map.render();

我还创建了一个稍微复杂一点的示例,在该示例中我可以让代码正常工作,但是获取 WMS 切片的请求包含附加参数作为获取唯一请求的关键。示例代码如上:

var params = layer.getSource().getParams();
params.t = getUniqueParam();
layer.getSource().updateParams(params);

好的,情况就是这样,我只想问是否有任何可用的功能,可以强制重绘图层,而无需在 WMS 请求中添加额外的参数? AFAIK的“问题”是浏览器缓存图像,如果请求相同,那是以前,浏览器再次显示旧图像。

感谢您的帮助。

【问题讨论】:

    标签: javascript openlayers openlayers-3


    【解决方案1】:

    你能检查一下这是否有效吗?

    yourLayerSource.dispatchChangeEvent(); 
    

    【讨论】:

    • 在OL3.5中,我用过source.dispatchEvent('change')
    【解决方案2】:

    以上方法都不适合我,我也一起尝试了所有方法:

    var params = yourLayer.getSource().getParams();
    yourLayer.getSource().updateParams(params);
    yourLayer.getSource().dispatchChangeEvent(); 
    map.render();
    

    什么都没有发生,没有重绘,没有网络请求(无论是否缓存)......文档对此真的很糟糕。我试图检查平移时引发的事件的源代码,但有点无法理解......

    编辑:我设法让它工作!

    $(document).ready(function(){
        map.once("postcompose", function(){
            //start refreshing each 3 seconds
            window.setInterval(function(){
                // call your function here
                var params = yourLayer.getSource().getParams();
                params.t = new Date().getMilliseconds();
                yourLayer.getSource().updateParams(params); 
            }, 3000);
        });
    });
    

    【讨论】:

    • getParams() 在 3.0.0 版本中不受支持。
    • 似乎只有 ol.source.ImageMapGuide、ol.source.ImageWMS、ol.source.TileWMS 支持 getParams,或者至少这些是当前文档中的来源。
    • 哦,是的,对不起。我假设使用 ImageWMS 或 TileWMS,因为这些是我使用的层(因为开始讨论是关于 WMS 层)。您改用哪个层?
    • 在为此发布 WMS 服务时我们需要做些什么吗?喜欢任何额外的属性?
    • 不,绝对。上面的代码应该足以刷新层(至少在当时可用的 OL3 版本)
    猜你喜欢
    • 2015-12-27
    • 2011-02-11
    • 2011-09-21
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多