ThingJS 官方demo:3D房屋展示

摘要:
物联网开发商通常要集成很多监控设备,再利用传感器传输数据,如今2D可视化逐渐升级为3D,需要开发人员要再学习一门新手艺,为此,ThingJS的简约而不简单的代码开发能力就在这里。ThingJS如何去展示房屋?这个太简单了,首先我们要知道,ThingJS是物联网可视化PaaS开发平台,能帮助物联网开发商轻松集成3D可视化界面。ThingJS名称源于物联网InternetofThings中的Thing(物),ThingJS使用当今最热门的JavaScript语言进行开发。

物联网开发商通常要集成很多监控设备,再利用传感器传输数据,如今2D可视化逐渐升级为3D,需要开发人员要再学习一门新手艺,为此,ThingJS的简约而不简单的代码开发能力就在这里。

ThingJS如何去展示房屋?这个太简单了,首先我们要知道,ThingJS 是物联网可视化PaaS开发平台,能帮助物联网开发商轻松集成 3D 可视化界面。ThingJS 名称源于 物联网Internet of Things (IoT)中的 Thing (物),ThingJS 使用当今最热门的 JavaScript 语言进行开发。不仅可以针对单栋或多栋建筑组成的园区场景进行可视化开发,搭载丰富插件后,也可以针对地图级别场景进行开发。广泛应用于数据中心、仓储、学校、医院、安防、预案等多种领域。

也就是说,ThingJS主要是帮助物联网开发商来去开发项目的,是一个平台,而不是说thingjs去开发项目,是使用thingjs平台去开发物联网可视化项目,而thingjs在线开发中的160个官方示例可不是就干摆在那的,这些示例都是用户在开发中可能遇到的各种需求,然后被thingjs给拆卸出来,形成了一个个官方示例,所以thingjs的官方人员会说,看完这个160个官方示例,就能迅速的开发物联网可视化项目了。

这次为大家分享的是thingjs楼层地板展示的Demo,源码位于thingjs网站的在线开发示例中,该Demo处于【建筑结构-地板屋顶】,有兴趣的可以进入thingjs中查看该示例:https://www.thingjs.com/s/c8eb6656283e1e8aa19b1f0c?params=105b0f77fd24654d4eebc434e9
ThingJS 官方demo:3D房屋展示第1张

ThingJS 官方demo:3D房屋展示第2张

官方示例:

/**
* 说明:展示楼层与房间 地板与屋顶的区别
* 只有在 CampusBuilder 中编辑了UserID、Name 或自定义属性的房间,
* 才能在 ThingJS 中创建为 Room 对象,否则将合并到楼层
* 因此,楼层下的地板与天花板即为这些被合并的房间的
*
* 操作:点击复选框
*/
var app = new THING.App({
// 场景地址
"url": "https://www.thingjs.com/./uploads/wechat/emhhbmd4aWFuZw==/scene/建筑测试03"
});
var panel;
// 创建数据对象
var dataObj = {
checkbox: {
'楼层地板': false,
'房间地板': false,
'楼层屋顶': false,
'房间屋顶': false
}
};

app.on('load', function (ev) {
var campus = ev.campus;
var floor = app.query('.Floor')[0];
app.level.change(floor);

createCheckBox();
})

app.on(THING.EventType.EnterLevel, '.Floor', function (ev) {
panel.visible = true;
}, '进入楼层显示面板')

app.on(THING.EventType.LeaveLevel, '.Floor', function (ev) {
panel.visible = false;

var checkboxState = dataObj.checkbox;
checkboxState['楼层地板'] = false;
checkboxState['房间地板'] = false;
checkboxState['楼层屋顶'] = false;
checkboxState['房间屋顶'] = false;
}, '退出楼层隐藏面板')

function createCheckBox() {
// 界面组件
panel = new THING.widget.Panel({
titleText: '地板 屋顶',
hasTitle: true, // 是否有标题
});
panel.visible = false;

// 界面绑定对象
var checkbox = panel.addCheckbox(dataObj, 'checkbox');
checkbox[0].on('change', function (ev) {
if (app.level.current instanceof THING.Floor) {
var curFloor = app.level.current;
var plan = curFloor.plan;
if (ev) {
plan.style.color = '#ff0000';
}
else {
plan.style.color = null;
}
}
});

checkbox[1].on('change', function (ev) {
if (app.level.current instanceof THING.Floor) {
var curFloor = app.level.current;
var rooms = curFloor.rooms;
rooms.forEach(function (room) {
var plan = room.plan;
if (ev) {
plan.style.color = '#ffff00';
}
else {
plan.style.color = null;
}
})
}
});

checkbox[2].on('change', function (ev) {
if (app.level.current instanceof THING.Floor) {
var curFloor = app.level.current;
var roof = curFloor.roof;
roof.visible = ev;
if (ev) {
roof.style.color = '#0000ff';
roof.style.opacity = 0.6;
}
else {
roof.style.color = null;
}
}
})

checkbox[3].on('change', function (ev) {
if (app.level.current instanceof THING.Floor) {
var curFloor = app.level.current;
var rooms = curFloor.rooms;
rooms.forEach(function (room) {
var roof = room.roof;
roof.visible = ev;
if (ev) {
roof.style.color = '#0000ff';
roof.style.opacity = 0.3;
}
else {
roof.style.color = null;
}
})
}
})
}

示例结束。

通过官方教程和前端代码的示例,一一对照,在场景下实现某种事件动画,展示房屋就是这么简单!

免责声明:文章转载自《ThingJS 官方demo:3D房屋展示》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java设计模式学习记录-观察者模式多个datagridview之间互相传值下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Matlab基本函数-floor函数

1、floor函数:朝负无穷大方向取整 2、用法说明:       y = floor(x) 函数将x中元素取整,值y为不大于本身的最大整数。对于复数,分别对实部和虚部取整 3、用法举例 >> x = [3+4i 6-7i 9+11i 1-4i 3.4-4.5i 90.67-123i] x = 1.0e+02 * Co...

在线考试实现倒计时的代码

<!doctype html><html><head> <meta charset="utf-8"> <title>倒计时js代码 - 懒人建站 http://www.51xuediannao.com/</title></head> <body> 倒计时js代码...

微信小程序first-child 和 last-child 失效如何解决?

问题情况 html 1 <view class="box"> 2 <view class="floor"> 3 一楼 4 </view> 5 <view class="floor"> 6 二楼 7 </view> 8 <view class...

C# 四舍五入算法(转)

在处理一些数据时,我们希望能用"四舍五入"法实现,但是C#采用的是"四舍六入五成双"的方法,如下面的例子,就是用"四舍六入五成双"得到的结果: doubled1=Math.Round(1.25,1);//1.2doubled2=Math.Round(1.24,1);//1.2doubled3=Math.Round(1.26,1);//1.3doubl...