使用Openlayers4.6.5实现热力图展示

  三个月了马上,公司许诺的前端小伙伴还在路上……

          前天领导告诉我,你来搞一下热力图吧,当时我说,您还是另请高明吧,我也实在不是谦虚,你说我一个Java程序员,搞得了前端的东西嘛?!但领导说了,公司已经决定了,就由你来搞!所以我就念了两句诗:苟利公司生死以,岂因BUG避趋之!

         好了,既然接下来了,那就得做出来—老秦人可不喜欢饶舌,​更不喜欢听什么粗鄙之语!打开Openlayers4的API开始查…其实刚开始我也不知道热力图是个什么玩意儿。打开​百度搜索之,结果如下:

百度热力图的结果百度热力图的结果

​官方的例子有点扯淡了,后台需要返回XML格式的数据,好不习惯,然后我就在想能不能后台传List,然后我去前台展示,百度谷歌了一圈,还真能实现,下面是代码:

// add to the map

/**

* 往map里添加headmapLayer对象

* @param lon

* @param lat

* @param count

* @returns

*/

function drawHeatMap(lon,lat,count){

var heatMapData;

var heatMapLayer;

heatMapData = new ol.source.Vector();

// created for owl range of data

var coord = [lon, lat];

var lonLat = new ol.geom.Point(coord);

var pointFeature = new ol.Feature({

geometry: lonLat,

weight: 20 // e.g. temperature

});

heatMapData.addFeature(pointFeature);

//create the layer

heatMapLayer = new ol.layer.Heatmap({

source: heatMapData,

radius: count

});

map.addLayer(heatMapLayer);

}

/**

* 请求后台数据

* @param timeZone 统计范围

* @returns

*/

function initHeatMap(timeZone){

$.ajax({

method:’get’,

url:listUrl,

data:{timeZone:timeZone},

success:function(data){

debugger;

if(data.length > 0){

$.each(data,function(index,obj){

var lon = obj.lon;

var lat = obj.lat;

var count = obj.count;

drawHeatMap(lon,lat,count);

});

}

}

})

}

$(function(){

//初始化函数

map.getView().setCenter([115.58919000,35.1117100]);

initHeatMap(null);

})

/**

* change函数

* @returns

*/

$(“input[type=’radio’]”).change(function(){

//清除所有的类型为headmap的layer的source

map.getLayers().forEach(function(layer) {

if(layer instanceof ol.layer.Heatmap ){

layer.getSource().clear(true);

}

});

var timeZone = $(“input[type=’radio’]:checked”).val();

initHeatMap(timeZone);

})

 

地图初始化的代码就不贴了,就酱紫~完工,哈哈

转载自:https://blog.csdn.net/henrystern/article/details/81149027

You may also like...