|
@@ -0,0 +1,160 @@
|
|
|
+// 创建app
|
|
|
+var app = new THING.App({
|
|
|
+ url: '/api/scene/0b75dc5f4460f22c329afd96',
|
|
|
+ // url: '/api/scene/ab93bd9640a9db05a4937351',
|
|
|
+ background: 'https://www.thingjs.com/static/images/background_img_03.png'
|
|
|
+});
|
|
|
+
|
|
|
+//设备列表
|
|
|
+var buildingStore;
|
|
|
+$.ajax({
|
|
|
+ type: "GET",
|
|
|
+ url:'/uploads/wechat/163607/file/杨浦16/buildingStore.json',
|
|
|
+ dataType: "json",
|
|
|
+ async: false,
|
|
|
+ success: function (data) {
|
|
|
+ console.log(data)
|
|
|
+ buildingStore = data.buildingStore
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
+app.camera.xAngleLimitRange = [0, 90];
|
|
|
+var campusUrl;//场景列表
|
|
|
+var dataObj = { progress: 0 }; // 场景加载进度条数据对象
|
|
|
+var loadingPanel; // 进度条界面组件
|
|
|
+var curCampus;//存放园区url路径
|
|
|
+var company_code;
|
|
|
+
|
|
|
+var buildingStore;
|
|
|
+var miniMapCtrl = null; // 小地图控件
|
|
|
+var webSocket;//webSocket
|
|
|
+var tileLayer1 = null; // 加入地图背景后选用的图层
|
|
|
+var box = null; // 鼠标点击第一人称行走按钮时,红色盒子提示
|
|
|
+var fpsCtrl = null; // 第一人称行走控件
|
|
|
+var cameraInitPos = null; // 进入第一人称行走前摄像机位置
|
|
|
+var fullScreenState = false; // 全屏
|
|
|
+var skyBox = null; // 天空盒
|
|
|
+var hiddenControlTimer = null; // 隐藏控制按钮计时器
|
|
|
+var showControlTimer = null; // 显示控制按钮计时器
|
|
|
+var cameraDistace = [];
|
|
|
+var building = null, mainPanle; // 建筑
|
|
|
+var restartTime = 5000; // 自动旋转停止后重启时间间隔
|
|
|
+var rotateTimer = null; // 自动旋转计时器
|
|
|
+//var baseURL = "http://47.103.74.123/ThingjsIcon/";
|
|
|
+var baseURL = "https://s3.ax1x.com/2021/01/28/";
|
|
|
+var filePath = '/uploads/wechat/5oiR5pyJ5pyA6ZW/55qE572R5ZCN5LiN5L+h5L2g5pWw5pWw/file/ScenePreview/';
|
|
|
+// 需要用到的外部文件
|
|
|
+var fileArr = [
|
|
|
+ "https://www.layuicdn.com/layui/layui.js",
|
|
|
+ 'https://www.layuicdn.com/layui/css/layui.css',
|
|
|
+ filePath + 'assets/css/index.css', // 功能按钮样式文件
|
|
|
+ filePath + 'assets/font-awesome-4.7.0/css/font-awesome.min.css', // 功能按钮字体样式
|
|
|
+ filePath + 'assets/css/myAlert.css', // 弹出框样式
|
|
|
+ filePath + 'assets/css/sweetalert2.min.css', // 弹出框样式
|
|
|
+ filePath + 'assets/js/sweetalert2.all.min.js', // 弹出框脚本
|
|
|
+ filePath + 'assets/js/myAlert.js', // 弹出框脚本
|
|
|
+ filePath + 'assets/js/posTransform.js', // 不同坐标系经纬度互相转换的脚本文件
|
|
|
+ filePath + 'assets/js/expandFloor.js', // 楼层展开脚本
|
|
|
+ '/guide/lib/echarts.min.js',
|
|
|
+ '/uploads/wechat/163607/file/杨浦16/removeMark.js',//清除标注脚本
|
|
|
+ '/uploads/wechat/163607/file/杨浦16/UIAnchor.js',//UI界面脚本
|
|
|
+ '/uploads/wechat/163607/file/杨浦16/FloorClick.js',//创建切换楼层脚本
|
|
|
+ '/uploads/wechat/163607/file/杨浦16/MainPanel.js',//公共工具功能脚本
|
|
|
+ '/uploads/wechat/163607/file/杨浦16/CreateHtml.js',//创建页面元素脚本
|
|
|
+ '/uploads/wechat/163607/file/杨浦16/public.js',//公共场景功能脚本
|
|
|
+ '/uploads/wechat/163607/file/杨浦16/ChangeScene.js',//场景切换脚本
|
|
|
+];
|
|
|
+
|
|
|
+/**
|
|
|
+ * 说明:加载外部文件
|
|
|
+ */
|
|
|
+THING.Utils.dynamicLoad(fileArr, function () {
|
|
|
+ app.on('load', function (ev) {
|
|
|
+ skyBox = app.skyBox; // 获取天空盒
|
|
|
+ app.level.change(ev.campus); // 切换至园区层级
|
|
|
+ ev.campus.azimuth = '180';
|
|
|
+ mainPanle = new MainPanel(app);// 界面的类
|
|
|
+ // setupNavpanel();
|
|
|
+ // creatFloorChoose(); //======================================本地数据测试===============================================
|
|
|
+ // 获取园区在CampusBuilder编辑时保存的地理位置
|
|
|
+ let tjsLnglat = app.root.defaultCampus.extraData;
|
|
|
+ if (tjsLnglat != undefined && tjsLnglat != null) {
|
|
|
+ tjsLnglat = tjsLnglat.coordinates;
|
|
|
+ if (tjsLnglat != undefined && tjsLnglat != null) {
|
|
|
+ tjsLnglat = tjsLnglat.split(",");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ ev.campus.extraData = { coordinates: "116.4641,39.98606" } // 园区绑定默认经纬度,地图才生效
|
|
|
+ }
|
|
|
+ createHtml(); // 创建html
|
|
|
+ restarRotate(); // 自动旋转
|
|
|
+
|
|
|
+ curCampus = ev.campus;
|
|
|
+ // 进入层级切换
|
|
|
+ app.level.change(ev.campus);
|
|
|
+ });
|
|
|
+});
|
|
|
+
|
|
|
+// 监听建筑层级的 LeaveLevel 事件
|
|
|
+app.on(THING.EventType.LeaveLevel, ".Building", function (ev) {
|
|
|
+ // 要进入的层级对象
|
|
|
+ var current = ev.current;
|
|
|
+ // 上一层级对象(退出的层级)
|
|
|
+ var preObject = ev.previous;
|
|
|
+ if (current.parent === preObject) {
|
|
|
+ removeMark();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ removeMark();
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
+/**
|
|
|
+ * 说明:注册事件
|
|
|
+ */
|
|
|
+function registerEvent() {
|
|
|
+ var _this = this
|
|
|
+ // 楼层横向展开按钮的点击事件,楼层展开只在建筑有2层或2层以上的楼层才会生效
|
|
|
+ $('#horizontalExpansion').on('click', function () {
|
|
|
+ stopRotate();
|
|
|
+ checkBtnActives(['#mapBg', '#sceneSetting']);
|
|
|
+ let expandState = building.getAttribute('expandState');
|
|
|
+ if ($(this).hasClass('active')) {
|
|
|
+ // 楼层横向展开关闭
|
|
|
+ if (expandState == 'horizontal') {
|
|
|
+ $(this).removeClass('active');
|
|
|
+ horizontalExpand(building, 'close');
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 楼层横向展开前应判断楼层是否处于垂直展开状态,是,则应先关闭垂直展开,然后横向展开
|
|
|
+ if (expandState != 'moving') {
|
|
|
+ $(this).addClass('active');
|
|
|
+ $('#verticalExpansion').removeClass('active');
|
|
|
+ if (expandState == 'vertical') {
|
|
|
+ verticalToHorizontal(building);
|
|
|
+ } else {
|
|
|
+ horizontalExpand(building, 'horizontal');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ restarRotate();
|
|
|
+ });
|
|
|
+ // 楼层垂直展开按钮的点击事件,楼层展开只在建筑有2层或2层以上的楼层才会生效
|
|
|
+ $('#verticalExpansion').on('click', function () {
|
|
|
+ stopRotate();
|
|
|
+ checkBtnActives(['#mapBg', '#sceneSetting']);
|
|
|
+ let expandState = building.getAttribute('expandState');
|
|
|
+ if ($(this).hasClass('active')) {
|
|
|
+ // 楼层垂直展开关闭
|
|
|
+ if (expandState == 'vertical') {
|
|
|
+ $(this).removeClass('active');
|
|
|
+ verticalExpand(building, 'close');
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 楼层垂直展开前应判断楼层是否处于横向展开状态,是,则应先关闭横向展开,然后垂直展开
|
|
|
+ if (expandState != 'moving') {
|
|
|
+ $(this).addClass('active');
|
|
|
+ $('#horizontalExpansion').removeClass('active');
|
|
|
+ if (expandState == 'horizontal') {
|
|
|
+ horizontalToVertical(building);
|
|
|
+ } else {
|