0
点赞
收藏
分享

微信扫一扫

openlayers4 入门开发系列之热力图篇(附源码下载)

前言

内容概览

本篇的重点内容是利用 openlayers4 实现热力图功能,效果图如下:


实现思路

  • 热力图界面设计
//热力图
"<div style='height:25px;background:#30A4D5;margin-top:2px;width: 98%;margin-left: 3px;'>" +
              "<span style='margin-left:5px;font-size: 13px;color:white;'>热力图</span>" +
         "</div>" +
        '<div id="heatmapFeatureLayer" style="padding:5px;">' +
             '<div style="float:left;">' +
             '<input type="checkbox" name="heatmapFeatureLayer"  id="heatmap1" style="width: 15px;height: 15px;vertical-align: middle;margin: auto;"/>' +
             '<label style="font-weight: normal;vertical-align: middle;margin: auto;">热力图</label>' +
             '</div>' +
'</div>' +

  • 热力图点击事件
//加载热力图
$("#heatmapFeatureLayer input").bind("click", function () {
            if (this.checked) {
                if(!bxmap.olHeatMap.isLoad){
                    bxmap.olHeatMap.Init(bmap);
                } else{
                    bxmap.olHeatMap.showHeatMapLayer();
                }
                //图例面板显示
                $("#map_tl").css("display","block");
                $("#map_tl>img").attr('src', getRootPath() +"js/main/olHeatMap/lend_dz.png");
                $("#map_tl>img").css("width","165px");
                $("#map_tl>img").css("height","165px");
            }
            else {
                bxmap.olHeatMap.hideHeatMapLayer();
                //图例面板隐藏
                $("#map_tl").hide();
            }
})

  • 热力图初始化以及核心代码实现
Init:function(bmap){
        //加载热力图
        this.map = bmap.getMap();
        this.isLoad = true;
        this.initHeatMapLayer(dz);
    },
    /**
     * 初始化加载-热力图
     */
initHeatMapLayer:function(data){
               var num = data.features.length;
               if (num > 0) {
                   var features = new Array(num);
                   for (var i = 0; i < num; i++) {
                       var geo = data.features[i].geometry;
                       var coordinate = [geo.x, geo.y];
                           features[i] = new ol.Feature({
                           geometry: new ol.geom.Point(coordinate),
                           weight: data.features[i].attributes[field_dz]
                       });
                   }
                   this.loadHeatLayer(features);
               }
    },

更多的详情见GIS之家小专栏
文章尾部提供源代码下载,对本专栏感兴趣的话,可以关注一波

GIS之家作品:GIS之家
GIS之家源码咨询:咨询模式

举报

相关推荐

0 条评论