问题:在做疫情分析时,疫情点采用cluster动态聚集,对于有肺炎患者的地方,通过overlay的方式显示动态闪烁点,但是由于疫情点是动态聚集的,在不同的级别,聚集点不同,下一次聚集时,有肺炎患者的点被聚集到另一个聚集点中,但是预警闪烁点的位置还在原地,这样就造成预警点不在有肺炎患者的聚集点中。
解决办法:当新出现肺炎患者点,将其加入到聚集图层中,同时添加overlay 预警点,并将肺炎患者点的实际id和位置保存到overlay的属性中。
1、新出现肺炎患者点,将其加入到聚集图层中(这是是加入到数据中,情况图层数据,再统一加载新的数据)
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
var id = row.resourceid;
var val = row.temperature;
var region = row.retrievalRegion;
var pnt = [ row.channelLongitude, row.channelLatitude];
var fea = new ol.Feature(new ol.geom.Point(pnt))
fea.setId(id);
fea.setProperties(row);
feas.push(fea);
}
var sr = this.clusterLyr.getSource().getSource();
sr.clear();
sr.addFeatures(feas);//聚类要素展示数据
sr.refresh();
2、同时添加overlay 预警点,并将肺炎患者点的实际id和位置保

在使用OpenLayers进行疫情分析时,动态聚集的疫情点可能导致预警marker位置偏移。当疫情点聚集变化时,原本显示肺炎患者的预警点未随之更新。为解决此问题,可以在新出现肺炎患者点时将其加入聚集图层,并添加overlay预警点,同时保存实际id和位置。在样式函数中处理聚类,并在聚类函数中根据预警点的资源id找到最近的聚集点,更新预警overlay的位置和半径。
最低0.47元/天 解锁文章
4879

被折叠的 条评论
为什么被折叠?



