首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OL3:强制重绘层

OL3:强制重绘层
EN

Stack Overflow用户
提问于 2014-03-30 20:40:36
回答 2查看 11.1K关注 0票数 7

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

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

代码语言:javascript
复制
$.ajax({
  params: ...
  success: function (data) {
    if (data.success) {
      gisLayer.redraw(true);
    }
  }
});

我想在OL3中获得相同的功能,但没有重绘功能。

示例代码如下:

代码语言:javascript
复制
var params = layer.getSource().getParams();
params.t = getUniqueParam();
layer.getSource().updateParams(params);

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

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2014-06-10 19:30:06

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

代码语言:javascript
复制
yourLayerSource.dispatchChangeEvent(); 
票数 5
EN

Stack Overflow用户

发布于 2014-10-08 21:15:09

上面的方法对我都不起作用,我也尝试了所有的方法:

代码语言:javascript
复制
var params = yourLayer.getSource().getParams();
yourLayer.getSource().updateParams(params);
yourLayer.getSource().dispatchChangeEvent(); 
map.render();

什么都没有发生,没有重画,没有网络请求(无论是否缓存)...关于这一点,文档真的很糟糕。我试着检入在平移时抛出的事件的源代码,但有点不可能理解……

编辑:我设法让它工作!

代码语言:javascript
复制
$(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);
    });
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22744112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档