我正在将OpenLayers客户端版本2.13.1升级到新版本的OpenLayers,即OL3。我的设置包括将Mapserver作为WMS映射服务器和先前提到的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请求中添加额外参数?据我所知,“问题”在于浏览器会缓存图像,并且如果请求与之前相同,则浏览器会再次显示旧图像。
感谢任何帮助。
source.dispatchEvent('change')
。 - Alnitak