我目前正在使用新版本的OpenLayers OL3升级OpenLayers客户端版本2.13.1。我的设置包括作为WMS映射服务器的Mapserver和前面提到的OpenLayers客户端。
在旧系统中,我支持用户交互,如果用户单击地图的某个部分,则会再次生成映射文件,因此我会强制重绘层以使地图的某些部分着色。OL2版本的代码示例:
$.ajax({
params: ...
success: function (data) {
if (data.success) {
gisLayer.redraw(true);
}
}
});我想在OL3中获得相同的功能,但没有重绘功能。
示例代码如下:
var params = layer.getSource().getParams();
params.t = getUniqueParam();
layer.getSource().updateParams(params);好了,这就是情况,我想问的是,是否有任何可用的功能,可以强制层被重新绘制,而不需要在WMS请求中添加额外的参数?AFAIK的“问题”是浏览器缓存图像,如果请求是相同的,也就是之前,浏览器会再次显示旧图像。
谢谢你的帮助。
发布于 2014-06-10 19:30:06
你能检查一下这样做是否有效吗?
yourLayerSource.dispatchChangeEvent(); 发布于 2014-10-08 21:15:09
上面的方法对我都不起作用,我也尝试了所有的方法:
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);
});
});https://stackoverflow.com/questions/22744112
复制相似问题