HeatMap实现过程

参考文档

  1. heatm.js
    官网
    API
    示例

  2. arcgis js
    arcgis热力图实现示例

主要实现过程

设置透明度与渐变色是一个关键的地方

Description
This is a custom DynamicMapServiceLayer for Heatmap.js to work with the ArcGIS Javascript API.

Instructions
Include the heatmap.js and heatLayer.js files in your HTML document.
        <script type="text/javascript" src="src/heatmap.js"></script>
        <script type="text/javascript" src="src/heatmap-arcgis.js"></script>

Add a div with an ID to hold he canvas element
<div id="heatLayer"></div>
Create the heatmap with it's settings and assign it to a global variable.
        heatLayer = new HeatmapLayer({
            config: {
                "useLocalMaximum": true,
                "radius": 40,
                "gradient": {
                    0.45: "rgb(000,000,255)",
                    0.55: "rgb(000,255,255)",
                    0.65: "rgb(000,255,000)",
                    0.95: "rgb(255,255,000)",
                    1.00: "rgb(255,000,000)"
                }
            },
            "map": map,
            "domNodeId": "heatLayer",
            "opacity": 0.85
        });

Add the heatLayer to the map.
        map.addLayer(heatLayer);

Now you just need to add data points to the heatmap. In the example above, I am adding features from a feature layer of trees. Here's an example with two features.
        var data = [
            {
                attributes: {},
                geometry: {
                    spatialReference: {wkid: 102100}
                    type: "point"
                    x: -13625078.0408
                    y: 4548494.332400002
                }
            },
            {
                attributes: {},
                geometry: {
                    spatialReference: {wkid: 102100}
                    type: "point"
                    x: -13625078.0408
                    y: 4548494.332400002
                }
            }
        ];

        heatLayer.setData(data);

I created a function that executes on map pan that gets all the features from a featureLayer within the map's extent.
function getFeatures() {
    // set up query
    var query = new esri.tasks.Query();
    // only within extent
    query.geometry = map.extent;
    // give me all of them!
    query.where = "1=1";
    // make sure I get them back in my spatial reference
    query.outSpatialReference = map.spatialReference;
    // get em!
    featureLayer.queryFeatures(query, function (featureSet) {
        var data = [];
        // if we get results back
        if (featureSet && featureSet.features && featureSet.features.length > 0) {
            // set data to features
            data = featureSet.features;
        }
        // set heatmap data
        heatLayer.setData(data);
    });
}

描述
这是一个用于Heatmap.js的自定义DynamicMapServiceLayer,可用于ArcGIS Javascript API。

说明
在HTML文档中包含heatmap.js和heatLayer.js文件。
        <script type =“text / javascript”src =“src / heatmap.js”> </ script>
        <script type =“text / javascript”src =“src / heatmap-arcgis.js”> </ script>

添加一个带ID的div来保存他的画布元素
<div id =“heatLayer”> </ div>
用它的设置创建热图并将其分配给全局变量。
        heatLayer = new HeatmapLayer({
            配置:{
                “useLocalMaximum”:true,
                “半径”:40,
                “渐变”:{
                    0.45:“rgb(000,000,255)”,
                    0.55:“rgb(000,255,255)”,
                    0.65:“rgb(000,255,000)”,
                    0.95:“rgb(255,255,000)”,
                    1.00:“rgb(255,000,000)”
                }
            },
            “地图”:地图,
            “domNodeId”:“heatLayer”,
            “不透明度”:0.85
        });

将heatLayer添加到地图。
        map.addLayer(heatLayer);

现在您只需要将数据点添加到热图。在上面的示例中,我将从树的要素图层添加要素。这里有两个功能的例子。
        var data = [
            {
                属性:{},
                几何:{
                    spatialReference:{wkid:102100}
                    键入:“点”
                    x:-13625078.0408
                    y4548494.332400002
                }
            },
            {
                属性:{},
                几何:{
                    spatialReference:{wkid:102100}
                    键入:“点”
                    x:-13625078.0408
                    y4548494.332400002
                }
            }
        ]。

        heatLayer.setData(数据);

我创建了一个在地图上执行的函数,它可以从地图范围内的featureLayer中获取所有要素。
函数getFeatures(){
    //设置查询
    var query = new esri.tasks.Query();
    //只在范围内
    query.geometry = map.extent;
    //给我所有的人!
    query.where =“1 = 1;
    //确保我将它们还原到我的空间参考中
    query.outSpatialReference = map.spatialReference;
    // 抓住他们!
    featureLayer.queryFeatures(query,function(featureSet){
        var data = [];
        //如果我们得到结果
        if(featureSet && featureSet.features && featureSet.features.length> 0){
            //将数据设置为要素
            data = featureSet.features;
        }
        //设置热图数据
        heatLayer.setData(数据);
    });
}

文档资料

  1. Geohey中的热力图实现
  2. 百度地图热力图
    百度地图热力图 是用不同颜色的区块叠加在地图上实时描述人群分布、密度和变化趋势的一个产品,是基于百度大数据的一个便民出行服务。
  3. arcgis pro 热力图的制作
  4. arcgis api for js 热力图优化篇-不依赖地图服务https://zhuanlan.zhihu.com/p/31345741
  5. 热力图效果 https://zhuanlan.zhihu.com/p/25449808
  6. openlayers demo 热力图
  7. 百度地图 demo
  8. leaflet demo 热力图
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cesium是一个用于创建地球、地图和空间场景的开源JavaScript库。它提供了丰富的功能和可视化效果,可以在Web浏览器中实现高性能的地理信息展示。而heatmap是一种热力图的数据可视化技术,用于显示密度数据的空间分布情况。 在Cesium中使用heatmap可以通过添加heatmap.js插件来实现。首先,你需要引用heatmap.min.js文件。然后,你可以创建一个热力图,并将其填充到一个矩形盒子中,以纹理的形式显示在地图上。 一个示例的过程如下: 1. 首先,你需要创建一个热力图,可以使用heatmap.js提供的功能。具体的方法可以参考heatmap.js的文档。 2. 然后,在Cesium中创建一个矩形盒子,可以使用Cesium提供的RectangleGeometry和RectangleGeometryInstance来创建。你可以指定矩形的位置和大小。 3. 将热力图作为纹理应用到矩形盒子上,可以使用Cesium的Texture.fromCanvas2D方法将热力图转换为纹理,并将其应用到矩形盒子的材质上。 通过上述步骤,你可以将热力图以纹理的形式显示在Cesium的地图上,并解决了在贴到矩形上会有黑色背景的问题。你可以根据需要创建多个热力图,并将它们分别应用到不同的矩形盒子上,以展示不同区域的热力分布情况。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [cesium热力图](https://download.csdn.net/download/sinat_20260543/10593244)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [cesium中实现热力图](https://blog.csdn.net/sinat_32857543/article/details/107158171)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值