Tengo una capa geojson en mi aplicación OL3 que quiero volver a dibujar cada 5 segundos (para mostrar el movimiento en el mapa).
Cómo lo hago ? No se pudo encontrar el equivalente de Layer.redraw ().
Tengo una capa geojson en mi aplicación OL3 que quiero volver a dibujar cada 5 segundos (para mostrar el movimiento en el mapa).
Cómo lo hago ? No se pudo encontrar el equivalente de Layer.redraw ().
Esta es la forma en que se puede actualizar en un vector de origen de cada 5 segundos, a partir de un servicio web de regresar características en un GeoJSON documento:
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 se utiliza aquí para solicitar los datos a través de Ajax ($.ajax
), pero, obviamente, puede utilizar la biblioteca de su elección.
Este fragmento de código, también se supone que el mapa de las proyecciones es "EPSG:3857" (web mercator), y que las coordenadas en el GeoJSON documentos son las longitudes y latitudes.
Sé que esta pregunta es antigua pero finalmente encontré una solución para actualizar una capa en Openlayers 3.
Tienes que actualizar los parámetros de la fuente de la capa de esta manera:
var source = yourLayer.getSource();
var params = source.getParams();
params.t = new Date().getMilliseconds();
source.updateParams(params);
Con OL2 usé una estrategia de actualización de capas que no se ha agregado a OL3. A continuación se muestra una función de auto llamada que usará una solicitud ajax para obtener el GeoJSON y luego leerlo y agregarlo a una fuente.
var yourSource = new ol.source.GeoJSON();
//add this source to a layer, the layer to a map with a view etc
...
//now fetch the data
var fetchData = function () {
jQuery.ajax(url,
{
dataType: 'json',
success: function (data, textStatus, jqXHR) {
yourSource.clear(); //remove existing features
yourSource.addFeatures(yourSource.readFeatures(data));
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(errorThrown);
}
});
//call this again in 5 seconds time
updateTimer = setTimeout(function () {
fetchData();
}, 5000);
};
fetchData(); //must actually call the function!
Espero que esto ayude.
I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.