Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OL3: force redraw layer

i am currently upgrading OpenLayers client version 2.13.1 with the new version of OpenLayers, OL3. My setup consist of Mapserver as a WMS mapping server and previously mentioned OpenLayers client.

In old system I made support for user interaction in the way that if a user click on some part of map, the mapfile gets generated again, and as a result I force to redraw layer to get some part of map colored. Example of the code in the OL2 version:

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

I want to get the same functionality in OL3, but there is no redraw function. I found two functions that are useful, but there is additional things to do in order to get the same functionality: - layer.getSource().updateParams(params); and - map.render();

I also created a little bit more complicated example, in which I get code to working, but the requests for getting WMS tiles contains additional parameter as a key to get requests unique. The example code is above:

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

Ok, That is the situation, all I want to ask is if there is any function available, that can force layers to be redrawn, without adding aditional parameter in the WMS requests? AFAIK the "problem" is that browser cache images, and if the request is the same, that was before, browser shows old images again.

Thanks for any help.

like image 644
user2473933 Avatar asked Mar 30 '14 12:03

user2473933


1 Answers

Can you check if this does the trick?

yourLayerSource.dispatchChangeEvent(); 
like image 129
Danny Hoek Avatar answered Oct 03 '22 12:10

Danny Hoek