在cesium中實現熱力圖
剛開始接觸cesium,說實話,對於像我這類的小白來說,要想快速上手,確實有一定的難度,但是站在巨人的肩膀上,往往總會少走很多彎路。
原理:使用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);
6、效果如下,因為資料都是隨意新增的,所以效果不好,但是可以體現出能在cesium中實現熱力圖
ps:此文章僅供參考,大神勿噴
參考來源:https://blog.csdn.net/u013929284/article/details/71928173
相關文章
- 熱力圖生成演算法及其具體實現演算法
- react專案結合echarts,百度地圖實現熱力圖ReactEcharts地圖
- Web資料視覺化-手把手教你實現熱力圖Web視覺化
- 資料視覺化:淺談熱力圖如何在前端實現視覺化前端
- 你不知道的前端演算法之熱力圖的實現前端演算法
- PostgreSQL生成空間熱力圖SQL
- 使用Java實現在SQLserver中實現圖片的儲存JavaSQLServer
- idea中實現熱部署Idea熱部署
- 提-關於高德地圖熱力圖-問:地圖
- 在 Swoole 伺服器程式中如何實現壓力反饋伺服器
- Arcpy多執行緒熱力圖執行緒
- 【Cesium】新增廣告牌實體實現地點標記效果
- SpringBoot專案在IntelliJ IDEA中實現熱部署Spring BootIntelliJIdea熱部署
- canvas渲染熱力圖的一種方式Canvas
- 【 視覺化】熱力圖繪製原理視覺化
- 基於 URL 的縮圖在 Laravel 中的實現Laravel
- vue地圖視覺化 Cesium篇Vue地圖視覺化
- Cesium官方教程5--地形圖層
- 在 Java 中運用動態掛載實現 Bug 的熱修復Java
- 雲監控最佳實踐之-容器所有例項的熱力圖
- 在Delphi中實現圖片的旋轉、縮放 (轉)
- 基於chart.js繪製熱力圖JS
- 【筆記】相圖熱力學基本理論筆記
- 注意力機制在圖卷積中的應用卷積
- heatmap.js(熱力圖)原始碼解讀JS原始碼
- Cesium載入各種網際網路地圖地圖
- 在 GPUImage 中實現 ColorConversionGPUUI
- layui 中echarts實現圖表UIEcharts
- JFreeChart在Struts2中折線圖統計的實現
- 在CGI中實現session的想法和實現 (轉)Session
- 個推資料視覺化之人群熱力圖、訊息下發圖前端開發實踐視覺化前端
- 網站訪問來源熱力圖呈現的簡單資料視覺化網站視覺化
- 國外著名網站的眼球熱力圖、眼球跟蹤圖詳解網站
- 在Unity中實現手部跟蹤Unity
- 在Swift中實現撤銷功能Swift
- 在Go中如何實現併發Go
- 在 iOS 中實現方法鏈呼叫iOS
- 在 iOS 中實現區塊鏈iOS區塊鏈