效果图
功能思路
1、从所有的点数据中获取到最大最小经纬度,构成热力的分布范围。
2、通过columnSide(正棱柱的边长)将分布范围分为一个个小正方形面(参考turf.squareGrid方法)
3、再分析点是否在小正方形中–判断面是否包含点,处理每个正方形的点数集(参考 turf.booleanPointInPolygon方法)。
4、根据每个正方形的点数量,判断点数量在colorindex(颜色渐变范围数组)控制棱柱的高度和棱柱颜色color(渐变颜色数组)
5、最后通过处理好的集合生成一个个柱型即可
不足之处
1、点数据过多不要在前端进行分析点–面包含的空间分析,消耗巨大;可以在后台进行分析,或使用数据库进行空间分析。
SELECT st_within(point(102.371,35.0040),ST_GeomFromText('POLYGON((
119.355814 26.058266,
119.355832 26.055913,
119.360018 26.055848,
119.360862 26.059191,
119.355814 26.058266))'));
#点在范围内返回1,不在的时候0
脚本代码调用
var heatcolum = new HeatColumn({viewer:viewer});
//添加柱型
function addColumn(){
var obj ={
id:"heatcolumn001",
pointdata:Columndata,
columnSide:10,//10米
columnfillList:{
//color:["#DEF6FF","#BFD9FF","#82B5FF","#4591FF","#0068FF"],
color:["#60F3AB","#00CCBC","#009AC0","#006FAF","#014289"],
colorindex:[5,10,15,20,25],
}
}
var outerrectangleobj = heatcolum.createsquareGrid(obj);
}