UNPKG

@tuby/kereal-osg

Version:

The kereal osg inner engine instance.

1,690 lines (1,541 loc) 48.5 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var kereal = require('@tuby/kereal'); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } /* * @Author: vanmit * @LastEditors: vanmit * @Date: 2021-08-15 13:31:38 * @LastEditTime: 2022-01-10 14:22:39 * @Descripttion: for osg engine ,but should be load via osg program. */ var KerealOSG = /*#__PURE__*/function () { function KerealOSG() { _classCallCheck(this, KerealOSG); this.handlers = {}; this.msghandlers = {}; this.locationHandlers = {}; this.topicHandler = null; this.msgHandler = null; } /** * * 初始化引擎 */ _createClass(KerealOSG, [{ key: "init", value: function init(data) { var self = this; self._subMsg("LocationResult", function (res) { var type = res.t; if (self.locationHandlers[type]) { self.locationHandlers[type](res); } }, false); this.url = "ws://127.0.0.1:9385"; this.guid = "TheViewer"; if (data && data.hasOwnProperty("wsurl")) { this.url = data.url; } if (data && data.hasOwnProperty("viewer")) { this.guid = data.viewer; } var logger = false; if (data && data.hasOwnProperty("logger")) { logger = data.logger; } this.ws = new WebSocket(this.url); self.ws.onopen = function () { console.log("WebSocket opened"); //接受视窗发出的消息,消息内容通过type进行甄别 self._sub(self.guid, function (data) { var messageJson = eval('(' + data + ')'); var type = messageJson.type; if (self.msghandlers[type]) { var ho = self.msghandlers[type]; ho.handler(messageJson.data); if (ho.once) { delete self.msghandlers[type]; } } else { self.msgHandler(messageJson); } }, false); }; self.ws.onclose = function (e) { //当客户端收到服务端发送的关闭连接请求时,触发onclose事件 console.log("WebSocket closed"); }; //当客户端收到服务端发来的消息时,触发onmessage事件,参数e.data包含server传递过来的数据  self.ws.onmessage = function (e) { var messageJson = eval('(' + e.data + ')'); var topic = messageJson.topic; var data = messageJson.data; if (logger) console.log("receive", topic, data); if (topic) { if (self.handlers[topic]) { var ho = self.handlers[topic]; ho.handler(data); if (ho.once) { self._unSub(topic); } } else { self.topicHandler(messageJson); } } }; self.ws.onerror = function (e) { //如果出现连接、处理、接收、发送数据失败的时候触发onerror事件   console.log("WebSocket error:" + e); }; } }, { key: "destroy", value: function destroy() {} /** *执行API */ }, { key: "_excuteCmd", value: function _excuteCmd(name, jsonData) { if (this.ws.readyState === WebSocket.OPEN) { //如果Socket连接成功则执行 var obj = { "engine": 0, "api": name, "data": jsonData, "viewerGuid": this.guid }; //console.log("WebSocket Send", JSON.stringify(obj)); this.ws.send(JSON.stringify(obj)); } } }, { key: "reset", value: function reset(data) { this._excuteCmd("TB_EngineReset", data); } }, { key: "engineClear", value: function engineClear() { this._excuteCmd("TB_EngineClear"); } }, { key: "sub", value: function sub(topic) { var sobj = { "topic": topic }; this._excuteCmd("TB_TopicSub", sobj); } }, { key: "unSub", value: function unSub(topic) { var sobj = { "topic": topic }; this._excuteCmd("TB_TopicUnSub", sobj); } }, { key: "_sub", value: function _sub(topic, handler, once) { var obj = { "handler": handler, "once": once }; this.handlers[topic] = obj; var sobj = { "topic": topic }; this._excuteCmd("TB_TopicSub", sobj); } }, { key: "_subMsg", value: function _subMsg(type, handler, once) { var obj = { "handler": handler, "once": once }; this.msghandlers[type] = obj; } }, { key: "_unSub", value: function _unSub(topic) { var sobj = { "topic": topic }; this._excuteCmd("TB_TopicUnSub", sobj); delete this.handlers[topic]; } }, { key: "manipulatorControl", value: function manipulatorControl(data) { this._excuteCmd("TB_ManipulatorControl", data); } }, { key: "manipulatorSwitch", value: function manipulatorSwitch(data) { this._excuteCmd("TB_ManipulatorSwitch", data); } /** * 光源设置 * @param {object} data * 全局支持8个光源 * 系统内置0号光源,可以自定义替换,删除自定义后,恢复系统默认0号光源 * guid:非必要,不选则配置全局光 * on:开关:0-关,1-开 * index:光源序号:0-7 ,index为-1时,关闭所有光照 * direction:光源方向 vec3 */ }, { key: "lightSourceSet", value: function lightSourceSet(data) { this._excuteCmd("TB_SetLightSource", data); } /** * 鼠标事件 * @param {function} function(data){} */ }, { key: "mouseEvent", value: /** * 鼠标事件 * @param {function} function(data){} */ function mouseEvent(data) { this._subMsg("MouseEvent", data, false); } }, { key: "locationGet", value: function locationGet(data) { var type = "normal"; if (Object.prototype.toString.call(data) === '[object Object]') { var sobj = {}; if (data.type) { type = data.type; } sobj.type = type; if (data.hasOwnProperty("keep")) { sobj.keep = data.keep; } if (data.success) { this.locationHandlers[type] = data.success; } this._excuteCmd("TB_Location_Get", sobj); } else { this.locationHandlers[type] = data; this._excuteCmd("TB_Location_Get", { "type": type }); } } /** * 根据经纬度获取高程 * @param {Object} obj * 参数格式如下: *data: { * "crs":1,//坐标系 0-空间直角坐标系 1-经纬度(默认) * "x":114.3344334, //位置x [必填] * "y":23.4545433, //位置y [必填] * }, * success: function(res) */ }, { key: "locationGetElevation", value: function locationGetElevation(obj) { this._subMsg("ElevationGetResult", obj.success, true); this._excuteCmd("TB_Location_GetElevation", obj.data); } /** * 设置位置 * @param {Object} data * 参数格式如下(data): * { * "csys":1,//坐标系 0-空间直角坐标系 1-经纬度(默认) * "x":114.3344334, //位置x [必填] * "y":23.4545433, //位置y [必填] * "z":54.54, //位置z [必填] * "dis":150, //距离 * "heading":0, //偏转角 * "pitch":-45 //俯仰角 * } */ }, { key: "locationSet", value: function locationSet(data) { this._excuteCmd("TB_Location_Set", data); } // 视点操作 /** * 获取视点 * @param {function} function(data){} */ }, { key: "viewpointGet", value: function viewpointGet(data) { this._subMsg("ViewpointGetResult", data, true); this._excuteCmd("TB_Viewpoint_Get"); } /** * 设置视点 * @param {object} data 传入参数 * 参数格式如下(data): * { * "viewpoint":"-2.11240630202284763_-47.9768531393446409_304.028112125703842_22.5962351807583985_114.542265777527518_-9.49982409086078405",//视点字符串 * } */ }, { key: "viewpointSet", value: function viewpointSet(data) { this._excuteCmd("TB_Viewpoint_Set", data); } // 图层操作 /** * 图层控制 * @param {object} data 传入参数 * 参数格式如下(data): * { * "guid":"VideoLayer", //图层名称 [必填] * "show":1 //图层控制 0-隐藏 1-显示 [必填] * } */ }, { key: "layerControl", value: function layerControl(data) { this._excuteCmd("TB_Layer_Control", data); } /** * 图层添加 * @param {object} data 传入参数 * 参数格式如下(data): * { * "guid":"VideoLayer", //图层名称 [必填] * } */ }, { key: "layerAdd", value: function layerAdd(data) { this._excuteCmd("TB_Layer_Add", data); } /** * 图层删除 * @param {object} data 传入参数 * 参数格式如下(data): * { * "guid":"VideoLayer", //图层名称 [必填] * } */ }, { key: "layerRemove", value: function layerRemove(data) { this._excuteCmd("TB_Layer_Remove", data); } /** * 图层清空 * @param {object} data 传入参数 * 参数格式如下(data): * { * "guid/guids":"VideoLayer", //图层名称 [必填] * } */ }, { key: "layerClear", value: function layerClear(data) { this._excuteCmd("TB_Layer_Clear", data); } /** * 图层加载 * @param {object} data 传入参数 * 参数格式如下(data): * { * "guid":"VideoLayer", //图层名称 [必填] * "url":"http://192.168.1.20/api/layer/234334-2132-2323-212123", //图层数据路径 [必填] * } */ }, { key: "layerLoad", value: function layerLoad(data) { this._excuteCmd("TB_Layer_Load", data); } // 地形操作 /** * 地形控制 * @param {object} data 传入参数 * 参数格式如下(data): * { * "name":"VideoLayer", //图层名称 [必填] * "show":"1", //显示控制 0-隐藏 1-显示[必填] * } */ }, { key: "terrainControl", value: function terrainControl(data) { this._excuteCmd("TB_Terrain_Control", data); } /** * 地形添加 * @param {object} data 传入参数 * 参数格式如下(data): * { * "name":"VideoLayer", //地形名称 [必填] * "mode":"1", //地形类别 [必填] * "data":"string", //地形数据 [必填] * } */ }, { key: "terrainAdd", value: function terrainAdd(data) { this._excuteCmd("TB_Terrain_Add", data); } /** * 地形删除 * @param {object} data 传入参数 * 参数格式如下(data): * { * "name":"VideoLayer", //地形名称 [必填] * } */ }, { key: "terrainRemove", value: function terrainRemove(data) { this._excuteCmd("TB_Terrain_Remove", data); } /** * 地形加载 * @param {object} data 传入参数 * 参数格式如下(data): * { * "name":"VideoLayer", //地形名称 [必填] * "url":"http://192.168.1.20/api/Terrain/234334-2132-2323-212123" //地形数据路劲 [必填] * } */ }, { key: "terrainLoad", value: function terrainLoad(data) { this._excuteCmd("TB_Terrain_Load", data); } /** * 标注控制 * @param {object} data 传入参数 * 参数格式如下(data): * { * "guidList":["guid1","guid2","guid3"], //标注GUID [必填] * "show": 1, // 展示 1-显示,0-隐藏 * "layer":"layerName", //图层名称 默认为空,既所有图层查找 * } */ }, { key: "labelControl", value: function labelControl(data) { this._excuteCmd("TB_Label_Control", data); } /** * 标注定位 * @param {object} data 传入参数 * 参数格式如下(data): * { * "guid":"guid",//标注唯一识别符 [必填] * "dis":200, // 距离眼睛多少米 默认100 * "layer":"layerName", //图层名称 默认为空,既所有图层查找 * "heading": 0, // 左右摆头角度 默认0,左负,右正 * "pitch":-45 //上下俯仰角度 抬头为正,低头为负,默认低头45度即-45 * } */ }, { key: "labelLocate", value: function labelLocate(data) { this._excuteCmd("TB_Label_Locate", data); } /** * 标注添加 * @param {object} object 传入参数 * 参数格式如下(data): * { * guid:唯一编号,string,必要 * layer:所属图层,string,非必要 * parent:所属标注节点,string,非必要 * label:需要显示的文字,\n换行,string,非必要 * crs:坐标类型:0-空间,1-经纬度(默认),非必要 * x,y,z:坐标位置,非必要,不带位置时,拖动添加 * keep:连续添加(mode为0时有效) * options:选项: * mode,标签模式,0-始终面向屏幕(默认),1-三维空间面 * min-range,眼睛距离物体显示范围,最小值,float * max-range,眼睛距离物体显示范围,最大值,float * width:宽度,米,模式为0时必选 * height:高度,米,模式为0时必选 * pivot:中点位置 * color:文字颜色 * background:背景色,默认为白色 * texture:背景纹理,可以是图片,网页,视频路径 * font:文字字体 * font-size:文字大小,米 * fade:文字显示渐变 * align-mode:文字对其方式:0左上(默认) 1左中 2左下 3中上 4中中 5中下 6右上 7右中 8右下 * show-always:始终显示,0-否(默认)1-是 * border-width:边框宽度,默认0,无边框 * border-color:边框颜色 * border-radius:边框圆角半径,小于宽高一半 * shadow-type:阴影类型 * 0-默认,右下,1-右中,2-右上,3-下中,4-上中,5-左下,6-左中,7-左上,8-轮廓 * shadow-width:阴影大小,float * shadown-color:阴影颜色 * } */ }, { key: "labelAdd", value: function labelAdd(object) { if (object.success != undefined) { this._subMsg("LabelEditResult", object.success, true); } if (object.data != undefined) { this._excuteCmd("TB_Label_Add", object.data); } else { this._excuteCmd("TB_Label_Add", object); } } /** * 标注更新 * @param {object} object 传入参数 * 参数格式如下(data): * { * 同Add,多了move参数,未1时表示移动 * } */ }, { key: "labelUpdate", value: function labelUpdate(object) { if (object.success != undefined) { this._subMsg("LabelEditResult", object.success, true); } if (object.data != undefined) { this._excuteCmd("TB_Label_Update", object.data); } else { this._excuteCmd("TB_Label_Update", object); } } /** * 文字标签加载,内容是添加数据的列表 */ }, { key: "labelLoad", value: function labelLoad(data) { this._excuteCmd("TB_Label_Load", data); } /** * 标注删除 * @param {object} data 传入参数 * 参数格式如下(data): * { * "guid": "guid",//标注唯一识别符 [必填] * "layer":"layerName", //图层名称 默认为空,既所有图层查找 * } */ }, { key: "labelRemove", value: function labelRemove(data) { this._excuteCmd("TB_Label_Remove", data); } /** * 获取周边标注信息 * @param {object} object 传入参数 * 参数格式如下(object): * { * "layer/layers":图层名称/图层列表 * "x":"10", //位置x [必填] * "y":"20", //位置y [必填] * "z":"30", //位置z [必填] * "crs":1,//坐标系 0-空间直角坐标系 1-经纬度(默认) * "count": "2", // 计算 如果不填或为0,则执行按照距离打开,否则按照数量打开 * "distance": "20" // 距离给定位置[必填] * } */ }, { key: "lableSearch", value: function lableSearch(object) { if (object.success != undefined) { this._subMsg("LabelSearchResult", object.success, true); } if (object.data != undefined) { this._excuteCmd("TB_Label_Search", object.data); } else { this._excuteCmd("TB_Label_Search", object); } } // 图元操作 /** * 图元控制 * @param {object} data 传入参数 * 参数格式如下(data): * { * "layer":'PrimitiveTempLayer', //图层名称 * "guid":'guid', //图形的唯一标识 [必填] * "show":1 //显示控制 0-隐藏 1-显示 [必填] * } */ }, { key: "primitiveControl", value: function primitiveControl(data) { this._excuteCmd("TB_Primitive_Control", data); } /** * 图元删除 * @param {object} data 传入参数 * 参数格式如下(data): * { * "layer":'PrimitiveTempLayer', //图层名称 * "guid":'guid', //图形的唯一标识 [必填] * } */ }, { key: "primitiveRemove", value: function primitiveRemove(data) { this._excuteCmd("TB_Primitive_Remove", data); } /** * 图元选择 * @param {object} data 传入参数 * 参数格式如下(data): * { * "layer":'PrimitiveTempLayer', //图层名称 * "guid":'guid', //图形的唯一标识 [必填] * } */ }, { key: "primitiveSelect", value: function primitiveSelect(data) { this._excuteCmd("TB_Primitive_Select", data); } /** * 图元清理 * @param {object} data 传入参数 * 参数格式如下(data): * { * "layer":'PrimitiveTempLayer', //图层名称 * } */ }, { key: "primitiveClear", value: function primitiveClear(data) { this._excuteCmd("TB_Primitive_Clear", data); } /** * 图元添加 */ }, { key: "primitiveAdd", value: function primitiveAdd(object) { if (object.success != undefined) { this._subMsg("PrimitiveEditResult", object.success, true); } if (object.data != undefined) { this._excuteCmd("TB_Primitive_Add", object.data); } else { this._excuteCmd("TB_Primitive_Add", object); } } /** * 图元更新 */ }, { key: "primitiveUpdate", value: function primitiveUpdate(object) { if (object.success != undefined) { this._subMsg("PrimitiveEditResult", object.success, true); } if (object.data != undefined) { this._excuteCmd("TB_Primitive_Update", object.data); } else { this._excuteCmd("TB_Primitive_Update", object); } } /** * 图元加载 */ }, { key: "primitiveLoad", value: function primitiveLoad(data) { this._excuteCmd("TB_Primitive_Load", data); } /** * 图元绘制取消 */ }, { key: "primitiveAddCancel", value: function primitiveAddCancel(data) { this._excuteCmd("TB_Primitive_AddCancel", data); } /** * 图元绘制完成 */ }, { key: "primitiveAddFinish", value: function primitiveAddFinish(data) { this._excuteCmd("TB_Primitive_AddFinish", data); } // 标签操作 /** * 标签模块初始化 * @param {object} data 传入参数 * 参数格式如下(data): * { * "urlMap":[ // 标签模板ID与路径映射 [必填] * { * "id":0, * "url":"http://127.0.0.1:16003/mark/0.xml" * } * ] * } */ }, { key: "markInit", value: function markInit(data) { this._excuteCmd("TB_Mark_Init", data); } /** * 标签显隐控制 * @param {object} data 传入参数 * 参数格式如下(data): * { * "guidList":["guid1","guid2","guid3"], // 标签GUID[必填] * "show": 1, //图层显隐 1-显示,0-隐藏 [必填] * "layer":"layerName", //图层名称 默认为空,既所有图层查找 * } */ }, { key: "markControl", value: function markControl(data) { this._excuteCmd("TB_Mark_Control", data); } /** * 标签定位 * @param {object} data 传入参数 * 参数格式如下(data): * { * "guid":"guid", // 标签唯一识别符 [必填] * "layer":"layerName", //图层名称 默认为空,既所有图层查找 * "dis":200, //距离眼睛多少米 默认为100 * "heading":0, //左右摆头角度 默认0,左负,右正 * "pitch":-45, //上下俯仰角度 抬头为正,低头为负,默认低头45度即-45 * } */ }, { key: "markLocate", value: function markLocate(data) { this._excuteCmd("TB_Mark_Locate", data); } /** * 获取周边mark信息 * @param {object} data 传入参数 * 参数格式如下(data): * { * "layer/layers":图层名称/图层列表 * "x":"10", //位置x [必填] * "y":"20", //位置y [必填] * "z":"30", //位置z [必填] * "crs":1,//坐标系 0-空间直角坐标系 1-经纬度(默认) * "count": "2", // 计算 如果不填或为0,则执行按照距离打开,否则按照数量打开 * "dis": "20" // 距离给定位置[必填] * } */ }, { key: "markSearch", value: function markSearch(object) { if (object.success != undefined) { this._subMsg("MarkSearchResult", object.success, true); } if (object.data != undefined) { this._excuteCmd("TB_Mark_Search", object.data); } else { this._excuteCmd("TB_Mark_Search", object); } } /** * 标签添加 * @param {object} object 传入参数 * 参数格式如下(data): * { * "guid":"guid", // 标签唯一识别符 [必填] * "layer":"layerName", //图层名称 默认为空,既所有图层查找 [必填] * "x":30, [必填] * "y":3, [必填] * "z":30, [必填] * "markUrl/markId/imageUrl":string/int/string, //模板路径/模板ID/图片路径,选其一 [必填] * "cys":1,//坐标系 0-空间直角坐标系 1-经纬度(默认) * "text":"文字",//常态显示的文本 默认为空 * "tips":"string",//鼠标移上去显示文本 默认为空 * "mode":1,//朝向 0-始终朝屏幕(默认)1-始终朝天空 * "color":"#FFFFFFFF",//文字颜色 * "background-color":"#FFFFFFFF",//背景颜色 * "font-family":"SimHei",//文字字体 默认”SimHei” * "padding":1,//边距 边距距离默认10px * "minRange":1,//眼睛距离物体显示范围,最小值 默认1米 * "maxRange":1,//眼睛距离物体显示范围,最大值 默认500米 * } */ }, { key: "markAdd", value: function markAdd(object) { if (object.success != undefined) { this._subMsg("MarkEditResult", object.success, true); } if (object.data != undefined) { this._excuteCmd("TB_Mark_Add", object.data); } else { this._excuteCmd("TB_Mark_Add", object); } } /** * 图元加载,内容是添加数据的列表 */ }, { key: "markLoad", value: function markLoad(data) { this._excuteCmd("TB_Mark_Load", data); } /** * 标签更新 * @param {object} data 传入参数 * 参数格式如下(data): * { * "guid":"guid", // 标签唯一识别符 [必填] * "layer":"layerName", //图层名称 默认为空,既所有图层查找 [必填] * "x":30, [必填] * "y":3, [必填] * "z":30, [必填] * "markUrl/markId/imageUrl":string/int/string, //模板路径/模板ID/图片路径,选其一 [必填] * "cys":1,//坐标系 0-空间直角坐标系 1-经纬度(默认) * "text":"文字",//常态显示的文本 默认为空 * "tips":"string",//鼠标移上去显示文本 默认为空 * "mode":1,//朝向 0-始终朝屏幕(默认)1-始终朝天空 * "color":"#FFFFFFFF",//文字颜色 * "background-color":"#FFFFFFFF",//背景颜色 * "font-family":"SimHei",//文字字体 默认”SimHei” * "padding":1,//边距 边距距离默认10px * "minRange":1,//眼睛距离物体显示范围,最小值 默认1米 * "maxRange":1,//眼睛距离物体显示范围,最大值 默认500米 * } */ }, { key: "markUpdate", value: function markUpdate(object) { if (object.success != undefined) { this._subMsg("MarkEditResult", object.success, true); } if (object.data != undefined) { this._excuteCmd("TB_Mark_Update", object.data); } else { this._excuteCmd("TB_Mark_Update", object); } } /** * 标签删除 * @param {object} data 传入参数 * 参数格式如下(data): * { * "guid": "标签guid" // 标签guid [必填] * "layer":"layerName", //图层名称 默认为空,既所有图层查找 * } */ }, { key: "markRemove", value: function markRemove(data) { this._excuteCmd("TB_Mark_Remove", data); } // 模型操作 /** * 模型模块初始化 * @param {object} data 传入参数 * 参数格式如下(data): * { * "urlMap":[ // 标签模板ID与路径映射 [必填] * { * "id":0, * "url":"http://127.0.0.1:16003/mark/0.xml" * } * ] * } */ }, { key: "modelInit", value: function modelInit(data) { this._excuteCmd("TB_Model_Init", data); } /** * 模型控制 * @param {object} data 传入参数 * 参数格式如下(data): * { * "guidList":["guid1","guid2","guid3"], //模型GUID [必填] * "show": 1, // 展示 1-显示,0-隐藏 [必填] * "layer":"layerName", //图层名称 默认为空,既所有图层查找 * } */ }, { key: "modelControl", value: function modelControl(data) { this._excuteCmd("TB_Model_Control", data); } /** * 模型定位 * @param {object} data 传入参数 * 参数格式如下(data): * { * "guid": "guid",//模型唯一识别符 [必填] * "dis": 200, // 距离眼睛多少米 默认100 * "layer":"layerName", //图层名称 默认为空,既所有图层查找 * "heading": 0, // 左右摆头角度 默认0,左负,右正 * "pitch": -45 //上下俯仰角度 抬头为正,低头为负,默认低头45度即-45 * } */ }, { key: "modelLocate", value: function modelLocate(data) { this._excuteCmd("TB_Model_Locate", data); } /** * 模型点击的获取信息 * @param {object} data 传入参数 * 参数格式如下(data): * { * @param {function} function(data){} * } */ }, { key: "modelGetInfo", value: function modelGetInfo(data) { this._subMsg("ModelGetInfoResult", data, true); this._excuteCmd("TB_Model_GetInfo", { "layer": "all" }); } /** * 模型添加 * @param {object} data 传入参数 * 参数格式如下(data): * { * "guid": "guid",//模型唯一识别符 [必填] * "layer":"layerName", //图层名称 默认为空,既所有图层查找 [必填] * "modelUrl/modelId":'string', //模型模板路径或ID,选其一 [必填] * "posture":'string', //模型姿态字符串:位置与偏转角,俯仰角,侧倾角 [必填] * "cys":1,//坐标系 0-空间直角坐标系 1-经纬度(默认) * "minRange":1,//眼睛距离物体显示范围,最小值 默认1米 * "maxRange":1,//眼睛距离物体显示范围,最大值 默认500米 * "markAble":0, //标签跟随 0-无标签(默认),1-带有标签 * "markText":'string', //标签文本 * "markUrl":'string', //标签模板路径 * "markOffset_x":20, //图标偏移x米 * "markOffset_y":20, //图标偏移y米 * "markOffset_z":20, //图标偏移z米 * } */ }, { key: "modelAdd", value: function modelAdd(object) { if (object.success != undefined) { this._subMsg("ModelEditResult", object.success, true); } if (object.data != undefined) { this._excuteCmd("TB_Model_Add", object.data); } else { this._excuteCmd("TB_Model_Add", object); } } /** * 模型更新 * @param {object} data 传入参数 * 参数格式如下(data): * { * "guid": "guid",//模型唯一识别符 [必填] * "layer":"layerName", //图层名称 默认为空,既所有图层查找 [必填] * "modelUrl/modelId":'string', //模型模板路径或ID,选其一 [必填] * "posture":'string', //模型姿态字符串:位置与偏转角,俯仰角,侧倾角 [必填] * "cys":1,//坐标系 0-空间直角坐标系 1-经纬度(默认) * "minRange":1,//眼睛距离物体显示范围,最小值 默认1米 * "maxRange":1,//眼睛距离物体显示范围,最大值 默认500米 * "markAble":0, //标签跟随 0-无标签(默认),1-带有标签 * "markText":'string', //标签文本 * "markUrl":'string', //标签模板路径 * "markOffset_x":20, //图标偏移x米 * "markOffset_y":20, //图标偏移y米 * "markOffset_z":20, //图标偏移z米 * } */ }, { key: "modelUpdate", value: function modelUpdate(object) { if (object.success != undefined) { this._subMsg("ModelEditResult", object.success, true); } if (object.data != undefined) { this._excuteCmd("TB_Model_Update", object.data); } else { this._excuteCmd("TB_Model_Update", object); } } /** * 模型删除 * @param {object} data 传入参数 * 参数格式如下(data): * { * "guid": "guid",//模型唯一识别符 [必填] * "layer":"layerName", //图层名称 默认为空,既所有图层查找 * } */ }, { key: "modelRemove", value: function modelRemove(data) { this._excuteCmd("TB_Model_Remove", data); } /** * 模型设置着色器 * @param {object} data 传入参数 * 参数格式如下(data): * { * "guid": "guid",//模型唯一识别符 [必填] * "layer":"layerName", //图层名称 默认为空,既所有图层查找 * "name": 着色器名称 * "on": 启用/停用 * "vert":vert着色器路径 * "geom":geom着色器路径 * "frag": frag着色器路径 * "uniforms":着色器参数 * "index":顺序 * "box": 是否添加盒子 * "switch":切换当前着色器 * } */ }, { key: "modelSetShader", value: function modelSetShader(data) { this._excuteCmd("TB_Model_SetShader", data); } /** * 模型平铺 * @param {object} data 传入参数 * 参数格式如下(data): * { * "guid": "guid",//模型唯一识别符 [必填] * "layer":"layerName", //图层名称 默认为空,既所有图层查找 * "height":5.0, //double 铺展后上升基准高度 默认为0 * "time":1.0, //double 每个子模型铺展时间 默认为1秒 * "x":0, //double x方向偏移 默认为0 * "y":0, //double y方向偏移 默认为0 * "z":0, //double z方向偏移 默认为0 * "open":1, //int 展开 还是关闭 1-展开,0-关闭 * } */ }, { key: "modelFlatten", value: function modelFlatten(data) { this._excuteCmd("TB_Model_Flatten", data); } // 其他功能 /** * 运行本地程序 * @param {object} data 传入参数 * 参数格式如下(data): * { * "appPath":"d:\\notepad.exe" //程序路径 [必填] * "appParam":"-f pa" //-f pa 参数,空格隔开 * "workDir":"D:" //程序工作路径 * } */ }, { key: "appRun", value: function appRun(data) { this._excuteCmd("TB_App_Run", data); } /** * 结束本地进程 * @param {object} data 传入参数 * 参数格式如下(data): * { * "appName":"notepad.exe" //程序名称 [必填] * } */ }, { key: "appStop", value: function appStop(data) { this._excuteCmd("TB_App_Stop", data); } // 视频模块 /** * 视频模块初始化 * @param {object} data 传入参数 * 参数格式如下(data): * { * "urlMap":[ // 标签模板ID与路径映射 * { * "id":0, * "url":"http://127.0.0.1:16003/mark/0.xml" * } * ], * "urlMap":{// 视频窗口风格 * "layoutUrl":"http://127.0.0.1:16003/template/VideoLayout.xml", * "windowUrl":"http://127.0.0.1:16003/template/VideoWindowStyle.xml", * "viewUrl":"http://127.0.0.1:16003/template/VideoViewStyle.xml", * "controlUrl":"http://127.0.0.1:16003/template/VideoControlStyle.xml" * } * } */ }, { key: "videoInit", value: function videoInit(data) { this._excuteCmd("TB_Video_Init", data); } /** * 打开关闭视频点 * @param {object} data 传入参数 * 参数格式如下(data): * { * "guidList":["guid1","guid2","guid3"], // 标签GUID[必填] * "show":"0" //展示 1-显示,0-隐藏 [必填] * } */ }, { key: "videoControl", value: function videoControl(data) { this._excuteCmd("TB_Video_Control", data); } /** * 定位视频点 * @param {object} data 传入参数 * 参数格式如下(data): * { * "guid": "视频guid",// 视频guid [必填] * "dis": "200", // 距离眼睛多少米 默认100 * "heading": "-10", //左右摆头角度 默认0,左负,右正 * "pitch": "45" // 上下俯仰角度 抬头为正,低头为负,默认低头45度即-45 * } */ }, { key: "videoLocate", value: function videoLocate(data) { this._excuteCmd("TB_Video_Locate", data); } /** * 打开周边视频 * @param {object} data 传入参数 * 参数格式如下(data): * { * "x":"10", //位置x [必填] * "y":"20", //位置y [必填] * "z":"30", //位置z [必填] * "cys":1,//坐标系 0-空间直角坐标系 1-经纬度(默认) * "count": "2", // 计算 如果不填或为0,则执行按照距离打开,否则按照数量打开 * "distance": "20" // 距离给定位置[必填] * } */ }, { key: "videoOpenRange", value: function videoOpenRange(data) { this._excuteCmd("TB_Video_OpenRange", data); } /** * 加载视频点数据 * @param {object} data 传入参数 * 参数格式如下(data): * { * "url": "C:\Users\Administrator\Desktop", //访问得到所有视频数据的WebAPI路径 [必填] * "token": "授权认证信息", // 授权认证信息 * } */ }, { key: "videoLoad", value: function videoLoad(data) { this._excuteCmd("TB_Video_Load", data); } /** * 添加视频点 * @param {object} data 传入参数 * 参数格式如下(data): * { * "x":"10", //位置x [必填] * "y":"20", //位置y [必填] * "z":"30", //位置z [必填] * "cys":1,//坐标系 0-空间直角坐标系 1-经纬度(默认) * "name": "string", // 显示的文本 默认为空 * "line": 1 // 是否在打开视频时窗口与视频标签连线 0-不连,1-连线(默认) * "markUrl": "模板路径——string——必填" // 视频图标模板路径 [必填] * "mode": 0 // 模式 0,单个视频(默认),1枪球联动,2视频组,4视频融合 * "video":[ { "IP":"192.168.19.11", "Port":9099, "Type":1, (0,RTSP,1海康,2大华) "Usr":"用户名", "Pwd":"密码", "Ptz":1,(0,不控制,1控制) "Channel":1,通道 } ] * } */ }, { key: "videoAdd", value: function videoAdd(object) { if (object.success != undefined) { this._subMsg("VideoEditResult", object.success, true); } if (object.data != undefined) { this._excuteCmd("TB_Video_Add", object.data); } else { this._excuteCmd("TB_Video_Add", object); } } /** * 更新视频点 * @param {object} data 传入参数 * 参数格式如下(data): * { * "x":"10", //位置x [必填] * "y":"20", //位置y [必填] * "z":"30", //位置z [必填] * "cys":1,//坐标系 0-空间直角坐标系 1-经纬度(默认) * "name": "string", // 显示的文本 默认为空 * "line": 1 // 是否在打开视频时窗口与视频标签连线 0-不连,1-连线(默认) * "markUrl": "模板路径——string——必填" // 视频图标模板路径 [必填] * "mode": 0 // 模式 0,单个视频(默认),1枪球联动,2视频组,4视频融合 * "video":[ { "IP":"192.168.19.11", "Port":9099, "Type":1, (0,RTSP,1海康,2大华) "Usr":"用户名", "Pwd":"密码", "Ptz":1,(0,不控制,1控制) "Channel":1,通道 }, ] * } */ }, { key: "videoUpdate", value: function videoUpdate(object) { if (object.success != undefined) { this._subMsg("VideoEditResult", object.success, true); } if (object.data != undefined) { this._excuteCmd("TB_Video_Update", object.data); } else { this._excuteCmd("TB_Video_Update", object); } } /** * 删除视频点 * @param {object} data 传入参数 * 参数格式如下(data): * { * "guid":"需要移除的GUID"[必填] * } */ }, { key: "videoRemove", value: function videoRemove(data) { this._excuteCmd("TB_Video_Remove", data); } }, { key: "videoCloseAll", value: function videoCloseAll(data) { this._excuteCmd("TB_Video_CloseAll", data); } // 巡逻模块 /** * 设置巡逻路径 * @param {object} data 传入参数 * 参数格式如下(data): * { * "path":"C:\Users\Administrator\Desktop",// 巡逻路径URl[必填] * "playTime":"5", // 视频播放时间(比如5秒) [必填] * "videoNodes":[{'time':4,'vids':["335c5042-1871-4f56-a1e5-27817a830089"]}] * } */ }, { key: "patrolSetPath", value: function patrolSetPath(data) { this._excuteCmd("TB_Patrol_SetPath", data); } /** * 执行巡逻一次 * @param {object} data 传入参数 * 参数格式如下(data): * { * "path":"C:\Users\Administrator\Desktop", //巡逻路径URl [必填] * "speed":"2" // 巡逻倍速 巡逻倍速0-10.0,默认1.0 * } */ }, { key: "patrolOnce", value: function patrolOnce(data) { this._excuteCmd("TB_Patrol_Once", data); } /** * 开始巡逻 * @param {object} data 传入参数 * 参数格式如下(data): * { * "path":"C:\Users\Administrator\Desktop", //巡逻路径URl [必填] * "speed":"2" // 巡逻倍速 巡逻倍速0-10.0,默认1.0 * "lenMode":"3" //镜头模式 1(室外飞行,默认),2(室外步行),3(室内飞行),4(室内步行) * } */ }, { key: "patrolStart", value: function patrolStart(data) { this._excuteCmd("TB_Patrol_Start", data); } /** * 停止巡逻 * @param {object} data 传入参数 * 参数格式如下(data): * { * "path":"C:\Users\Administrator\Desktop", //巡逻路径URl [必填] * "speed":"2" // 巡逻倍速 巡逻倍速0-10.0,默认1.0 * "lenMode":"3" //镜头模式 1(室外飞行,默认),2(室外步行),3(室内飞行),4(室内步行) * "travelMode":"2" //播放模式 0(从头到尾,然后从尾到头,默认), 1(循环播放), 2(只播放一次),3(随机播放) * } */ }, { key: "patrolStop", value: function patrolStop(data) { this._excuteCmd("TB_Patrol_Stop", data); } /** * 暂停巡逻 */ }, { key: "patrolPause", value: function patrolPause() { this._excuteCmd("TB_Patrol_Pause"); } /** * 恢复巡逻 */ }, { key: "patrolUnpause", value: function patrolUnpause() { this._excuteCmd("TB_Patrol_Unpause"); } // 报警模块 /** * 报警模块初始化 * @param {object} data 传入参数 * 参数格式如下(data): * { * "alarmFlashEnable":1, //启用报警标签闪烁 0-不启用 1-启用(默认) * "alarmFlashTime":2, //报警标签闪烁时间3间隔 默认3秒 * "alarmEyeDis":50, //报警距离眼睛距离 默认50米 * "alarmEyeHeading":0, //报警偏转角度 默认0, * "alarmEyePitch":-45, //报警俯仰角度 正仰视,负俯视,默认俯视45度 * "alarmCircleRadius":50, //报警圈大小 默认50米 * "alarmLevelColor":[ //报警颜色 不同报警等级不同,内置五种可配置级别0-5, { "level":0, "color":#FFFFFFFF }, ] * } */ }, { key: "alarmInit", value: function alarmInit(data) { this._excuteCmd("TB_Alarm_Init", data); } /** * 启动某类别报警 * @param {object} data 传入参数 * 参数格式如下(data): * { * "type": "1", // 类型 1-视频报警 2-设备报警 3-模型报警 4-定位报警 [必填] * "enable": "1" // 可用性 1-启用,0-禁用 [必填] * } */ }, { key: "alarmEnable", value: function alarmEnable(data) { this._excuteCmd("TB_Alarm_Enable", data); } /** * 发送报警 * @param {object} data 传入参数 * 参数格式如下(data): * { * "srcGuid":"报警源GUID" [必填] * "type":"1", 报警类型 1-视频报警 2-设备报警 3-模型报警 4-定位报警 [必填] * "data":{} //报警数据根据不同类型不同 * } */ }, { key: "alarmSend", value: function alarmSend(data) { this._excuteCmd("TB_Alarm_Send", data); } /** * 取消报警 * @param {object} data 传入参数 * 参数格式如下(data): * { * "deviceGuid":"需要取消的报警设备GUID" [必填] * } */ }, { key: "alarmCancel", value: function alarmCancel(data) { this._excuteCmd("TB_Alarm_Cancel", data); } /** * 执行其它指令 */ }, { key: "runCmd", value: function runCmd(data) { this._excuteCmd(data.cmd, data.data); } /** * 清除报警 */ }, { key: "alarm_Clear", value: function alarm_Clear() { this._excuteCmd("TB_Alarm_Clear"); } /** * 鼠标双击事件 * @param {object} data 传入参数 * 参数格式如下(data): * { * "key":0/1/2, * "x":20, * "y":40 * } */ }, { key: "_mouseDoubleClick", value: function _mouseDoubleClick(data) { this._excuteCmd("TB_MouseEvent_DoubleClick", data); } /** * 鼠标移动时的回调 * @param {object} data 传入参数 * 参数格式如下(data): * { * "x":20, * "y":40 * } */ }, { key: "_mouseMove", value: function _mouseMove(data) { this._excuteCmd("TB_MouseEvent_Move", data); } /** * 鼠标按下时的回调 * @param {object} data 传入参数 * 参数格式如下(data): * { * "key":0/1/2, * "x":20, * "y":40 * } */ }, { key: "_mouseDown", value: function _mouseDown(data) { this._excuteCmd("TB_MouseEvent_Down", data); } /** * 鼠标松开时的回调 * @param {object} data 传入参数 * 参数格式如下(data): * { * "key":0/1/2, * "x":20, * "y":40 * } */ }, { key: "_mouseUp", value: function _mouseUp(data) { this._excuteCmd("TB_MouseEvent_Up", data); } /** * 鼠标松开时的回调 * @param {object} location 传入参数 * 参数格式如下(location): * { * "key":0/1/2, * "x":20, * "y":40 * } */ }, { key: "_mouseScroll", value: function _mouseScroll(data) { this._excuteCmd("TB_MouseEvent_Scroll", data); } /** * 键盘的松开事件 * @param {object} code 传入参数 code 键盘的ASCII值 * 参数格式如下(location): * { * "key"ASCII值:, * } */ }, { key: "_keyUp", value: function _keyUp(code) { this._excuteCmd("TB_KeyEvent_Up", code); } /** * 键盘的按下事件 * @param {object} code 传入参数 code 键盘的ASCII值 * 参数格式如下(location): * { * "key"ASCII值:, * } */ }, { key: "_keyDown", value: function _keyDown(code) { this._excuteCmd("TB_KeyEvent_Down", code); } /** * 元素宽高尺寸改变发生的事件 * @param {object} size 传入宽高尺寸 * 参数格式如下(location): * { * "x":20, * "y":40 * } */ }, { key: "_resize", value: function _resize(size) { this._excuteCmd("TB_Event_Resize", size); } }, { key: "_s4", value: function _s4() { return ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1); } }, { key: "_newGuid", value: function _newGuid() { return this._s4() + this._s4() + "-" + this._s4() + "-" + this._s4() + "-" + this._s4() + "-" + this._s4() + this._s4() + this._s4(); } }]); return KerealOSG; }(); var createKereal = function createKereal(options) { var engine = new KerealOSG(); return new kereal.Kereal(options, engine); }; exports.KerealOSG = KerealOSG; exports["default"] = createKereal;