MMSDT.densityMap()
利用动环监控设备,实时形成立体的热力图谱。
Tips:可自行设置任意等级的阈值和其对应的颜色,与密度图使用同一个构造函数。
构造函数
MMSDT.densityMap( option:object )
x - 数组数字,x轴的最大边界,x轴的最小边界。
z - 数组数字,z轴的最大边界,z轴的最小边界。
y - 数组数字,立体热力图的高度(高低值相同则无立体高差)。
opacity - 浮点数字,最大透明度。
visible - 布尔值,默认是否显示。
accuracy - 数字,取样精度(像素点大小,越大越精细)。
ranges - 数字,影响范围(半径,按热力图的像素点大小计算)。
maxValue - 数字,最大值(例如达到该值为红色)。
colorStep - 对象,0~1阈值范围及对应的颜色。
属性
.updateColors( position )
更新密度数据,position 二维数组,所有人员的地理位置坐标[x,y,z,value]。可自定义更新频率。
.visible( Boolean )
是否显示或隐藏,Boolean 布尔值。
代码示例
var MMS3D_exceptionMesh = []; //需要材质拆分的网格
var MMS3D_instancingMesh = ["Sc46134_2","Sc46753_2","Sc46264_2"]; //合并实例化网格
//初始化场景
MMSDT.initScene( false, MMS3D_exceptionMesh, MMS3D_instancingMesh );
camera.near = 5; //相机最近距离,小于该距离则事物不可见
camera.updateProjectionMatrix(); //重新设置后更新
//设置第3人称鼠标控制器
controls3.maxPolarAngle = Math.PI*0.495; //向下,最大角度限制
controls3.maxDistance = 500; //最远距离限制
controls3.screenSpacePanning = false; //右键平移是否上下移动
controls3.enableDamping = true; //是否开启惯性阻尼
controls3.dampingFactor = 0.1; //惯性阻尼系数
//使用json文件让场景还原
MMSDT.onloadScene( "models/mms3D_jianyu1.json", function(progress){
if( progress == 'done' ){
//加载完成,播放动画
for( var i=0; i<actions[0].length; i++ ){
actions[0][i].play();
actions[0][i].timeScale = 0.5;
}
}else if( progress == 'ok' ){
//渲染完成
onloadDone();
}else{
//显示进度条数字
document.getElementById("loadNum").innerHTML = Math.round( progress )+'%';
}
});
//设置密度图参数
var options = {
x: [ 270,-270 ], //x轴的最大边界,x轴的最小边界
z: [ 270,-190 ], //z轴的最大边界,z轴的最小边界
y: [70,0], //密度图的高度(高低值相同则无立体高差)
opacity: 0.8, //透明度
visible: true, //默认是否显示
radius:60, //影响范围(半径,按热力图的像素点大小计算)
accuracy: 0.5, //取样精度(像素点大小,越大越精细)
maxValue: 100, //最大值(例如达到该值为红色)
colorStep: { //颜色等级,0~1对应的颜色值
1.0: '#ff0000',
0.8: '#fff000',
0.6: '#00ff00',
0.4: '#0066ff',
0.2: '#0000ff'
}
}
var densityMap = new MMSDT.densityMap(options); //初始化密度图
var monitorPoints=[]; //监测点位
//场景加载完成
function onloadDone(){
//读取json设备信息并加载图标
MMSDT.getJson( "models/equip_jianyu2.json", function(dataJson){
//读取设备点位
for( var i=0; i<dataJson.model.length; i++ ){
dataJson.model[i].position.push(40+i*10); //随便设置一个热力图的值
monitorPoints.push( dataJson.model[i].position ); //存储监测点坐标及对应的值
}
//更新热力图
densityMap.updateColors( monitorPoints );
//添加环控器设备图标
var options2 = {
dirUrl: 'models/equip/', //安装目录
scale: 0.7, //缩放比例
height: 10, //相对高度
visible: true, //默认显示
animate: true, //上下浮动
flash: false, //张弛闪动
lookAt: true, //是否垂直约束
color: 0x1197ff, //默认颜色
}
var iotIcon = new MMSDT.addIcon( dataJson, options2);
});
}
//自定义对外函数接口------------------------------------------------------------------------
//显示隐藏
MMAPI.mapVisible = function(Boolean){
densityMap.visible(Boolean);
}
//更改颜色值(点位数组下标,新的值)
MMAPI.changeValue = function( list, value ){
monitorPoints[list][3] = value;
densityMap.updateColors( monitorPoints );
}
点击查看示例演示 →
Powered by mms3D