Estoy tratando de implementar un mapa de calor de OpenLayers para visualizar algunos datos en un mapa. Mi objetivo es mostrar puntos de mapa de calor con pesos dados. Actualmente mi código poc se ve así:
const features = [ { lat: 46.934942, lon: 17.891804, id: 10, value: 6.5 }, { lat: 46.93489, lon: 17.892713, id: 11, value: 5.2 }, { lat: 46.934662, lon: 17.892331, id: 12, value: 5.9 }, ].map((item) => { const feature = createFeature({ lon: item.lon, lat: item.lat, id: `${item.id}`, customStyle: new olStyle.Style({ image: new olStyle.Circle({ radius: 5, fill: new olStyle.Fill({ color: "#AB1F58", }), }), }), }); feature.setProperties({ value: item.value }); return feature; }); const newLayer = new olLayer.Heatmap({ source: new olSource.Vector({ features, }), blur: 0, radius: 50, weight(feature) { return feature.getProperties().value / 10; }, }); map.addLayer(newLayer)Mi problema es que OpenLayers suma los valores cuando las características se superponen, pero me gustaría que el área de superposición tuviera el valor promedio .
¿Es esto posible o debo buscar otra solución?
Una forma en la que puedo pensar es mediante el uso de una fuente Cluster . Escriba su propia función createCluster para devolver una nueva característica con un valor promedio y mostrarla.