实现效果:

原理:使用heatmap.js插件,先生成一个热力图,再在地图上创建一个盒子(如矩形),以纹理的形式把热力图填充到矩形中。

  1、首先下载heatmap.js插件,自己随意写了一个热力图的方法,传入热力图所需参数max和data

// 创建热力图
function createHeatMap(max, data) {// 创建元素var heatDoc = document.createElement("div");heatDoc.setAttribute("style", "width:1000px;height:1000px;margin: 0px;display: none;");document.body.appendChild(heatDoc);// 创建热力图对象var heatmap = h337.create({container: heatDoc,radius: 20,maxOpacity: .5,minOpacity: 0,blur: .75,gradient: {'0.9':'red','0.8':'orange','0.7':'yellow','0.5':'blue','0.3':'green',},});// 添加数据heatmap.setData({max: max,data: data});return heatmap;
}

    2、创建一个cesium视图对象

var viewer = new Cesium.Viewer("viewer");

    3、在之前建的cesium视图中,创建一个矩形(也可是椭圆、正方形、多边形等),在矩形内以纹理的形式填充,自己随意封装了一个方法

// 创建正方形 绑定热力图
function createRectangle(viewer, coordinate, heatMap) {viewer.entities.add({name: 'Rotating rectangle with rotating texture coordinate',show: true,rectangle: {coordinates: Cesium.Rectangle.fromDegrees(coordinate[0], coordinate[1], coordinate[2], coordinate[3]),material: heatMap._renderer.canvas // 核心语句,填充热力图}});
}

    4、随意生成多个点数据

// 生成len个随机数据
function getData(len) {//构建一些随机数据点var points = [];var max = 0;var width = 1000;var height = 1000;while (len--) {var val = Math.floor(Math.random() * 1000);max = Math.max(max, val);var point = {x: Math.floor(Math.random() * width),y: Math.floor(Math.random() * height),value: val};points.push(point);}return {max: max, data: points}
}

5、使用上述方法,则生成热力图

// 第一个热力图
var coordinate1 = [-109.0, 10.0, -80.0, 35.0];
var heatMap1 = createHeatMap(getData(1000).max, getData(1000).data);
creatRectangle(viewer, coordinate1, heatMap1);// 第二个热力图
var coordinate2 = [-109.0, 30.0, -80.0, 41.0];
var heatMap2 = createHeatMap(getData(3000).max, getData(3000).data);
creatRectangle(viewer, coordinate2, heatMap2);// 第三个热力图
var coordinate3 = [-109.0, 41.0, -80.0, 50.0];
var heatMap3 = createHeatMap(getData(5000).max, getData(5000).data);
creatRectangle(viewer, coordinate3, heatMap3);

cesium中实现热力图相关推荐

  1. Cesium中实现立体热力图

    Cesium中实现立体热力图 热力图 在Cesium中实现热力图网上有较为成熟的案例,可参考 CesiumHeatmap . 其原理是根据经纬度范围计算 canvas 大小,并将经纬度转化为 canv ...

  2. Cesium 中两种添加 model 方法的区别

    概述 Cesium 中包含两种添加 model 的方法,分别为: 通过 viewer.entities.add() 函数添加 通过 viewer.scene.primitives.add() 函数添加 ...

  3. Cesium中Clock控件及时间序列瓦片动态加载

    前言 前面已经写了两篇博客介绍Cesium,一篇整体上简单介绍了Cesium如何上手,还有一篇介绍了如何将Cesium与分布式地理信息处理框架Geotrellis相结合.Cesium的强大之处也在于其 ...

  4. Cesium中的坐标系及转换

    在我们开始学习Entity之前,我们首先需要先学习下Cesium中的坐标系,Cesium中有多个坐标系,在进行添加Entity时经常会使用到. 一.坐标系介绍 我们先来列举下Cesium中的坐标系:W ...

  5. Cesium中Homebutton改变默认跳转位置 【转】

    在Cesium中,Homebutton的默认跳转位置是美国,那么在开发中我们如何更改这个默认跳转位置呢,这就要更改一下源代码了: Camera.DEFAULT_VIEW_RECTANGLE = Rec ...

  6. Cesium中的儒略日JulianDate

    在天文和卫星轨道计算中,有关儒略日的计算是一个绕不开的话题.本章阐述下Cesium中有关儒略日的处理方法. 涉及到的时间系统,如UTC,TAI等,这里不再详细阐述,读者自行阅读专业书籍或者网上查询. ...

  7. Cesium中绘制矩形,根据四角/对角坐标绘制矩形

    Cesium中绘制矩形,根据四角/对角坐标绘制矩形 import store from '@/store/index' import * as Cesium from 'cesium'export d ...

  8. Cesium中的相机—旋转矩阵

    在学习坐标旋转的时候,一不小心就会把坐标系的旋转和矢量的旋转弄错,这里给出详细的两种旋转过程: 两种旋转矩阵的定义 下面仅以绕Z轴旋转为例,给出两种旋转的过程定义. 坐标系旋转,点不变(见下左图) 两 ...

  9. Cesium中添加entitie模型,实现贴地。

    1.Cesium中添加entitie模型,实现贴地. 2. 添加模型 const createModel = (url) => {const entity = viewer.entities.a ...

  10. Cesium中使用Sampler3D,3D纹理,实现体渲染

    Cesium中使用Sampler3D,3D纹理,实现体渲染 Cesium目前(20221231)还不支持直接使用3D纹理,但是其实内部已经可以WebGL2,而且内置常量也有3DTexture.所以,可 ...

最新文章

  1. 干货丨不可错过的大数据学习资源推荐
  2. [django]模板中自定义变量django模板中的变量
  3. springboot2自定义HttpTraceRepository
  4. Linux 访问权限
  5. 成功解决TypeError: __init__() got an unexpected keyword argument 'n_iterations'
  6. MyBatis全局配置文件介绍
  7. 未能加载文件或程序集“System.Data.SQLite, Version=1.0.96.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139...
  8. leetcode--114 二叉树展开为链表
  9. Linux常用的网络命令笔记
  10. 没了IDE,你的Java项目还能Run起来吗~
  11. java 之 状态模式(大话设计模式)
  12. Productivity Power Tools(Visual Studio 扩展) 最新亮点
  13. 贴一篇以前写的产品推广旧文
  14. xtwpro2编程器_XTW100编程器驱动软件
  15. Quartus II软件 基本使用(一)仿真一位全加器
  16. excel筛选排序从小到大_excel多条件筛选函数 用Excel函数实现排序与筛选的方法...
  17. SQL error OCI Error 2003 问题处理
  18. 金融工程 | 远期与期货概述
  19. 应该怎么学大数据?该从哪学起?
  20. 每周读书#2 - 《程序员的成长课》

热门文章

  1. 去掉小数点后多余的0
  2. 若依管理系统漏洞利用
  3. oracle 怎么写报表,Oracle reports提供的六种风格报表格式
  4. 英媒:“宫保鸡丁”有了官方译法
  5. 泰勒(Taylor)展开式(泰勒级数)
  6. 惠普打印机爆远程命令执行漏洞,黑客可任意操纵你的打印机
  7. ubuntu mysql的my.cnf_Ubuntu下面MySQL的参数文件my.cnf浅析
  8. 转载.NET技术-.NET各大网站-编程技术网址 - Road - 博客园
  9. 针孔相机的标定原理与实现
  10. [Tableau] 销售团队绩效分析与相关策略指导