| 
					
				 | 
			
			
				@@ -1390,6 +1390,14 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 渲染的格式svg/canvas/html,svg性能更优,兼容性更好 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         renderer: "svg", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var currentTargetType="FAC";//当前视图对象类型。FAC:厂房 IN02:2号楼内部  IN03:3号楼内部 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //切换点列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var inPoints={ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "IN02":{"Text001_002":1,"x1":-28.07801,"y1":37.95126,"x2":-23.32394,"y2":31.16921}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "IN03":{"Text001_006":1,"x1":46.86921,"y1":24.87041,"x2":51.91054,"y2":17.87417}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "IN04":{"Text001_004":1,"x1":-38.46275,"y1":35.65208,"x2":-44.94122,"y2":28.22142}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "IN05":{"Text001_005":1,"x1":102.43050,"y1":38.96248,"x2":108.99212,"y2":30.86295} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     var sam0023; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     var modelsMap = {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     var modelsAlarmColorMap = {}; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1397,6 +1405,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     var ALARM_DEVS = [];  //未提醒的告警设备,将在模型加载完成时提醒 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     var OFFLINE_DEVS = {};  //未接入设备列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     var LoadServerDataTimer = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var zoomCount=0;//放大、缩小次数。为正表示放大次数,为负表示缩小次数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     var DataFill = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         devStopAutoLoadTimter: null,//停机原因自动切计时器 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         devAlarmAutoLoadTimter: null,//告警自动切计时器 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2327,6 +2336,22 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         isRTL: false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $(document).ready(function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $(window).on('wheel', function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 检查 event.originalEvent.deltaY 来判断滚动方向 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (event.originalEvent.deltaY > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                console.log('向下滚动:缩小'+zoomCount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                zoomCount = zoomCount>0?-1:zoomCount-1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(zoomCount<=-3 && currentTargetType!="FAC"){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    zoomCount=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //切换在全厂视图 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    loadFacModel(playerNative); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    backMasterViewByFac(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                console.log('向上滚动:放大'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                zoomCount = zoomCount<0?1:zoomCount+1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $.datepicker.setDefaults($.datepicker.regional['zh-CN']);  //设置日期控制语言 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $("#datepicker1").datepicker({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             dateFormat: "yy-mm-dd", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2747,8 +2772,36 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //最佳视图 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    function backMasterView() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    function backMasterView() {     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        zoomCount=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        switch(currentTargetType){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            case "FAC": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                backMasterViewByFac(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            case "IN02": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                backMasterViewBy02(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            case "IN03": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                backMasterViewBy03(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //全局厂房最佳视图 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    function backMasterViewByFac(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (AutoPlayer) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const img = $("#autoplayer_btn").find("img"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            img.attr("src", "image/auto3d_stop.png"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                player.Native.CameraAnimation.stop(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } catch (e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        player.Native.Camera.moveTo([235.678127000173, 13.38107286701451, 74.13573809425804], [-1248.3191825020908, -262.59031050373517, -409.93944372657353], [-0.30023176822741604, -0.055832565112502126, 0.9522308596238611], 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //2号楼内部最佳视图 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    function backMasterViewBy02() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (AutoPlayer) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const img = $("#autoplayer_btn").find("img"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             img.attr("src", "image/auto3d_stop.png"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2785,6 +2838,8 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         maxTimeout: 1000, // 会话超时时间,允许掉线后引擎保存多久,在该时间内可重新连接到会话,否则会创建新的会话 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         debug: false // 是否启用调试,开启后调用Native接口时会使用console.log进行记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var modelLoadState={};//模型加载状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var playerNative = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     var playerConnState = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     var reconntimer = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //2.[可选]监听连接成功消息 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2811,68 +2866,84 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         console.info(`用户长时间没有操作三维视图,会话即将退出,可调用player.resetTimer()取消退出`); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (!AutoPlayer) $("#autoplayer_btn").trigger('click') //开启自动漫游 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //6.监听远程过程调用加载完成消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    player.on("NativeLoad", async (Native) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        var devAllCount = 6 * 12 * 2 - 4 //设备总数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //var loadedcnt = document.getElementById("loadedcnt") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //var totalcnt = document.getElementById("totalcnt") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //totalcnt.innerText = devAllCount; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //loadedcnt.innerText="0"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        var cf = "data://models/ALL.pr"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        var t2File = "data://models/T2.pr"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //var SamplerFile = "data://models/sampler.pr"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // var errStr = await PlayerUtils.call(Native.NodeProxy.openProject, "data://pprj/test/test.pprj"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 加载工程模型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        var errStr = await PlayerUtils.call(Native.Model.loadModel, "all", cf); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //let cfInfo=await player.Native.Model.getInfo("all"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //player.Native.NodeProxy.setNodeRotation(cfInfo.nodePtr, [0,0,90]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        var rootItem = await player.Native.ModelTree.getRootItems() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        var rowItems = await player.Native.ModelTree.getSubItems(rootItem[0].item) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (var row = 0; row < rowItems.length; row++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (rowItems[row].name.length < 2 || rowItems[row].name.substr(0, 1) != "R") continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var devItems = await player.Native.ModelTree.getSubItems(rowItems[row].item) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (var i = 0; i < devItems.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (devItems[i].name.length < 2 || devItems[i].name.substr(0, 2) != 'C_') continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var tmp = devItems[i];// await player.Native.ModelTree.findItemByName(name,0,true,3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //计算当前设备在世界坐标 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var xyz = await player.Native.ModelTree.calcItemAabb(tmp.item) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var xyz2 = [(xyz.aabb.max[0] + xyz.aabb.min[0]) * 0.5, (xyz.aabb.max[1] + xyz.aabb.min[1]) * 0.5, (xyz.aabb.max[2] + xyz.aabb.min[2]) * 0.5]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // 创建设备编号标记 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                /* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var options = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    "text": devItems[i].name.replace("C_", "") + "#", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    "visible": true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    "maxLod": 110, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    "minLod": 0.1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    "textColor": parseInt("0xffffffff") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                options.pos = [xyz2[0] - 1.5, xyz2[1] - 3, 0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var markPtr = await player.Native.GisMarker.create(options); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                player.Native.GisMarker.update(markPtr, options); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                modelsMap[tmp.name] = {item: tmp.item, xyz: xyz2, rowno: rowItems[row].name.substr(1)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //初始化设备状态颜色 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ChangeModelAlarmState2(tmp.name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //创建指示灯标记 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                /* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var alarmColorMarker = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    "text": "●", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    "visible": true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    "maxLod": 110, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    "minLod": 0.1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    "textFontSize": 14, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    "textColor": parseInt("0xffffff00") //透明色 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    async function loadFacModel(Native){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await player.Native.Model.setModelVisible("IN02",false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await player.Native.Model.setModelVisible("IN03",false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await player.Native.Model.setModelVisible("IN04",false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await player.Native.Model.setModelVisible("IN05",false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        currentTargetType="FAC"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(modelLoadState[currentTargetType]==null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var cf = "data://models/T_ALL.pr"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var errStr = await PlayerUtils.call(Native.Model.loadModel, currentTargetType, cf); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            modelLoadState[currentTargetType] = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await player.Native.Model.setModelVisible(currentTargetType,true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        player.Native.CameraAnimation.clearKeyFrame(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    async function loadIn02Model(Native){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        currentTargetType="IN02"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await player.Native.Model.setModelVisible("FAC",false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(modelLoadState[currentTargetType]==null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var cf = "data://models/ALL.pr"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var errStr = await PlayerUtils.call(Native.Model.loadModel, currentTargetType, cf); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            modelLoadState[currentTargetType]=true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //let cfInfo=await player.Native.Model.getInfo("all"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //player.Native.NodeProxy.setNodeRotation(cfInfo.nodePtr, [0,0,90]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var rootItem = await player.Native.ModelTree.getRootItems() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //console.log(rootItem) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var rowItems = await player.Native.ModelTree.getSubItems(rootItem[0].item) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (var row = 0; row < rowItems.length; row++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (rowItems[row].name.length < 2 || rowItems[row].name.substr(0, 1) != "R") continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var devItems = await player.Native.ModelTree.getSubItems(rowItems[row].item) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (var i = 0; i < devItems.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (devItems[i].name.length < 2 || devItems[i].name.substr(0, 2) != 'C_') continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var tmp = devItems[i];// await player.Native.ModelTree.findItemByName(name,0,true,3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //计算当前设备在世界坐标 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var xyz = await player.Native.ModelTree.calcItemAabb(tmp.item) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var xyz2 = [(xyz.aabb.max[0] + xyz.aabb.min[0]) * 0.5, (xyz.aabb.max[1] + xyz.aabb.min[1]) * 0.5, (xyz.aabb.max[2] + xyz.aabb.min[2]) * 0.5]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // 创建设备编号标记 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    /* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var options = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        "text": devItems[i].name.replace("C_", "") + "#", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        "visible": true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        "maxLod": 110, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        "minLod": 0.1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        "textColor": parseInt("0xffffffff") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    options.pos = [xyz2[0] - 1.5, xyz2[1] - 3, 0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var markPtr = await player.Native.GisMarker.create(options); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    player.Native.GisMarker.update(markPtr, options); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    modelsMap[tmp.name] = {item: tmp.item, xyz: xyz2, rowno: rowItems[row].name.substr(1)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //初始化设备状态颜色 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ChangeModelAlarmState2(tmp.name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //创建指示灯标记 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    /* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var alarmColorMarker = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        "text": "●", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        "visible": true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        "maxLod": 110, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        "minLod": 0.1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        "textFontSize": 14, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        "textColor": parseInt("0xffffff00") //透明色 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    alarmColorMarker.pos = [xyz2[0] + 0.7, xyz2[1] - 3, 0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var colormarkPtr = await player.Native.GisMarker.create(alarmColorMarker); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    player.Native.GisMarker.update(colormarkPtr, alarmColorMarker); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    modelsAlarmColorMap[tmp.name] = {itemPtr: colormarkPtr, options: alarmColorMarker} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                alarmColorMarker.pos = [xyz2[0] + 0.7, xyz2[1] - 3, 0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var colormarkPtr = await player.Native.GisMarker.create(alarmColorMarker); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                player.Native.GisMarker.update(colormarkPtr, alarmColorMarker); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                modelsAlarmColorMap[tmp.name] = {itemPtr: colormarkPtr, options: alarmColorMarker} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //loadedcnt.innerText=totalcnt.innerText; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            MODEL_LOADED = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //loadedcnt.innerText=totalcnt.innerText; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        MODEL_LOADED = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (var i in ANIMATION_DATA) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 添加关键帧 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            player.Native.CameraAnimation.addKeyFrames([ANIMATION_DATA[i]]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await player.Native.Model.setModelVisible(currentTargetType,true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (ALARM_DEVS.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for (var i = 0; i < ALARM_DEVS.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var s = ALARM_DEVS[i].split(">") 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2883,11 +2954,16 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //获取在线设备列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         GetOnlineDev(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (var i in ANIMATION_DATA) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 添加关键帧 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            player.Native.CameraAnimation.addKeyFrames([ANIMATION_DATA[i]]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //6.监听远程过程调用加载完成消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    player.on("NativeLoad", async (Native) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        playerNative =Native; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var devAllCount = 6 * 12 * 2 - 4 //设备总数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //var loadedcnt = document.getElementById("loadedcnt") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //var totalcnt = document.getElementById("totalcnt") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //totalcnt.innerText = devAllCount; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //loadedcnt.innerText="0"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        loadFacModel(Native); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (document.getElementById("loading") != null) document.getElementById("loading").remove(true) //加载完成,移除Loading 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (document.getElementById("loading_a1") != null) document.getElementById("loading_a1").remove(true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //调整视角,使其达到最佳初始效果 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2913,6 +2989,33 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 点击事件一般仅用于浏览工具,在点选工具下无效 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Native.Tools.setCurrentTool("system.Browse"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Native.ModelTree.EventBrowseLClick.connect((event) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(currentTargetType=="FAC"){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var inTxt = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(inPoints[event.object.name]!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //进入楼层内部 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     inTxt = txt; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for (var txt in inPoints) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        var item = inPoints[txt]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if(event.pos[1]>= item["x1"] && event.pos[2]<= item["y1"] &&event.pos[1]<= item["x2"] && event.pos[2]>= item["y2"]){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            inTxt = txt; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(inTxt!=""){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    currentTargetType=inTxt; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    switch(inTxt){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        case "IN02": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            loadIn02Model(Native); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    backMasterView();                
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             updateInfo("LClick", event) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Native.ModelTree.EventBrowseRClick.connect((event) => { 
			 |