1. 创建场景

// 加载ThingJS示例园区
var app = new THING.App({// 场景地址url: 'https://www.thingjs.com/static/models/factory',  // 场景地址// 背景颜色background: '#000000',// env: 'Seaside',// 天空盒子skybox: 'BlueSky',
});

2.  加载地图

var app = new THING.App(); // 3D场景初始化app.background = [0, 0, 0]; // 设置场景背景为黑色//引用地图组件脚本
THING.Utils.dynamicLoad(['https://www.thingjs.com/uearth/uearth.min.js'], function () {app.create({type: 'Map',// 加载的地图路径url: '',// 初始化完成的函数回调complete: function (event) {console.log(event.object.userLayers.length);//日志窗口显示地图层级数量}});
});

3. 创建和销毁物体

var app = new THING.App({skyBox: "BlueSky",
}); // 3D场景初始化,设置天空盒// 添加ThingJS示例园区
var campus1 = app.create({// 物体类型type: "Campus",// 物体资源的路径url: "models/factory",// 在世界坐标系下的位置,系统默认位置为 [0, 0, 0]position: [0, 0, 0],id: 11,name: 'name',// 物体加载完成后的回调complete: function (ev) {console.log("Campus created: " + ev.object.id);}
});//添加粮仓园区
var campus2 = app.create({type: "Campus",url: "models/silohouse",position: [50, 0, -150],complete: function (ev) {console.log("Campus created: " + ev.object.id);}
});// 创建多个物体// 创建按钮,点击按钮可销毁物体
var button = new THING.widget.Button('销毁物体', function() {obj.destroy();
});// 创建Marker且添加点击事件
app.create({type: 'Marker',parent: build,inheritScale: false,element: _this.create_element(build),// scale: [1, 1, 1],localPosition: [0, 8, 0],pivot: [0.5, 1] //  [0,0]即以界面左上角定位,[1,1]即以界面右下角进行定位
}).on("click", function() {console.log(12345678)
});

4. 通过load事件加载园区

app.on('load', function (ev) {//获取园区对象var campus = ev.campus; // 获取园区下的建筑对象var buildings = campus.buildings;
})

5. 按属性查询物体

app.on('load', function () {new THING.widget.Button('按id查询', queryById);new THING.widget.Button('按物体类型查询', queryByType);
new THING.widget.Button('按自定义属性', queryBySelf);
});// 搜索id为2271的物体,点击按钮后更改物体颜色
function queryById() {var car = app.query('#2271')[0];car.style.color = '#ff0000';
}// 查询物体类是 Thing 的对象
function queryByType() {var car = app.query(".Thing");car.style.color = '#ff0000';
}
// 查询物体类是 自定义属性=值 的对象
function queryBySelf {var car = app.query('["userData/floorNum"=6]');car.style.color = '#ff0000';
}

6. 父子属性

app.on('load', function (ev) {//获取园区对象var campus = ev.campus; // 通过场景的父子树访问对象var children = campus.children;for (var i = 0; i < children.length; i++) {console.log("children ", children[i])}
})

7. 分类属性

app.on('load', function (ev) {// 获取园区对象var campus = ev.campus;// 日志窗口中显示园区内的 Thing 物体campus.things.forEach(function (thing) {console.log('Thing: ' + thing.id);});
})

8. 双击不进入楼层

// 暂停楼层的双击事件
app.pauseEvent("DBLClick", ".Floor");// 恢复楼层的双击事件
app.resumeEvent("DBLClick", ".Floor");

9. 进入建筑

app.on(THING.EventType.EnterLevel, '.Building', function (ev) {console.log("ev", ev)ev.levelPath[0].style.color = "#009900";
})

10. 进入园区

app.on(THING.EventType.EnterLevel, '.Campus', function (ev) {// var current = ev.current;  // 当前层级
})

11.  thingJS 分享链接

thing JS笔记相关推荐

  1. js笔记(一)js基础、程序结构、函数

    大标题 小节 一.js 基础 1. javascript的组成: 2. 运行js: 3. 打印信息: 4. 关键字var: 5. js中的数据类型: 6. NaN(not a number): 7. ...

  2. Vue.js笔记(一)

    Vue.js笔记(一) 读书笔记 Vue.js介绍 内容概要 1.1 站在巨人的肩膀上 1.1.1 MVC模式 1.1.2 MVVM模式 2.1.3 异步执行脚本 2.1.4 动态加载脚本 2.2 行 ...

  3. Node.js笔记:SerialPort(串口)模块使用(基于9.x.x)

    文章目录 目的 模块安装 基础使用 扫描端口 打开端口 发送数据 接收数据 错误处理 数据解析器 SerialPort类 构造方法 属性 事件 方法 命令行工具 总结 目的 上位机与各种电路模块间常常 ...

  4. node.js笔记第一天

    nodejs笔记 web服务器和服务端js的区别 1.js都是运行在浏览器的 ECMAScript:js语法 bom:浏览器对象模型,用js去操作浏览器窗口 Dom:文档对象模型,用js去操作dom树 ...

  5. js笔记十:vscode代码提示(20211221补充)

    对于开发过程中,如果有函数或属性提示,可以大大提高效率.对于java,python,C#等语言强类型的编译型脚本语言,其对应的IDE都有完备的代码.对于C++/C也有比较完善的代码提示,而js和lua ...

  6. JS笔记 | JS中的strict model(严格模式)

    仅做笔记分享,如有错误请高手指出 ECMAscript5中引入了strict model.严格模式下的JS程序需要比非严格模式下的程序更加规范.严格模式对语法做了比较严格的要求, 变量上的不同 mes ...

  7. 11、JS笔记-内置对象

    1.内置对象 js中对象分为三种: 自定义对象.内置对象.浏览器对象(js独有) 内置对象: js语言自带的对象,供开发者使用,提供一些常用或基本的功能(属性和方法) 2.Math对象 Math中所有 ...

  8. js笔记2(字符串方法)

    20190713 阅读http://www.w3school.com.cn/index.html笔记 js字符串方法 1.1查找字符串中的字符串 indexOf() 方法返回字符串中指定文本首次出现的 ...

  9. 前端三板斧: HTML+CSS+JS笔记 摘自b站狂神说

    参考b站狂神说的前端视频,做的笔记 视频地址:https://www.bilibili.com/video/BV1x4411V75C HTML 5 什么是HTML? hyper text markup ...

  10. require.js笔记

    笔记参考来源:阮一峰   http://www.ruanyifeng.com/blog/2012/10/javascript_module.html 1. 浏览器端的模块只能采用"异步加载& ...

最新文章

  1. java se13安装教程_在Linux发行版中安装Java 13/OpenJDK 13的方法
  2. 不好意思,我真的不知道MySQL的窗口函数...
  3. cmake的使用-目标类型详解
  4. 十大经典排序算法总结(够兄弟们喝一壶的)
  5. 姓名和学号 c语言,急啊!!!求救了 C语言编一个链表,输出姓名和学号就好
  6. JavaScript里面的居民们1-数据
  7. 如何在服务器运行aspx_ASP.NET开发实战——(四)MVC是如何运行?它的生命周期是什么?...
  8. rhel7.0安装篇
  9. linux下WPS并安装字体
  10. JavaScript 编程精解 中文第三版 五、高阶函数
  11. 那些年我不知道为啥的电脑“灵异事件”
  12. Failed to initialize NVML 长效解决方法
  13. Unity方便查看日志的插件Reporter
  14. 计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接
  15. 更改Ubuntu 18.04的时区
  16. 驻点运维人员被客户投诉要求换人,换还是不换?
  17. 不想做直播的数据分析师不是一个好销售
  18. 将iPhone短信完整迁移到安卓系统上的方法
  19. 迎着冷眼和嘲笑?前进
  20. Android 报错Failed to load native library: XXXX_so

热门文章

  1. 吴伯凡-认知方法论-知行合一的本质
  2. HTC6950新手基本操作方法
  3. 台式计算机的cpu,台式电脑处理器(CPU)性能排行榜
  4. python excel 饼图 简书_Matplotlib-绘制饼图
  5. 数据结构java实验_20172301 《Java软件结构与数据结构》实验一报告
  6. js月份的计算公式_js判断某年某月有多少天(闰年计算方法)
  7. 上拉/下拉电阻选值怎么定
  8. 西安电子科技大学研究生计算机专业怎么样,西安电子科技大学计算机在职研究生怎么样?...
  9. Spring Cloud Zuul过滤器详解
  10. GNSS基本概述——GPS,BD,GLONASS,Galileo