3D可视化应用开发 WebGL 方向怎么实现?
可视化应用已经实际渗透到各行各业中,包括IT运维、智慧校园、智慧仓储、智慧城市、智慧电力、消防预案、智能建筑等等,作为开发工程师的你是不是觉得很抢手呢,哈哈,有技术的人走到哪里都是香饽饽,这个一点不假。不过你还需要再历练,因为thingjs平台已经实现低门槛快速开发啦!只要了解webgl,熟悉js,有一定的前端开发经验就可以在thingjs平台自己动手搭建可视化场景,对接数据开发应用啦~WEBGL方向开发3D可视化应用真心不难,用心总能做到!
thingjs-面向物联网的3D可视化开发平台
用户页面嵌3D.js
/**
* 说明:
* 示例用于演示 ThingJS 项目发布后
* 以 iframe 的方式嵌入到用户系统页面中的应用场景
* 由于ThingJS在线环境与用户系统页面是跨域关系
* 因此需使用 HTML5 提供的 postMessage 接口进行与iframe页面间的数据通信
* 以下代码仅包含3D部分
* 用户页面部分的代码 请参见教程——>项目发布——>【进阶】引用3D页面
* 完整示例代码 请点击
* http://www.thingjs.com/static/iframe/index.html
* 代码摘录如下
* ...
window.onload = function () {
createTree();
}
function createTree() {
$.ajax({
type: "get",
url: "./data/tree.json",
dataType: "json",
success: function (d) {
$('#objectTree').tree({
data: d,
onClick: function (node, checked) {
var id = node.id;
callFuncInThingJS('changeLevel', id)
}
})
}
});
}
function callFuncInThingJS(funcName, data) {
var iframe = $('#myIframe')[0];
var message = {
'funcName': funcName,// 所要调用ThingJS页面里的函数名
'param': data
}
iframe.contentWindow.postMessage(message, '*');
}
function upDataInfo(param) {
var infoText = $('#infoText')[0];
infoText.innerText = param.info;
var node = $('#objectTree').tree('find', param.id);
$('#objectTree').tree('expandTo', node.target).tree('select', node.target);
}
// 接收ThingJS页面传送的数据
window.addEventListener('message', function (e) {
var data = e.data;
var funcName = data.funcName;
var param = data.param;
if (window[funcName]) window[funcName](param);
});
*
*
* 难度:★★★★☆
*/
var app = new THING.App({
url: 'https://www.thingjs.com/static/models/storehouse' // 场景地址
});
app.on('load', function (ev) {
var campus = ev.campus;
// 开启系统层级
app.level.change(campus);
});
app.on(THING.EventType.LevelChange, function (ev) {
var obj = ev.object;
var name = obj.name;
var type = obj.type;
var id = obj.id;
var info = "进入 " + type + " (" + name + ")";
// 调用 用户主页面的 upDateInfo 方法
callFuncInMain('upDataInfo', { info, id });
})
function callFuncInMain(funcName, data) {
var message = {
'funcName': funcName, // 所要调用父页面里的函数名
'param': data
}
// 向父窗体(用户主页面)发送消息
// 第一个参数是具体的信息内容,
// 第二个参数是接收消息的窗口的源(origin),即"协议 + 域名 + 端口"。也可以设为*,表示不限制域名,向所有窗口发送
window.parent.postMessage(message, '*');
}
function changeLevel(id) {
var obj = app.query('#' + id)[0];
if (obj) {
app.level.change(obj);
}
}
// 监听用户页面传回的数据 并调用 ThingJS 页面方法
window.addEventListener('message', function (e) {
var data = e.data;
var funcName = data.funcName;
var param = data.param;
// 调用 ThingJS 页面方法
window[funcName](param);
});
WebGL方向开发3D可视化应用怎么实现你了解了吗?作为前端工程师通过things做一个可视化应用出来可是你技术提升的开端呀~感兴趣的同学可以试一试~