Equivalent of layer.redraw(true) in OpenLayers 3?
This is how you can refresh a vector source every 5 seconds, from a web service returning features in a GeoJSON document:
var vectorSource = new ol.source.Vector();
var geojsonFormat = new ol.format.GeoJSON();
window.setTimeout(function() {
$.ajax('http://example.com/data.json', function(data) {
var features = geojsonFormat.readFeatures(data
{featureProjection:"EPSG:3857"});
geojsonSource.clear();
geojsonSource.addFeatures(features);
});
}, 5000);
jQuery is used here for requesting the data through Ajax ($.ajax
), but you can obviously use the library of your choice.
This code snippet also assumes that the map's projections is "EPSG:3857" (web mercator) and that the coordinates in the GeoJSON documents are longitudes and latitudes.
I know that this question is old but i've finally found a solution to refresh a layer on openlayers 3.
You have to update params of the layer source like this:
var source = yourLayer.getSource();
var params = source.getParams();
params.t = new Date().getMilliseconds();
source.updateParams(params);
You can refresh a WFS layer with myLayer.getSource().clear()
.