new MMSDT.foldIcon

折叠IoT图标

对高密集、互相重叠遮挡的设备图标进行隐藏,并把信息归集到附近的点位上

参数

new MMSDT.foldIcon(distance)

distance: 默认距离系数,数字越大,图标折叠的范围越大

属性

.foldout = Boolean

图标折叠的功能开关,true开,false关

.exception(id)

id:数组,例外的id号,如异常的设备图标可以不折叠

代码示例

//读取设备的json配置文件 MMSDT.getJson( dirUrl+"models/equip.json", callbackEquip); function callbackEquip( dateJson ){ var parameter1 = { dirUrl: dirUrl, //安装目录 scale: 0.02, //设备模型大小缩放 visible: true, //默认显示 } MMSDT.addModel(dateJson, parameter1); //加载设备模型(参数、目录、缩放) var parameter2 = { dirUrl: dirUrl, //安装目录 scale: 1, //缩放比例 height: 4, //相对高度 color: 0x00baff, //默认颜色 visible: true, //默认显示 lookAt: false, //是否垂直约束 autoScale: false, //图标自动缩放(远大近小) } MMSDT.addIcon( dateJson, parameter2); } //折叠IoT图标(默认距离系数) var fold = new MMSDT.foldIcon(20); //鼠标事件 var eventMouse = []; var onMove = []; var outMove = function(){} var onDown = []; var onDouble = []; var moveColor = [0xff0000,0x00baff,true,true]; //移入颜色,移出颜色,设备是否变色,设备与图标变色是否相关联 //鼠标点击设备或图标 function goBack( dateJson, dblClick ){ console.log( dateJson ); } //鼠标移入移出设备或图标 var positions = [0,0,0]; function goBack2( dateJson ){ if( dateJson == "none"){ document.getElementById("info").style.display = "none"; }else{ document.getElementById("info").style.display = "block"; //显示div var more=""; //读取被折叠的设备信息 for( var i=0; i < dateJson.fold.length; i++ ){ more += "设备ID:" + dateJson.fold[i].id + "<br>"; } document.getElementById("info2").innerHTML = "设备ID:" + dateJson.id + "<br>" + more; //当前设备的三维坐标 positions = dateJson.position; } } //构建函数监听鼠标事件 MMSDT.mouseEvent( eventMouse, onMove, outMove, onDown, onDouble, moveColor, false, false, goBack, goBack2 ); //循环动画 animate(); function animate(){ requestAnimationFrame( animate ); //信息框跟随移动 let vector = MMSDT.mapped3to2( positions ); //得到二维坐标 document.getElementById("info").style.bottom = vector.y + 60 + "px"; //实时刷新二维div document.getElementById("info").style.left = vector.x -75 + "px"; } //使用MMAPI类,自定义外部函数接口 //图标折叠 MMAPI.foldout = function(value){ if( value == 0 ){ fold.foldout = false; }else if( value == 1 ){ fold.foldout = true; } } //例外图标(不折叠) MMAPI.exception = function(){ fold.exception([2611,2588,2613,2612,2601]); //例外的id号 }

在线演示