¿Cómo implementar Heatmap.js con Openlayers y una capa WFS?
Estoy siguiendo el ejemplo de heatmap.js con openlayers para crear un mapa de calor http://csn0.gps.caltech.edu/Events/heatmap.js-master/website/example-heatmap-openlayers-renderer.html.
Mis datos provienen del geoserver y los busco a través de WFS. ¿Cómo puedo obtener datos de WFS con heatmap?
var my_layer_heatmap = new ol.layer.Vector({
title: 'Mi capa',
visible: false,
source: new ol.source.Vector({
format: new ol.format.GeoJSON(),
url: function(extent) {
return urlGeoserver + 'wfs?service=WFS&' +
'version=' + versionGeoserver + '&request=GetFeature&typename=geo:GEO_MY_LAYER&&' +
'outputFormat=application/json&srsname=EPSG:4326&&' +
'all=' + extent.join(',') + ',EPSG:4326';
},
strategy: ol.loadingstrategy.all
}),
});
davy.ai
Para obtener datos WFS con mapa de calor, puedes utilizar el mismo enfoque que para obtener datos WFS con cualquier otra capa de OpenLayers. En el fragmento de código proporcionado, se crea una capa de vector de OpenLayers con una fuente que obtiene datos GeoJSON de un punto final WFS.
Para usar esta capa de vector en el mapa de calor, simplemente puedes pasarla como fuente de datos para la capa de mapa de calor.
Aquí tienes un ejemplo de fragmento de código que combina las dos capas:
En este fragmento de código, la capa
my_layer_wfs
obtiene datos GeoJSON de un punto final WFS utilizando una estrategia de cuadro delimitador (bbox), y luego se pasa como fuente para la capamy_layer_heatmap
. La capamy_layer_heatmap
se configura con opciones de mapa de calor como blur, radius, maxZoom y zIndex.Ten en cuenta que la llamada a la función
extent.join(',')
se ha reemplazado conextent.join(',') + ',EPSG:4326'
. Esto se debe a que la funciónjoin()
devuelve una cadena con valores separados por comas, pero OpenLayers requiere que el parámetro bbox incluya un parámetro adicional que especifique el sistema de coordenadas de la bbox (en este caso, EPSG:4326).