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 ().
openlayers
Alophind
fuente
fuente
Respuestas:
Así es como puede actualizar una fuente de vectores cada 5 segundos, desde un servicio web que devuelve características en un documento GeoJSON:
jQuery se usa aquí para solicitar los datos a través de Ajax (
$.ajax
), pero obviamente puede usar la biblioteca de su elección.Este fragmento de código también supone que las proyecciones del mapa son "EPSG: 3857" (web mercator) y que las coordenadas en los documentos GeoJSON son longitudes y latitudes.
fuente
vectorSource
ygeojsonSource
debe fusionarse?Sé que esta pregunta es antigua, pero finalmente encontré una solución para actualizar una capa en Openlayers 3.
Debe actualizar los parámetros de la fuente de la capa de esta manera:
fuente
updateParams
método; OL3.18.2 sólo muestra que paraImageArcGISRest
,ImageMapGuide
,ImageWMS
,TileArcGISRest
yTileWMS
, y no para, por ejemplo,ol.source.Vector
.Puede actualizar una capa WFS con
myLayer.getSource().clear()
.fuente
clear()
las características existentes se eliminarán del mapa de inmediato y solo se agregarán nuevamente después de recibir la respuesta HTTP. Esto es cierto tanto para especificar un valor paraVectorOptions#url
como paraVectorOptions#loader
. Para los datos en tiempo real, hacer manualmente algo de WebSockets o magia XHR y luego llamargetSource().clear()
seguidogetSource().addFeatures(...)
podría ser mejor para el usuario final.Con OL2 utilicé una estrategia de actualización de capa que no se ha agregado a OL3. A continuación se muestra una función de llamada automática que utilizará una solicitud ajax para obtener el GeoJSON y luego leerlo y agregarlo a una fuente.
Espero que esto ayude.
fuente
Esto funciona perfecto para capas:
según http://openlayers.org/en/latest/apidoc/ol.layer.Vector.html#changed
fuente
layer.changed();
funciona perfecto (ly) para las capas. La descripción de la documentaciónIncreases the revision counter and dispatches a 'change' event.
no es realmente útil. ¿Cómo responde el uso del método change () a la pregunta sobre cómo volver a dibujar el mapa cada 5 segundos?layer.changed();
no tuvo ningún efecto para mí, perosource.changed();
funcionó.No hay necesidad de actualizar explícitamente. Cada vez que actualiza el contenido de una capa, el mapa se actualiza solicitando una nueva representación del marco.
Para forzar manualmente la representación que tiene
map.render()
ymap.renderSync()
métodos.fuente