@stampgis/webrtc 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../node_modules/jszip/dist/jszip.min.js","../node_modules/file-saver/src/FileSaver.js","../src/index.ts","../src/StampRtti.ts","../src/StampUtil.ts","../src/loader.ts"],"sourcesContent":["/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e<h.length;e++)u(h[e]);return u}({1:[function(e,t,r){\"use strict\";var d=e(\"./utils\"),c=e(\"./support\"),p=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";r.encode=function(e){for(var t,r,n,i,s,a,o,h=[],u=0,l=e.length,f=l,c=\"string\"!==d.getTypeOf(e);u<e.length;)f=l-u,n=c?(t=e[u++],r=u<l?e[u++]:0,u<l?e[u++]:0):(t=e.charCodeAt(u++),r=u<l?e.charCodeAt(u++):0,u<l?e.charCodeAt(u++):0),i=t>>2,s=(3&t)<<4|r>>4,a=1<f?(15&r)<<2|n>>6:64,o=2<f?63&n:64,h.push(p.charAt(i)+p.charAt(s)+p.charAt(a)+p.charAt(o));return h.join(\"\")},r.decode=function(e){var t,r,n,i,s,a,o=0,h=0,u=\"data:\";if(e.substr(0,u.length)===u)throw new Error(\"Invalid base64 input, it looks like a data url.\");var l,f=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,\"\")).length/4;if(e.charAt(e.length-1)===p.charAt(64)&&f--,e.charAt(e.length-2)===p.charAt(64)&&f--,f%1!=0)throw new Error(\"Invalid base64 input, bad content length.\");for(l=c.uint8array?new Uint8Array(0|f):new Array(0|f);o<e.length;)t=p.indexOf(e.charAt(o++))<<2|(i=p.indexOf(e.charAt(o++)))>>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r<t;r++)n+=String.fromCharCode(255&e),e>>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t<this.dirRecords.length;t++)this.push({data:this.dirRecords[t],meta:{percent:100}});var r=this.bytesWritten-e,n=function(e,t,r,n,i){var s=I.transformTo(\"string\",i(n));return R.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+A(e,2)+A(e,2)+A(t,4)+A(r,4)+A(s.length,2)+s}(this.dirRecords.length,r,e,this.zipComment,this.encodeFileName);this.push({data:n,meta:{percent:100}})},s.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},s.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on(\"error\",function(e){t.error(e)}),this},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},s.prototype.error=function(e){var t=this._sources;if(!i.prototype.error.call(this,e))return!1;for(var r=0;r<t.length;r++)try{t[r].error(e)}catch(e){}return!0},s.prototype.lock=function(){i.prototype.lock.call(this);for(var e=this._sources,t=0;t<e.length;t++)e[t].lock()},t.exports=s},{\"../crc32\":4,\"../signature\":23,\"../stream/GenericWorker\":28,\"../utf8\":31,\"../utils\":32}],9:[function(e,t,r){\"use strict\";var u=e(\"../compressions\"),n=e(\"./ZipFileWorker\");r.generateWorker=function(e,a,t){var o=new n(a.streamFiles,t,a.platform,a.encodeFileName),h=0;try{e.forEach(function(e,t){h++;var r=function(e,t){var r=e||t,n=u[r];if(!n)throw new Error(r+\" is not a valid compression method !\");return n}(t.options.compression,a.compression),n=t.options.compressionOptions||a.compressionOptions||{},i=t.dir,s=t.date;t._compressWorker(r,n).withStreamInfo(\"file\",{name:e,dir:i,date:s,comment:t.comment||\"\",unixPermissions:t.unixPermissions,dosPermissions:t.dosPermissions}).pipe(o)}),o.entriesCount=h}catch(e){o.error(e)}return o}},{\"../compressions\":3,\"./ZipFileWorker\":8}],10:[function(e,t,r){\"use strict\";function n(){if(!(this instanceof n))return new n;if(arguments.length)throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");this.files=Object.create(null),this.comment=null,this.root=\"\",this.clone=function(){var e=new n;for(var t in this)\"function\"!=typeof this[t]&&(e[t]=this[t]);return e}}(n.prototype=e(\"./object\")).loadAsync=e(\"./load\"),n.support=e(\"./support\"),n.defaults=e(\"./defaults\"),n.version=\"3.10.1\",n.loadAsync=function(e,t){return(new n).loadAsync(e,t)},n.external=e(\"./external\"),t.exports=n},{\"./defaults\":5,\"./external\":6,\"./load\":11,\"./object\":15,\"./support\":30}],11:[function(e,t,r){\"use strict\";var u=e(\"./utils\"),i=e(\"./external\"),n=e(\"./utf8\"),s=e(\"./zipEntries\"),a=e(\"./stream/Crc32Probe\"),l=e(\"./nodejsUtils\");function f(n){return new i.Promise(function(e,t){var r=n.decompressed.getContentWorker().pipe(new a);r.on(\"error\",function(e){t(e)}).on(\"end\",function(){r.streamInfo.crc32!==n.decompressed.crc32?t(new Error(\"Corrupted zip : CRC32 mismatch\")):e()}).resume()})}t.exports=function(e,o){var h=this;return o=u.extend(o||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:n.utf8decode}),l.isNode&&l.isStream(e)?i.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\")):u.prepareContent(\"the loaded zip file\",e,!0,o.optimizedBinaryString,o.base64).then(function(e){var t=new s(o);return t.load(e),t}).then(function(e){var t=[i.Promise.resolve(e)],r=e.files;if(o.checkCRC32)for(var n=0;n<r.length;n++)t.push(f(r[n]));return i.Promise.all(t)}).then(function(e){for(var t=e.shift(),r=t.files,n=0;n<r.length;n++){var i=r[n],s=i.fileNameStr,a=u.resolve(i.fileNameStr);h.file(a,i.decompressed,{binary:!0,optimizedBinaryString:!0,date:i.date,dir:i.dir,comment:i.fileCommentStr.length?i.fileCommentStr:null,unixPermissions:i.unixPermissions,dosPermissions:i.dosPermissions,createFolders:o.createFolders}),i.dir||(h.file(a).unsafeOriginalName=s)}return t.zipComment.length&&(h.comment=t.zipComment),h})}},{\"./external\":6,\"./nodejsUtils\":14,\"./stream/Crc32Probe\":25,\"./utf8\":31,\"./utils\":32,\"./zipEntries\":33}],12:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../stream/GenericWorker\");function s(e,t){i.call(this,\"Nodejs stream input adapter for \"+e),this._upstreamEnded=!1,this._bindStream(t)}n.inherits(s,i),s.prototype._bindStream=function(e){var t=this;(this._stream=e).pause(),e.on(\"data\",function(e){t.push({data:e,meta:{percent:0}})}).on(\"error\",function(e){t.isPaused?this.generatedError=e:t.error(e)}).on(\"end\",function(){t.isPaused?t._upstreamEnded=!0:t.end()})},s.prototype.pause=function(){return!!i.prototype.pause.call(this)&&(this._stream.pause(),!0)},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},t.exports=s},{\"../stream/GenericWorker\":28,\"../utils\":32}],13:[function(e,t,r){\"use strict\";var i=e(\"readable-stream\").Readable;function n(e,t,r){i.call(this,t),this._helper=e;var n=this;e.on(\"data\",function(e,t){n.push(e)||n._helper.pause(),r&&r(t)}).on(\"error\",function(e){n.emit(\"error\",e)}).on(\"end\",function(){n.push(null)})}e(\"../utils\").inherits(n,i),n.prototype._read=function(){this._helper.resume()},t.exports=n},{\"../utils\":32,\"readable-stream\":16}],14:[function(e,t,r){\"use strict\";t.exports={isNode:\"undefined\"!=typeof Buffer,newBufferFrom:function(e,t){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(e,t);if(\"number\"==typeof e)throw new Error('The \"data\" argument must not be a number');return new Buffer(e,t)},allocBuffer:function(e){if(Buffer.alloc)return Buffer.alloc(e);var t=new Buffer(e);return t.fill(0),t},isBuffer:function(e){return Buffer.isBuffer(e)},isStream:function(e){return e&&\"function\"==typeof e.on&&\"function\"==typeof e.pause&&\"function\"==typeof e.resume}}},{}],15:[function(e,t,r){\"use strict\";function s(e,t,r){var n,i=u.getTypeOf(t),s=u.extend(r||{},f);s.date=s.date||new Date,null!==s.compression&&(s.compression=s.compression.toUpperCase()),\"string\"==typeof s.unixPermissions&&(s.unixPermissions=parseInt(s.unixPermissions,8)),s.unixPermissions&&16384&s.unixPermissions&&(s.dir=!0),s.dosPermissions&&16&s.dosPermissions&&(s.dir=!0),s.dir&&(e=g(e)),s.createFolders&&(n=_(e))&&b.call(this,n,!0);var a=\"string\"===i&&!1===s.binary&&!1===s.base64;r&&void 0!==r.binary||(s.binary=!a),(t instanceof c&&0===t.uncompressedSize||s.dir||!t||0===t.length)&&(s.base64=!1,s.binary=!0,t=\"\",s.compression=\"STORE\",i=\"string\");var o=null;o=t instanceof c||t instanceof l?t:p.isNode&&p.isStream(t)?new m(e,t):u.prepareContent(e,t,s.binary,s.optimizedBinaryString,s.base64);var h=new d(e,o,s);this.files[e]=h}var i=e(\"./utf8\"),u=e(\"./utils\"),l=e(\"./stream/GenericWorker\"),a=e(\"./stream/StreamHelper\"),f=e(\"./defaults\"),c=e(\"./compressedObject\"),d=e(\"./zipObject\"),o=e(\"./generate\"),p=e(\"./nodejsUtils\"),m=e(\"./nodejs/NodejsStreamInputAdapter\"),_=function(e){\"/\"===e.slice(-1)&&(e=e.substring(0,e.length-1));var t=e.lastIndexOf(\"/\");return 0<t?e.substring(0,t):\"\"},g=function(e){return\"/\"!==e.slice(-1)&&(e+=\"/\"),e},b=function(e,t){return t=void 0!==t?t:f.createFolders,e=g(e),this.files[e]||s.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]};function h(e){return\"[object RegExp]\"===Object.prototype.toString.call(e)}var n={load:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},forEach:function(e){var t,r,n;for(t in this.files)n=this.files[t],(r=t.slice(this.root.length,t.length))&&t.slice(0,this.root.length)===this.root&&e(r,n)},filter:function(r){var n=[];return this.forEach(function(e,t){r(e,t)&&n.push(t)}),n},file:function(e,t,r){if(1!==arguments.length)return e=this.root+e,s.call(this,e,t,r),this;if(h(e)){var n=e;return this.filter(function(e,t){return!t.dir&&n.test(e)})}var i=this.files[this.root+e];return i&&!i.dir?i:null},folder:function(r){if(!r)return this;if(h(r))return this.filter(function(e,t){return t.dir&&r.test(e)});var e=this.root+r,t=b.call(this,e),n=this.clone();return n.root=t.name,n},remove:function(r){r=this.root+r;var e=this.files[r];if(e||(\"/\"!==r.slice(-1)&&(r+=\"/\"),e=this.files[r]),e&&!e.dir)delete this.files[r];else for(var t=this.filter(function(e,t){return t.name.slice(0,r.length)===r}),n=0;n<t.length;n++)delete this.files[t[n].name];return this},generate:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},generateInternalStream:function(e){var t,r={};try{if((r=u.extend(e||{},{streamFiles:!1,compression:\"STORE\",compressionOptions:null,type:\"\",platform:\"DOS\",comment:null,mimeType:\"application/zip\",encodeFileName:i.utf8encode})).type=r.type.toLowerCase(),r.compression=r.compression.toUpperCase(),\"binarystring\"===r.type&&(r.type=\"string\"),!r.type)throw new Error(\"No output type specified.\");u.checkSupport(r.type),\"darwin\"!==r.platform&&\"freebsd\"!==r.platform&&\"linux\"!==r.platform&&\"sunos\"!==r.platform||(r.platform=\"UNIX\"),\"win32\"===r.platform&&(r.platform=\"DOS\");var n=r.comment||this.comment||\"\";t=o.generateWorker(this,r,n)}catch(e){(t=new l(\"error\")).error(e)}return new a(t,r.type||\"string\",r.mimeType)},generateAsync:function(e,t){return this.generateInternalStream(e).accumulate(t)},generateNodeStream:function(e,t){return(e=e||{}).type||(e.type=\"nodebuffer\"),this.generateInternalStream(e).toNodejsStream(t)}};t.exports=n},{\"./compressedObject\":2,\"./defaults\":5,\"./generate\":9,\"./nodejs/NodejsStreamInputAdapter\":12,\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31,\"./utils\":32,\"./zipObject\":35}],16:[function(e,t,r){\"use strict\";t.exports=e(\"stream\")},{stream:void 0}],17:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e);for(var t=0;t<this.data.length;t++)e[t]=255&e[t]}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data[this.zero+e]},i.prototype.lastIndexOfSignature=function(e){for(var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.length-4;0<=s;--s)if(this.data[s]===t&&this.data[s+1]===r&&this.data[s+2]===n&&this.data[s+3]===i)return s-this.zero;return-1},i.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.readData(4);return t===s[0]&&r===s[1]&&n===s[2]&&i===s[3]},i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return[];var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],18:[function(e,t,r){\"use strict\";var n=e(\"../utils\");function i(e){this.data=e,this.length=e.length,this.index=0,this.zero=0}i.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.length<this.zero+e||e<0)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+e+\"). Corrupted zip ?\")},setIndex:function(e){this.checkIndex(e),this.index=e},skip:function(e){this.setIndex(this.index+e)},byteAt:function(){},readInt:function(e){var t,r=0;for(this.checkOffset(e),t=this.index+e-1;t>=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r<this._listeners[e].length;r++)this._listeners[e][r].call(this,t)},pipe:function(e){return e.registerPrevious(this)},registerPrevious:function(e){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.streamInfo=e.streamInfo,this.mergeStreamInfo(),this.previous=e;var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.end()}),e.on(\"error\",function(e){t.error(e)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var e=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),e=!0),this.previous&&this.previous.resume(),!e},flush:function(){},processChunk:function(e){this.push(e)},withStreamInfo:function(e,t){return this.extraStreamInfo[e]=t,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var e in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,e)&&(this.streamInfo[e]=this.extraStreamInfo[e])},lock:function(){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var e=\"Worker \"+this.name;return this.previous?this.previous+\" -> \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r<t.length;r++)s+=t[r].length;switch(e){case\"string\":return t.join(\"\");case\"array\":return Array.prototype.concat.apply([],t);case\"uint8array\":for(i=new Uint8Array(s),r=0;r<t.length;r++)i.set(t[r],n),n+=t[r].length;return i;case\"nodebuffer\":return Buffer.concat(t);default:throw new Error(\"concat : unsupported type '\"+e+\"'\")}}(i,n),a);t(e)}catch(e){r(e)}n=[]}).resume()})}function f(e,t,r){var n=t;switch(t){case\"blob\":case\"arraybuffer\":n=\"uint8array\";break;case\"base64\":n=\"string\"}try{this._internalType=n,this._outputType=t,this._mimeType=r,h.checkSupport(n),this._worker=e.pipe(new i(n)),e.lock()}catch(e){this._worker=new s(\"error\"),this._worker.error(e)}}f.prototype={accumulate:function(e){return l(this,e)},on:function(e,t){var r=this;return\"data\"===e?this._worker.on(e,function(e){t.call(r,e.data,e.meta)}):this._worker.on(e,function(){h.delay(t,arguments,r)}),this},resume:function(){return h.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(e){if(h.checkSupport(\"nodestream\"),\"nodebuffer\"!==this._outputType)throw new Error(this._outputType+\" is not supported by this method\");return new o(this,{objectMode:\"nodebuffer\"!==this._outputType},e)}},t.exports=f},{\"../base64\":1,\"../external\":6,\"../nodejs/NodejsStreamOutputAdapter\":13,\"../support\":30,\"../utils\":32,\"./ConvertWorker\":24,\"./GenericWorker\":28}],30:[function(e,t,r){\"use strict\";if(r.base64=!0,r.array=!0,r.string=!0,r.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,r.nodebuffer=\"undefined\"!=typeof Buffer,r.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)r.blob=!1;else{var n=new ArrayBuffer(0);try{r.blob=0===new Blob([n],{type:\"application/zip\"}).size}catch(e){try{var i=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);i.append(n),r.blob=0===i.getBlob(\"application/zip\").size}catch(e){r.blob=!1}}}try{r.nodestream=!!e(\"readable-stream\").Readable}catch(e){r.nodestream=!1}},{\"readable-stream\":16}],31:[function(e,t,s){\"use strict\";for(var o=e(\"./utils\"),h=e(\"./support\"),r=e(\"./nodejsUtils\"),n=e(\"./stream/GenericWorker\"),u=new Array(256),i=0;i<256;i++)u[i]=252<=i?6:248<=i?5:240<=i?4:224<=i?3:192<=i?2:1;u[254]=u[254]=1;function a(){n.call(this,\"utf-8 decode\"),this.leftOver=null}function l(){n.call(this,\"utf-8 encode\")}s.utf8encode=function(e){return h.nodebuffer?r.newBufferFrom(e,\"utf-8\"):function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=h.uint8array?new Uint8Array(o):new Array(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t<s;)if((n=e[t++])<128)a[r++]=n;else if(4<(i=u[n]))a[r++]=65533,t+=i-1;else{for(n&=2===i?31:3===i?15:7;1<i&&t<s;)n=n<<6|63&e[t++],i--;1<i?a[r++]=65533:n<65536?a[r++]=n:(n-=65536,a[r++]=55296|n>>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r<e.length;++r)t[r]=255&e.charCodeAt(r);return t}e(\"setimmediate\"),a.newBlob=function(t,r){a.checkSupport(\"blob\");try{return new Blob([t],{type:r})}catch(e){try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return n.append(t),n.getBlob(r)}catch(e){throw new Error(\"Bug : can't construct the Blob.\")}}};var i={stringifyByChunk:function(e,t,r){var n=[],i=0,s=e.length;if(s<=r)return String.fromCharCode.apply(null,e);for(;i<s;)\"array\"===t||\"nodebuffer\"===t?n.push(String.fromCharCode.apply(null,e.slice(i,Math.min(i+r,s)))):n.push(String.fromCharCode.apply(null,e.subarray(i,Math.min(i+r,s)))),i+=r;return n.join(\"\")},stringifyByChar:function(e){for(var t=\"\",r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return t},applyCanBeUsed:{uint8array:function(){try{return o.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return!1}}(),nodebuffer:function(){try{return o.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(e){return!1}}()}};function s(e){var t=65536,r=a.getTypeOf(e),n=!0;if(\"uint8array\"===r?n=i.applyCanBeUsed.uint8array:\"nodebuffer\"===r&&(n=i.applyCanBeUsed.nodebuffer),n)for(;1<t;)try{return i.stringifyByChunk(e,r,t)}catch(e){t=Math.floor(t/2)}return i.stringifyByChar(e)}function f(e,t){for(var r=0;r<e.length;r++)t[r]=e[r];return t}a.applyFromCharCode=s;var c={};c.string={string:n,array:function(e){return l(e,new Array(e.length))},arraybuffer:function(e){return c.string.uint8array(e).buffer},uint8array:function(e){return l(e,new Uint8Array(e.length))},nodebuffer:function(e){return l(e,r.allocBuffer(e.length))}},c.array={string:s,array:n,arraybuffer:function(e){return new Uint8Array(e).buffer},uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(e)}},c.arraybuffer={string:function(e){return s(new Uint8Array(e))},array:function(e){return f(new Uint8Array(e),new Array(e.byteLength))},arraybuffer:n,uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(new Uint8Array(e))}},c.uint8array={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return e.buffer},uint8array:n,nodebuffer:function(e){return r.newBufferFrom(e)}},c.nodebuffer={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return c.nodebuffer.uint8array(e).buffer},uint8array:function(e){return f(e,new Uint8Array(e.length))},nodebuffer:n},a.transformTo=function(e,t){if(t=t||\"\",!e)return t;a.checkSupport(e);var r=a.getTypeOf(t);return c[r][e](t)},a.resolve=function(e){for(var t=e.split(\"/\"),r=[],n=0;n<t.length;n++){var i=t[n];\".\"===i||\"\"===i&&0!==n&&n!==t.length-1||(\"..\"===i?r.pop():r.push(i))}return r.join(\"/\")},a.getTypeOf=function(e){return\"string\"==typeof e?\"string\":\"[object Array]\"===Object.prototype.toString.call(e)?\"array\":o.nodebuffer&&r.isBuffer(e)?\"nodebuffer\":o.uint8array&&e instanceof Uint8Array?\"uint8array\":o.arraybuffer&&e instanceof ArrayBuffer?\"arraybuffer\":void 0},a.checkSupport=function(e){if(!o[e.toLowerCase()])throw new Error(e+\" is not supported by this platform\")},a.MAX_VALUE_16BITS=65535,a.MAX_VALUE_32BITS=-1,a.pretty=function(e){var t,r,n=\"\";for(r=0;r<(e||\"\").length;r++)n+=\"\\\\x\"+((t=e.charCodeAt(r))<16?\"0\":\"\")+t.toString(16).toUpperCase();return n},a.delay=function(e,t,r){setImmediate(function(){e.apply(r||null,t||[])})},a.inherits=function(e,t){function r(){}r.prototype=t.prototype,e.prototype=new r},a.extend=function(){var e,t,r={};for(e=0;e<arguments.length;e++)for(t in arguments[e])Object.prototype.hasOwnProperty.call(arguments[e],t)&&void 0===r[t]&&(r[t]=arguments[e][t]);return r},a.prepareContent=function(r,e,n,i,s){return u.Promise.resolve(e).then(function(n){return o.blob&&(n instanceof Blob||-1!==[\"[object File]\",\"[object Blob]\"].indexOf(Object.prototype.toString.call(n)))&&\"undefined\"!=typeof FileReader?new u.Promise(function(t,r){var e=new FileReader;e.onload=function(e){t(e.target.result)},e.onerror=function(e){r(e.target.error)},e.readAsArrayBuffer(n)}):n}).then(function(e){var t=a.getTypeOf(e);return t?(\"arraybuffer\"===t?e=a.transformTo(\"uint8array\",e):\"string\"===t&&(s?e=h.decode(e):n&&!0!==i&&(e=function(e){return l(e,o.uint8array?new Uint8Array(e.length):new Array(e.length))}(e))),e):u.Promise.reject(new Error(\"Can't read the data of '\"+r+\"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\"))})}},{\"./base64\":1,\"./external\":6,\"./nodejsUtils\":14,\"./support\":30,setimmediate:54}],33:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),i=e(\"./utils\"),s=e(\"./signature\"),a=e(\"./zipEntry\"),o=e(\"./support\");function h(e){this.files=[],this.loadOptions=e}h.prototype={checkSignature:function(e){if(!this.reader.readAndCheckSignature(e)){this.reader.index-=4;var t=this.reader.readString(4);throw new Error(\"Corrupted zip or bug: unexpected signature (\"+i.pretty(t)+\", expected \"+i.pretty(e)+\")\")}},isSignature:function(e,t){var r=this.reader.index;this.reader.setIndex(e);var n=this.reader.readString(4)===t;return this.reader.setIndex(r),n},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var e=this.reader.readData(this.zipCommentLength),t=o.uint8array?\"uint8array\":\"array\",r=i.transformTo(t,e);this.zipComment=this.loadOptions.decodeFileName(r)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var e,t,r,n=this.zip64EndOfCentralSize-44;0<n;)e=this.reader.readInt(2),t=this.reader.readInt(4),r=this.reader.readData(t),this.zip64ExtensibleData[e]={id:e,length:t,value:r}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var e,t;for(e=0;e<this.files.length;e++)t=this.files[e],this.reader.setIndex(t.localHeaderOffset),this.checkSignature(s.LOCAL_FILE_HEADER),t.readLocalPart(this.reader),t.handleUTF8(),t.processAttributes()},readCentralDir:function(){var e;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER);)(e=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(e);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error(\"Corrupted zip or bug: expected \"+this.centralDirRecords+\" records in central dir, got \"+this.files.length)},readEndOfCentral:function(){var e=this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END);if(e<0)throw!this.isSignature(0,s.LOCAL_FILE_HEADER)?new Error(\"Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\"):new Error(\"Corrupted zip: can't find end of central directory\");this.reader.setIndex(e);var t=e;if(this.checkSignature(s.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===i.MAX_VALUE_16BITS||this.diskWithCentralDirStart===i.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===i.MAX_VALUE_16BITS||this.centralDirRecords===i.MAX_VALUE_16BITS||this.centralDirSize===i.MAX_VALUE_32BITS||this.centralDirOffset===i.MAX_VALUE_32BITS){if(this.zip64=!0,(e=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");if(this.reader.setIndex(e),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,s.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var r=this.centralDirOffset+this.centralDirSize;this.zip64&&(r+=20,r+=12+this.zip64EndOfCentralSize);var n=t-r;if(0<n)this.isSignature(t,s.CENTRAL_FILE_HEADER)||(this.reader.zero=n);else if(n<0)throw new Error(\"Corrupted zip: missing \"+Math.abs(n)+\" bytes.\")},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},t.exports=h},{\"./reader/readerFor\":22,\"./signature\":23,\"./support\":30,\"./utils\":32,\"./zipEntry\":34}],34:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),s=e(\"./utils\"),i=e(\"./compressedObject\"),a=e(\"./crc32\"),o=e(\"./utf8\"),h=e(\"./compressions\"),u=e(\"./support\");function l(e,t){this.options=e,this.loadOptions=t}l.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(e){var t,r;if(e.skip(22),this.fileNameLength=e.readInt(2),r=e.readInt(2),this.fileName=e.readData(this.fileNameLength),e.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)\");if(null===(t=function(e){for(var t in h)if(Object.prototype.hasOwnProperty.call(h,t)&&h[t].magic===e)return h[t];return null}(this.compressionMethod)))throw new Error(\"Corrupted zip : compression \"+s.pretty(this.compressionMethod)+\" unknown (inner file : \"+s.transformTo(\"string\",this.fileName)+\")\");this.decompressed=new i(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4<i;)t=e.readInt(2),r=e.readInt(2),n=e.readData(r),this.extraFields[t]={id:t,length:r,value:n};e.setIndex(i)},handleUTF8:function(){var e=u.uint8array?\"uint8array\":\"array\";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else{var t=this.findExtraFieldUnicodePath();if(null!==t)this.fileNameStr=t;else{var r=s.transformTo(e,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(r)}var n=this.findExtraFieldUnicodeComment();if(null!==n)this.fileCommentStr=n;else{var i=s.transformTo(e,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(i)}}},findExtraFieldUnicodePath:function(){var e=this.extraFields[28789];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileName)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null},findExtraFieldUnicodeComment:function(){var e=this.extraFields[25461];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileComment)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null}},t.exports=l},{\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./reader/readerFor\":22,\"./support\":30,\"./utf8\":31,\"./utils\":32}],35:[function(e,t,r){\"use strict\";function n(e,t,r){this.name=e,this.dir=r.dir,this.date=r.date,this.comment=r.comment,this.unixPermissions=r.unixPermissions,this.dosPermissions=r.dosPermissions,this._data=t,this._dataBinary=r.binary,this.options={compression:r.compression,compressionOptions:r.compressionOptions}}var s=e(\"./stream/StreamHelper\"),i=e(\"./stream/DataWorker\"),a=e(\"./utf8\"),o=e(\"./compressedObject\"),h=e(\"./stream/GenericWorker\");n.prototype={internalStream:function(e){var t=null,r=\"string\";try{if(!e)throw new Error(\"No output type specified.\");var n=\"string\"===(r=e.toLowerCase())||\"text\"===r;\"binarystring\"!==r&&\"text\"!==r||(r=\"string\"),t=this._decompressWorker();var i=!this._dataBinary;i&&!n&&(t=t.pipe(new a.Utf8EncodeWorker)),!i&&n&&(t=t.pipe(new a.Utf8DecodeWorker))}catch(e){(t=new h(\"error\")).error(e)}return new s(t,r,\"\")},async:function(e,t){return this.internalStream(e).accumulate(t)},nodeStream:function(e,t){return this.internalStream(e||\"nodebuffer\").toNodejsStream(t)},_compressWorker:function(e,t){if(this._data instanceof o&&this._data.compression.magic===e.magic)return this._data.getCompressedWorker();var r=this._decompressWorker();return this._dataBinary||(r=r.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(r,e,t)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof h?this._data:new i(this._data)}};for(var u=[\"asText\",\"asBinary\",\"asNodeBuffer\",\"asUint8Array\",\"asArrayBuffer\"],l=function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},f=0;f<u.length;f++)n.prototype[u[f]]=l;t.exports=n},{\"./compressedObject\":2,\"./stream/DataWorker\":27,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31}],36:[function(e,l,t){(function(t){\"use strict\";var r,n,e=t.MutationObserver||t.WebKitMutationObserver;if(e){var i=0,s=new e(u),a=t.document.createTextNode(\"\");s.observe(a,{characterData:!0}),r=function(){a.data=i=++i%2}}else if(t.setImmediate||void 0===t.MessageChannel)r=\"document\"in t&&\"onreadystatechange\"in t.document.createElement(\"script\")?function(){var e=t.document.createElement(\"script\");e.onreadystatechange=function(){u(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},t.document.documentElement.appendChild(e)}:function(){setTimeout(u,0)};else{var o=new t.MessageChannel;o.port1.onmessage=u,r=function(){o.port2.postMessage(0)}}var h=[];function u(){var e,t;n=!0;for(var r=h.length;r;){for(t=h,h=[],e=-1;++e<r;)t[e]();r=h.length}n=!1}l.exports=function(e){1!==h.push(e)||n||r()}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],37:[function(e,t,r){\"use strict\";var i=e(\"immediate\");function u(){}var l={},s=[\"REJECTED\"],a=[\"FULFILLED\"],n=[\"PENDING\"];function o(e){if(\"function\"!=typeof e)throw new TypeError(\"resolver must be a function\");this.state=n,this.queue=[],this.outcome=void 0,e!==u&&d(this,e)}function h(e,t,r){this.promise=e,\"function\"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),\"function\"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected)}function f(t,r,n){i(function(){var e;try{e=r(n)}catch(e){return l.reject(t,e)}e===t?l.reject(t,new TypeError(\"Cannot resolve promise with itself\")):l.resolve(t,e)})}function c(e){var t=e&&e.then;if(e&&(\"object\"==typeof e||\"function\"==typeof e)&&\"function\"==typeof t)return function(){t.apply(e,arguments)}}function d(t,e){var r=!1;function n(e){r||(r=!0,l.reject(t,e))}function i(e){r||(r=!0,l.resolve(t,e))}var s=p(function(){e(i,n)});\"error\"===s.status&&n(s.value)}function p(e,t){var r={};try{r.value=e(t),r.status=\"success\"}catch(e){r.status=\"error\",r.value=e}return r}(t.exports=o).prototype.finally=function(t){if(\"function\"!=typeof t)return this;var r=this.constructor;return this.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){throw e})})},o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){if(\"function\"!=typeof e&&this.state===a||\"function\"!=typeof t&&this.state===s)return this;var r=new this.constructor(u);this.state!==n?f(r,this.state===a?e:t,this.outcome):this.queue.push(new h(r,e,t));return r},h.prototype.callFulfilled=function(e){l.resolve(this.promise,e)},h.prototype.otherCallFulfilled=function(e){f(this.promise,this.onFulfilled,e)},h.prototype.callRejected=function(e){l.reject(this.promise,e)},h.prototype.otherCallRejected=function(e){f(this.promise,this.onRejected,e)},l.resolve=function(e,t){var r=p(c,t);if(\"error\"===r.status)return l.reject(e,r.value);var n=r.value;if(n)d(e,n);else{e.state=a,e.outcome=t;for(var i=-1,s=e.queue.length;++i<s;)e.queue[i].callFulfilled(t)}return e},l.reject=function(e,t){e.state=s,e.outcome=t;for(var r=-1,n=e.queue.length;++r<n;)e.queue[r].callRejected(t);return e},o.resolve=function(e){if(e instanceof this)return e;return l.resolve(new this(u),e)},o.reject=function(e){var t=new this(u);return l.reject(t,e)},o.all=function(e){var r=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var n=e.length,i=!1;if(!n)return this.resolve([]);var s=new Array(n),a=0,t=-1,o=new this(u);for(;++t<n;)h(e[t],t);return o;function h(e,t){r.resolve(e).then(function(e){s[t]=e,++a!==n||i||(i=!0,l.resolve(o,s))},function(e){i||(i=!0,l.reject(o,e))})}},o.race=function(e){var t=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var r=e.length,n=!1;if(!r)return this.resolve([]);var i=-1,s=new this(u);for(;++i<r;)a=e[i],t.resolve(a).then(function(e){n||(n=!0,l.resolve(s,e))},function(e){n||(n=!0,l.reject(s,e))});var a;return s}},{immediate:36}],38:[function(e,t,r){\"use strict\";var n={};(0,e(\"./lib/utils/common\").assign)(n,e(\"./lib/deflate\"),e(\"./lib/inflate\"),e(\"./lib/zlib/constants\")),t.exports=n},{\"./lib/deflate\":39,\"./lib/inflate\":40,\"./lib/utils/common\":41,\"./lib/zlib/constants\":44}],39:[function(e,t,r){\"use strict\";var a=e(\"./zlib/deflate\"),o=e(\"./utils/common\"),h=e(\"./utils/strings\"),i=e(\"./zlib/messages\"),s=e(\"./zlib/zstream\"),u=Object.prototype.toString,l=0,f=-1,c=0,d=8;function p(e){if(!(this instanceof p))return new p(e);this.options=o.assign({level:f,method:d,chunkSize:16384,windowBits:15,memLevel:8,strategy:c,to:\"\"},e||{});var t=this.options;t.raw&&0<t.windowBits?t.windowBits=-t.windowBits:t.gzip&&0<t.windowBits&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var r=a.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(r!==l)throw new Error(i[r]);if(t.header&&a.deflateSetHeader(this.strm,t.header),t.dictionary){var n;if(n=\"string\"==typeof t.dictionary?h.string2buf(t.dictionary):\"[object ArrayBuffer]\"===u.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(r=a.deflateSetDictionary(this.strm,n))!==l)throw new Error(i[r]);this._dict_set=!0}}function n(e,t){var r=new p(t);if(r.push(e,!0),r.err)throw r.msg||i[r.err];return r.result}p.prototype.push=function(e,t){var r,n,i=this.strm,s=this.options.chunkSize;if(this.ended)return!1;n=t===~~t?t:!0===t?4:0,\"string\"==typeof e?i.input=h.string2buf(e):\"[object ArrayBuffer]\"===u.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new o.Buf8(s),i.next_out=0,i.avail_out=s),1!==(r=a.deflate(i,n))&&r!==l)return this.onEnd(r),!(this.ended=!0);0!==i.avail_out&&(0!==i.avail_in||4!==n&&2!==n)||(\"string\"===this.options.to?this.onData(h.buf2binstring(o.shrinkBuf(i.output,i.next_out))):this.onData(o.shrinkBuf(i.output,i.next_out)))}while((0<i.avail_in||0===i.avail_out)&&1!==r);return 4===n?(r=a.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l):2!==n||(this.onEnd(l),!(i.avail_out=0))},p.prototype.onData=function(e){this.chunks.push(e)},p.prototype.onEnd=function(e){e===l&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Deflate=p,r.deflate=n,r.deflateRaw=function(e,t){return(t=t||{}).raw=!0,n(e,t)},r.gzip=function(e,t){return(t=t||{}).gzip=!0,n(e,t)}},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/deflate\":46,\"./zlib/messages\":51,\"./zlib/zstream\":53}],40:[function(e,t,r){\"use strict\";var c=e(\"./zlib/inflate\"),d=e(\"./utils/common\"),p=e(\"./utils/strings\"),m=e(\"./zlib/constants\"),n=e(\"./zlib/messages\"),i=e(\"./zlib/zstream\"),s=e(\"./zlib/gzheader\"),_=Object.prototype.toString;function a(e){if(!(this instanceof a))return new a(e);this.options=d.assign({chunkSize:16384,windowBits:0,to:\"\"},e||{});var t=this.options;t.raw&&0<=t.windowBits&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(0<=t.windowBits&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),15<t.windowBits&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new i,this.strm.avail_out=0;var r=c.inflateInit2(this.strm,t.windowBits);if(r!==m.Z_OK)throw new Error(n[r]);this.header=new s,c.inflateGetHeader(this.strm,this.header)}function o(e,t){var r=new a(t);if(r.push(e,!0),r.err)throw r.msg||n[r.err];return r.result}a.prototype.push=function(e,t){var r,n,i,s,a,o,h=this.strm,u=this.options.chunkSize,l=this.options.dictionary,f=!1;if(this.ended)return!1;n=t===~~t?t:!0===t?m.Z_FINISH:m.Z_NO_FLUSH,\"string\"==typeof e?h.input=p.binstring2buf(e):\"[object ArrayBuffer]\"===_.call(e)?h.input=new Uint8Array(e):h.input=e,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new d.Buf8(u),h.next_out=0,h.avail_out=u),(r=c.inflate(h,m.Z_NO_FLUSH))===m.Z_NEED_DICT&&l&&(o=\"string\"==typeof l?p.string2buf(l):\"[object ArrayBuffer]\"===_.call(l)?new Uint8Array(l):l,r=c.inflateSetDictionary(this.strm,o)),r===m.Z_BUF_ERROR&&!0===f&&(r=m.Z_OK,f=!1),r!==m.Z_STREAM_END&&r!==m.Z_OK)return this.onEnd(r),!(this.ended=!0);h.next_out&&(0!==h.avail_out&&r!==m.Z_STREAM_END&&(0!==h.avail_in||n!==m.Z_FINISH&&n!==m.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(i=p.utf8border(h.output,h.next_out),s=h.next_out-i,a=p.buf2string(h.output,i),h.next_out=s,h.avail_out=u-s,s&&d.arraySet(h.output,h.output,i,s,0),this.onData(a)):this.onData(d.shrinkBuf(h.output,h.next_out)))),0===h.avail_in&&0===h.avail_out&&(f=!0)}while((0<h.avail_in||0===h.avail_out)&&r!==m.Z_STREAM_END);return r===m.Z_STREAM_END&&(n=m.Z_FINISH),n===m.Z_FINISH?(r=c.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===m.Z_OK):n!==m.Z_SYNC_FLUSH||(this.onEnd(m.Z_OK),!(h.avail_out=0))},a.prototype.onData=function(e){this.chunks.push(e)},a.prototype.onEnd=function(e){e===m.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=d.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Inflate=a,r.inflate=o,r.inflateRaw=function(e,t){return(t=t||{}).raw=!0,o(e,t)},r.ungzip=o},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/constants\":44,\"./zlib/gzheader\":47,\"./zlib/inflate\":49,\"./zlib/messages\":51,\"./zlib/zstream\":53}],41:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n])}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var i={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){var t,r,n,i,s,a;for(t=n=0,r=e.length;t<r;t++)n+=e[t].length;for(a=new Uint8Array(n),t=i=0,r=e.length;t<r;t++)s=e[t],a.set(s,i),i+=s.length;return a}},s={arraySet:function(e,t,r,n,i){for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){return[].concat.apply([],e)}};r.setTyped=function(e){e?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,i)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,s))},r.setTyped(n)},{}],42:[function(e,t,r){\"use strict\";var h=e(\"./common\"),i=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(e){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){s=!1}for(var u=new h.Buf8(256),n=0;n<256;n++)u[n]=252<=n?6:248<=n?5:240<=n?4:224<=n?3:192<=n?2:1;function l(e,t){if(t<65537&&(e.subarray&&s||!e.subarray&&i))return String.fromCharCode.apply(null,h.shrinkBuf(e,t));for(var r=\"\",n=0;n<t;n++)r+=String.fromCharCode(e[n]);return r}u[254]=u[254]=1,r.string2buf=function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=new h.Buf8(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r<n;r++)t[r]=e.charCodeAt(r);return t},r.buf2string=function(e,t){var r,n,i,s,a=t||e.length,o=new Array(2*a);for(r=n=0;r<a;)if((i=e[r++])<128)o[n++]=i;else if(4<(s=u[i]))o[n++]=65533,r+=s-1;else{for(i&=2===s?31:3===s?15:7;1<s&&r<a;)i=i<<6|63&e[r++],s--;1<s?o[n++]=65533:i<65536?o[n++]=i:(i-=65536,o[n++]=55296|i>>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3<r?2e3:r;s=s+(i=i+t[n++]|0)|0,--a;);i%=65521,s%=65521}return i|s<<16|0}},{}],44:[function(e,t,r){\"use strict\";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(e,t,r){\"use strict\";var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4<e?9:0)}function D(e){for(var t=e.length;0<=--t;)e[t]=0}function F(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&s<c);if(n=S-(c-s),s=c-S,a<n){if(e.match_start=t,o<=(a=n))break;d=u[s+a-1],p=u[s+a]}}}while((t=f[t&l])>h&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u<l&&(l=u),r=0===l?0:(a.avail_in-=l,c.arraySet(o,a.input,a.next_in,l,h),1===a.state.wrap?a.adler=d(a.adler,o,l,h):2===a.state.wrap&&(a.adler=p(a.adler,o,l,h)),a.next_in+=l,a.total_in+=l,l),e.lookahead+=r,e.lookahead+e.insert>=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+x-1])&e.hash_mask,e.prev[s&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=s,s++,e.insert--,!(e.lookahead+e.insert<x)););}while(e.lookahead<z&&0!==e.strm.avail_in)}function Z(e,t){for(var r,n;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==r&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r)),e.match_length>=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart,0!=--e.match_length;);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else n=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function W(e,t){for(var r,n,i;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=x-1,0!==r&&e.prev_length<e.max_lazy_match&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r),e.match_length<=5&&(1===e.strategy||e.match_length===x&&4096<e.strstart-e.match_start)&&(e.match_length=x-1)),e.prev_length>=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!=--e.prev_length;);if(e.match_available=0,e.match_length=x-1,e.strstart++,n&&(N(e,!1),0===e.strm.avail_out))return A}else if(e.match_available){if((n=u._tr_tally(e,0,e.window[e.strstart-1]))&&N(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return A}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=u._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function M(e,t,r,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=i}function H(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=v,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new c.Buf16(2*w),this.dyn_dtree=new c.Buf16(2*(2*a+1)),this.bl_tree=new c.Buf16(2*(2*o+1)),D(this.dyn_ltree),D(this.dyn_dtree),D(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new c.Buf16(k+1),this.heap=new c.Buf16(2*s+1),D(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new c.Buf16(2*s+1),D(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function G(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=i,(t=e.state).pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?C:E,e.adler=2===t.wrap?0:1,t.last_flush=l,u._tr_init(t),m):R(e,_)}function K(e){var t=G(e);return t===m&&function(e){e.window_size=2*e.w_size,D(e.head),e.max_lazy_match=h[e.level].max_lazy,e.good_match=h[e.level].good_length,e.nice_match=h[e.level].nice_length,e.max_chain_length=h[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=x-1,e.match_available=0,e.ins_h=0}(e.state),t}function Y(e,t,r,n,i,s){if(!e)return _;var a=1;if(t===g&&(t=6),n<0?(a=0,n=-n):15<n&&(a=2,n-=16),i<1||y<i||r!==v||n<8||15<n||t<0||9<t||s<0||b<s)return R(e,_);8===n&&(n=9);var o=new H;return(e.state=o).strm=e,o.wrap=a,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=i+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+x-1)/x),o.window=new c.Buf8(2*o.w_size),o.head=new c.Buf16(o.hash_size),o.prev=new c.Buf16(o.w_size),o.lit_bufsize=1<<i+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new c.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=t,o.strategy=s,o.method=r,K(e)}h=[new M(0,0,0,0,function(e,t){var r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5<t||t<0)return e?R(e,_):_;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||666===n.status&&t!==f)return R(e,0===e.avail_out?-5:_);if(n.strm=e,r=n.last_flush,n.last_flush=t,n.status===C)if(2===n.wrap)e.adler=0,U(n,31),U(n,139),U(n,8),n.gzhead?(U(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),U(n,255&n.gzhead.time),U(n,n.gzhead.time>>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0<e.strstart&&(n=a[i=e.strstart-1])===a[++i]&&n===a[++i]&&n===a[++i]){s=e.strstart+S;do{}while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&i<s);e.match_length=S-(s-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0<n.wrap&&(n.wrap=-n.wrap),0!==n.pending?m:1)},r.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==C&&69!==t&&73!==t&&91!==t&&103!==t&&t!==E&&666!==t?R(e,_):(e.state=null,t===E?R(e,-3):m):_},r.deflateSetDictionary=function(e,t){var r,n,i,s,a,o,h,u,l=t.length;if(!e||!e.state)return _;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==C||r.lookahead)return _;for(1===s&&(e.adler=d(e.adler,t,l,0)),r.wrap=0,l>=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<<r.hash_shift^r.window[n+x-1])&r.hash_mask,r.prev[n&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=n,n++,--i;);r.strstart=n,r.lookahead=x-1,j(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=x-1,r.match_available=0,e.next_in=o,e.input=h,e.avail_in=a,r.wrap=s,m},r.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./messages\":51,\"./trees\":52}],47:[function(e,t,r){\"use strict\";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}},{}],48:[function(e,t,r){\"use strict\";t.exports=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C;r=e.state,n=e.next_in,z=e.input,i=n+(e.avail_in-5),s=e.next_out,C=e.output,a=s-(t-e.avail_out),o=s+(e.avail_out-257),h=r.dmax,u=r.wsize,l=r.whave,f=r.wnext,c=r.window,d=r.hold,p=r.bits,m=r.lencode,_=r.distcode,g=(1<<r.lenbits)-1,b=(1<<r.distbits)-1;e:do{p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=m[d&g];t:for(;;){if(d>>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<<y)-1)];continue t}if(32&y){r.mode=12;break e}e.msg=\"invalid literal/length code\",r.mode=30;break e}w=65535&v,(y&=15)&&(p<y&&(d+=z[n++]<<p,p+=8),w+=d&(1<<y)-1,d>>>=y,p-=y),p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=_[d&b];r:for(;;){if(d>>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<<y)-1)];continue r}e.msg=\"invalid distance code\",r.mode=30;break e}if(k=65535&v,p<(y&=15)&&(d+=z[n++]<<p,(p+=8)<y&&(d+=z[n++]<<p,p+=8)),h<(k+=d&(1<<y)-1)){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(d>>>=y,p-=y,(y=s-a)<k){if(l<(y=k-y)&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(S=c,(x=0)===f){if(x+=u-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}}else if(f<y){if(x+=u+f-y,(y-=f)<w){for(w-=y;C[s++]=c[x++],--y;);if(x=0,f<w){for(w-=y=f;C[s++]=c[x++],--y;);x=s-k,S=C}}}else if(x+=f-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}for(;2<w;)C[s++]=S[x++],C[s++]=S[x++],C[s++]=S[x++],w-=3;w&&(C[s++]=S[x++],1<w&&(C[s++]=S[x++]))}else{for(x=s-k;C[s++]=C[x++],C[s++]=C[x++],C[s++]=C[x++],2<(w-=3););w&&(C[s++]=C[x++],1<w&&(C[s++]=C[x++]))}break}}break}}while(n<i&&s<o);n-=w=p>>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n<i?i-n+5:5-(n-i),e.avail_out=s<o?o-s+257:257-(s-o),r.hold=d,r.bits=p}},{}],49:[function(e,t,r){\"use strict\";var I=e(\"../utils/common\"),O=e(\"./adler32\"),B=e(\"./crc32\"),R=e(\"./inffast\"),T=e(\"./inftrees\"),D=1,F=2,N=0,U=-2,P=1,n=852,i=592;function L(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15<t)?U:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,o(e))):U}function u(e,t){var r,n;return e?(n=new s,(e.state=n).window=null,(r=h(e,t))!==N&&(e.state=null),r):U}var l,f,c=!0;function j(e){if(c){var t;for(l=new I.Buf32(512),f=new I.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(T(D,e.lens,0,288,l,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;T(F,e.lens,0,32,f,0,e.work,{bits:5}),c=!1}e.lencode=l,e.lenbits=9,e.distcode=f,e.distbits=5}function Z(e,t,r,n){var i,s=e.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new I.Buf8(s.wsize)),n>=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}r.inflateReset=o,r.inflateReset2=h,r.inflateResetKeep=a,r.inflateInit=function(e){return u(e,15)},r.inflateInit2=u,r.inflate=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C=0,E=new I.Buf8(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return U;12===(r=e.state).mode&&(r.mode=13),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,f=o,c=h,x=N;e:for(;;)switch(r.mode){case P:if(0===r.wrap){r.mode=13;break}for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(2&r.wrap&&35615===u){E[r.check=0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<<k,e.adler=r.check=1,r.mode=512&u?10:12,l=u=0;break;case 2:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.flags=u,8!=(255&r.flags)){e.msg=\"unknown compression method\",r.mode=30;break}if(57344&r.flags){e.msg=\"unknown header flags set\",r.mode=30;break}r.head&&(r.head.text=u>>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.time=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.xflags=255&u,r.head.os=u>>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length=u,r.head&&(r.head.extra_len=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.comment+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(65535&r.check)){e.msg=\"header crc mismatch\",r.mode=30;break}l=u=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}e.adler=r.check=L(u),l=u=0,r.mode=11;case 11:if(0===r.havedict)return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,2;e.adler=r.check=1,r.mode=12;case 12:if(5===t||6===t)break e;case 13:if(r.last){u>>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}switch(r.last=1&u,l-=1,3&(u>>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if((65535&u)!=(u>>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o<d&&(d=o),h<d&&(d=h),0===d)break e;I.arraySet(i,n,s,d,a),o-=d,s+=d,h-=d,a+=d,r.length-=d;break}r.mode=12;break;case 17:for(;l<14;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.nlen=257+(31&u),u>>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286<r.nlen||30<r.ndist){e.msg=\"too many length or distance symbols\",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.lens[A[r.have++]]=7&u,u>>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(b<16)u>>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u>>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=3+(7&(u>>>=_)),u>>>=3,l-=3}else{for(z=_+7;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=11+(127&(u>>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(g&&0==(240&g)){for(v=_,y=g,w=b;g=(C=r.lencode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<<r.distbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(0==(240&g)){for(v=_,y=g,w=b;g=(C=r.distcode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.offset+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(h<d&&(d=h),h-=d,r.length-=d;i[a++]=m[p++],--d;);0===r.length&&(r.mode=21);break;case 26:if(0===h)break e;i[a++]=r.length,h--,r.mode=21;break;case 27:if(r.wrap){for(;l<32;){if(0===o)break e;o--,u|=n[s++]<<l,l+=8}if(c-=h,e.total_out+=c,r.total+=c,c&&(e.adler=r.check=r.flags?B(r.check,i,c,a-c):O(r.check,i,c,a-c)),c=h,(r.flags?u:L(u))!==r.check){e.msg=\"incorrect data check\",r.mode=30;break}l=u=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(4294967295&r.total)){e.msg=\"incorrect length check\",r.mode=30;break}l=u=0}r.mode=29;case 29:x=1;break e;case 30:x=-3;break e;case 31:return-4;case 32:default:return U}return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,(r.wsize||c!==e.avail_out&&r.mode<30&&(r.mode<27||4!==t))&&Z(e,e.output,e.next_out,c-e.avail_out)?(r.mode=31,-4):(f-=e.avail_in,c-=e.avail_out,e.total_in+=f,e.total_out+=c,r.total+=c,r.wrap&&c&&(e.adler=r.check=r.flags?B(r.check,i,c,e.next_out-c):O(r.check,i,c,e.next_out-c)),e.data_type=r.bits+(r.last?64:0)+(12===r.mode?128:0)+(20===r.mode||15===r.mode?256:0),(0==f&&0===c||4===t)&&x===N&&(x=-5),x)},r.inflateEnd=function(e){if(!e||!e.state)return U;var t=e.state;return t.window&&(t.window=null),e.state=null,N},r.inflateGetHeader=function(e,t){var r;return e&&e.state?0==(2&(r=e.state).wrap)?U:((r.head=t).done=!1,N):U},r.inflateSetDictionary=function(e,t){var r,n=t.length;return e&&e.state?0!==(r=e.state).wrap&&11!==r.mode?U:11===r.mode&&O(1,t,n,0)!==r.check?-3:Z(e,t,n,n)?(r.mode=31,-4):(r.havedict=1,N):U},r.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./inffast\":48,\"./inftrees\":50}],50:[function(e,t,r){\"use strict\";var D=e(\"../utils/common\"),F=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],N=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],U=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],P=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(e,t,r,n,i,s,a,o){var h,u,l,f,c,d,p,m,_,g=o.bits,b=0,v=0,y=0,w=0,k=0,x=0,S=0,z=0,C=0,E=0,A=null,I=0,O=new D.Buf16(16),B=new D.Buf16(16),R=null,T=0;for(b=0;b<=15;b++)O[b]=0;for(v=0;v<n;v++)O[t[r+v]]++;for(k=g,w=15;1<=w&&0===O[w];w--);if(w<k&&(k=w),0===w)return i[s++]=20971520,i[s++]=20971520,o.bits=1,0;for(y=1;y<w&&0===O[y];y++);for(k<y&&(k=y),b=z=1;b<=15;b++)if(z<<=1,(z-=O[b])<0)return-1;if(0<z&&(0===e||1!==w))return-1;for(B[1]=0,b=1;b<15;b++)B[b+1]=B[b]+O[b];for(v=0;v<n;v++)0!==t[r+v]&&(a[B[t[r+v]]++]=v);if(d=0===e?(A=R=a,19):1===e?(A=F,I-=257,R=N,T-=257,256):(A=U,R=P,-1),b=y,c=s,S=v=E=0,l=-1,f=(C=1<<(x=k))-1,1===e&&852<C||2===e&&592<C)return 1;for(;;){for(p=b-S,_=a[v]<d?(m=0,a[v]):a[v]>d?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<<b-S,y=u=1<<x;i[c+(E>>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<<b-1;E&h;)h>>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k<b&&(E&f)!==l){for(0===S&&(S=k),c+=y,z=1<<(x=b-S);x+S<w&&!((z-=O[x+S])<=0);)x++,z<<=1;if(C+=1<<x,1===e&&852<C||2===e&&592<C)return 1;i[l=E&f]=k<<24|x<<16|c-s|0}}return 0!==E&&(i[c+E]=b-S<<24|64<<16|0),o.bits=k,0}},{\"../utils/common\":41}],51:[function(e,t,r){\"use strict\";t.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],52:[function(e,t,r){\"use strict\";var i=e(\"../utils/common\"),o=0,h=1;function n(e){for(var t=e.length;0<=--t;)e[t]=0}var s=0,a=29,u=256,l=u+1+a,f=30,c=19,_=2*l+1,g=15,d=16,p=7,m=256,b=16,v=17,y=18,w=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],k=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],x=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],S=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],z=new Array(2*(l+2));n(z);var C=new Array(2*f);n(C);var E=new Array(512);n(E);var A=new Array(256);n(A);var I=new Array(a);n(I);var O,B,R,T=new Array(f);function D(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function F(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function N(e){return e<256?E[e]:E[256+(e>>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<<e.bi_valid&65535,U(e,e.bi_buf),e.bi_buf=t>>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=r)}function L(e,t,r){P(e,r[2*t],r[2*t+1])}function j(e,t){for(var r=0;r|=1&e,e>>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t<l;t++)e.dyn_ltree[2*t]=0;for(t=0;t<f;t++)e.dyn_dtree[2*t]=0;for(t=0;t<c;t++)e.bl_tree[2*t]=0;e.dyn_ltree[2*m]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function M(e){8<e.bi_valid?U(e,e.bi_buf):0<e.bi_valid&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function H(e,t,r,n){var i=2*t,s=2*r;return e[i]<e[s]||e[i]===e[s]&&n[t]<=n[r]}function G(e,t,r){for(var n=e.heap[r],i=r<<1;i<=e.heap_len&&(i<e.heap_len&&H(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!H(t,n,e.heap[i],e.depth));)e.heap[r]=e.heap[i],r=i,i<<=1;e.heap[r]=n}function K(e,t,r){var n,i,s,a,o=0;if(0!==e.last_lit)for(;n=e.pending_buf[e.d_buf+2*o]<<8|e.pending_buf[e.d_buf+2*o+1],i=e.pending_buf[e.l_buf+o],o++,0===n?L(e,i,t):(L(e,(s=A[i])+u+1,t),0!==(a=w[s])&&P(e,i-=I[s],a),L(e,s=N(--n),r),0!==(a=k[s])&&P(e,n-=T[s],a)),o<e.last_lit;);L(e,m,t)}function Y(e,t){var r,n,i,s=t.dyn_tree,a=t.stat_desc.static_tree,o=t.stat_desc.has_stree,h=t.stat_desc.elems,u=-1;for(e.heap_len=0,e.heap_max=_,r=0;r<h;r++)0!==s[2*r]?(e.heap[++e.heap_len]=u=r,e.depth[r]=0):s[2*r+1]=0;for(;e.heap_len<2;)s[2*(i=e.heap[++e.heap_len]=u<2?++u:0)]=1,e.depth[i]=0,e.opt_len--,o&&(e.static_len-=a[2*i+1]);for(t.max_code=u,r=e.heap_len>>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u<n||(e.bl_count[s]++,a=0,d<=n&&(a=c[n-d]),o=h[2*n],e.opt_len+=o*(s+a),f&&(e.static_len+=o*(l[2*n+1]+a)));if(0!==m){do{for(s=p-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[p]--,m-=2}while(0<m);for(s=p;0!==s;s--)for(n=e.bl_count[s];0!==n;)u<(i=e.heap[--r])||(h[2*i+1]!==s&&(e.opt_len+=(s-h[2*i+1])*h[2*i],h[2*i+1]=s),n--)}}(e,t),Z(s,u,e.bl_count)}function X(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=a,a=t[2*(n+1)+1],++o<h&&i===a||(o<u?e.bl_tree[2*i]+=o:0!==i?(i!==s&&e.bl_tree[2*i]++,e.bl_tree[2*b]++):o<=10?e.bl_tree[2*v]++:e.bl_tree[2*y]++,s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4))}function V(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),n=0;n<=r;n++)if(i=a,a=t[2*(n+1)+1],!(++o<h&&i===a)){if(o<u)for(;L(e,i,e.bl_tree),0!=--o;);else 0!==i?(i!==s&&(L(e,i,e.bl_tree),o--),L(e,b,e.bl_tree),P(e,o-3,2)):o<=10?(L(e,v,e.bl_tree),P(e,o-3,3)):(L(e,y,e.bl_tree),P(e,o-11,7));s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4)}}n(T);var q=!1;function J(e,t,r,n){P(e,(s<<1)+(n?1:0),3),function(e,t,r,n){M(e),n&&(U(e,r),U(e,~r)),i.arraySet(e.pending_buf,e.window,t,r,e.pending),e.pending+=r}(e,t,r,!0)}r._tr_init=function(e){q||(function(){var e,t,r,n,i,s=new Array(g+1);for(n=r=0;n<a-1;n++)for(I[n]=r,e=0;e<1<<w[n];e++)A[r++]=n;for(A[r-1]=n,n=i=0;n<16;n++)for(T[n]=i,e=0;e<1<<k[n];e++)E[i++]=n;for(i>>=7;n<f;n++)for(T[n]=i<<7,e=0;e<1<<k[n]-7;e++)E[256+i++]=n;for(t=0;t<=g;t++)s[t]=0;for(e=0;e<=143;)z[2*e+1]=8,e++,s[8]++;for(;e<=255;)z[2*e+1]=9,e++,s[9]++;for(;e<=279;)z[2*e+1]=7,e++,s[7]++;for(;e<=287;)z[2*e+1]=8,e++,s[8]++;for(Z(z,l+1,s),e=0;e<f;e++)C[2*e+1]=5,C[2*e]=j(e,5);O=new D(z,w,u+1,l,g),B=new D(C,k,0,f,g),R=new D(new Array(0),x,0,c,p)}(),q=!0),e.l_desc=new F(e.dyn_ltree,O),e.d_desc=new F(e.dyn_dtree,B),e.bl_desc=new F(e.bl_tree,R),e.bi_buf=0,e.bi_valid=0,W(e)},r._tr_stored_block=J,r._tr_flush_block=function(e,t,r,n){var i,s,a=0;0<e.level?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t<u;t++)if(0!==e.dyn_ltree[2*t])return h;return o}(e)),Y(e,e.l_desc),Y(e,e.d_desc),a=function(e){var t;for(X(e,e.dyn_ltree,e.l_desc.max_code),X(e,e.dyn_dtree,e.d_desc.max_code),Y(e,e.bl_desc),t=c-1;3<=t&&0===e.bl_tree[2*S[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i<n;i++)P(e,e.bl_tree[2*S[i]+1],3);V(e,e.dyn_ltree,t-1),V(e,e.dyn_dtree,r-1)}(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),K(e,e.dyn_ltree,e.dyn_dtree)),W(e),n&&M(e)},r._tr_tally=function(e,t,r){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r<t.length;r++)t[r]=arguments[r+1];var n={callback:e,args:t};return h[o]=n,i(o),o++},e.clearImmediate=f}function f(e){delete h[e]}function c(e){if(u)setTimeout(c,0,e);else{var t=h[e];if(t){u=!0;try{!function(e){var t=e.callback,r=e.args;switch(r.length){case 0:t();break;case 1:t(r[0]);break;case 2:t(r[0],r[1]);break;case 3:t(r[0],r[1],r[2]);break;default:t.apply(n,r)}}(t)}finally{f(e),u=!1}}}}function d(e){e.source===r&&\"string\"==typeof e.data&&0===e.data.indexOf(a)&&c(+e.data.slice(a.length))}}(\"undefined\"==typeof self?void 0===e?this:e:self)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[10])(10)});","/*\n* FileSaver.js\n* A saveAs() FileSaver implementation.\n*\n* By Eli Grey, http://eligrey.com\n*\n* License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)\n* source : http://purl.eligrey.com/github/FileSaver.js\n*/\n\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nvar _global = typeof window === 'object' && window.window === window\n ? window : typeof self === 'object' && self.self === self\n ? self : typeof global === 'object' && global.global === global\n ? global\n : this\n\nfunction bom (blob, opts) {\n if (typeof opts === 'undefined') opts = { autoBom: false }\n else if (typeof opts !== 'object') {\n console.warn('Deprecated: Expected third argument to be a object')\n opts = { autoBom: !opts }\n }\n\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (opts.autoBom && /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n return new Blob([String.fromCharCode(0xFEFF), blob], { type: blob.type })\n }\n return blob\n}\n\nfunction download (url, name, opts) {\n var xhr = new XMLHttpRequest()\n xhr.open('GET', url)\n xhr.responseType = 'blob'\n xhr.onload = function () {\n saveAs(xhr.response, name, opts)\n }\n xhr.onerror = function () {\n console.error('could not download file')\n }\n xhr.send()\n}\n\nfunction corsEnabled (url) {\n var xhr = new XMLHttpRequest()\n // use sync to avoid popup blocker\n xhr.open('HEAD', url, false)\n try {\n xhr.send()\n } catch (e) {}\n return xhr.status >= 200 && xhr.status <= 299\n}\n\n// `a.click()` doesn't work for all browsers (#465)\nfunction click (node) {\n try {\n node.dispatchEvent(new MouseEvent('click'))\n } catch (e) {\n var evt = document.createEvent('MouseEvents')\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80,\n 20, false, false, false, false, 0, null)\n node.dispatchEvent(evt)\n }\n}\n\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nvar isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent)\n\nvar saveAs = _global.saveAs || (\n // probably in some web worker\n (typeof window !== 'object' || window !== _global)\n ? function saveAs () { /* noop */ }\n\n // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView\n : ('download' in HTMLAnchorElement.prototype && !isMacOSWebView)\n ? function saveAs (blob, name, opts) {\n var URL = _global.URL || _global.webkitURL\n var a = document.createElement('a')\n name = name || blob.name || 'download'\n\n a.download = name\n a.rel = 'noopener' // tabnabbing\n\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n\n if (typeof blob === 'string') {\n // Support regular links\n a.href = blob\n if (a.origin !== location.origin) {\n corsEnabled(a.href)\n ? download(blob, name, opts)\n : click(a, a.target = '_blank')\n } else {\n click(a)\n }\n } else {\n // Support blobs\n a.href = URL.createObjectURL(blob)\n setTimeout(function () { URL.revokeObjectURL(a.href) }, 4E4) // 40s\n setTimeout(function () { click(a) }, 0)\n }\n }\n\n // Use msSaveOrOpenBlob as a second approach\n : 'msSaveOrOpenBlob' in navigator\n ? function saveAs (blob, name, opts) {\n name = name || blob.name || 'download'\n\n if (typeof blob === 'string') {\n if (corsEnabled(blob)) {\n download(blob, name, opts)\n } else {\n var a = document.createElement('a')\n a.href = blob\n a.target = '_blank'\n setTimeout(function () { click(a) })\n }\n } else {\n navigator.msSaveOrOpenBlob(bom(blob, opts), name)\n }\n }\n\n // Fallback to using FileReader and a popup\n : function saveAs (blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open('', '_blank')\n if (popup) {\n popup.document.title =\n popup.document.body.innerText = 'downloading...'\n }\n\n if (typeof blob === 'string') return download(blob, name, opts)\n\n var force = blob.type === 'application/octet-stream'\n var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari\n var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent)\n\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined') {\n // Safari doesn't allow downloading of blob URLs\n var reader = new FileReader()\n reader.onloadend = function () {\n var url = reader.result\n url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;')\n if (popup) popup.location.href = url\n else location = url\n popup = null // reverse-tabnabbing #460\n }\n reader.readAsDataURL(blob)\n } else {\n var URL = _global.URL || _global.webkitURL\n var url = URL.createObjectURL(blob)\n if (popup) popup.location = url\n else location.href = url\n popup = null // reverse-tabnabbing #460\n setTimeout(function () { URL.revokeObjectURL(url) }, 4E4) // 40s\n }\n }\n)\n\n_global.saveAs = saveAs.saveAs = saveAs\n\nif (typeof module !== 'undefined') {\n module.exports = saveAs;\n}\n","/**\n * @stampgis/webrtc 主入口\n *\n * 本包封装 StampGIS 私有地图 SDK,提供两个核心能力:\n *\n * 1. loadCore() —— 动态加载三个运行时脚本(config / pixelstreaming / playerControl)\n * 三个脚本已内置在包的 assets/ 目录,也可指向外部 CDN\n *\n * 2. StampUtil —— 接口封装库(从 StampUtil.ts 编译),直接 import 使用\n * 内部依赖 window.StampAPI 全局变量,需先调用 loadCore()\n *\n * 三种加载方式:\n * // 方式一:从包内 assets 加载(需打包器配合,推荐 Vite)\n * await loadCore({ useBundledAssets: true })\n *\n * // 方式二:从服务器/CDN 加载\n * await loadCore({ baseUrl: '/gis/' })\n *\n * // 方式三:精确指定每个脚本 URL\n * await loadCore({ configUrl: '...', pixelstreamingUrl: '...', playerControlUrl: '...' })\n */\n\nimport StampUtil from './StampUtil';\nimport { loadScript, waitForGlobal } from './loader';\nimport type { CoreLoadOptions, InitMapOptions } from './types';\n\n// ============ 默认脚本路径 ============\n\n/**\n * 默认脚本相对路径(相对于 baseUrl 或包内 assets 目录)\n *\n * 对应项目中的目录结构:\n * config/stamp_core_config.js\n * core/pixelstreaming.js\n * core/playerControl.js\n */\nconst SCRIPT_PATHS = {\n config: 'config/stamp_core_config.js',\n pixelstreaming: 'core/pixelstreaming.js',\n playerControl: 'core/playerControl.js',\n} as const;\n\n// ============ 包内 assets 路径 ============\n\n/**\n * 包内 assets 脚本的导入路径\n *\n * 使用方需要通过打包器(Vite/Webpack)将这些路径解析为最终 URL。\n * Vite 默认支持,Webpack 需要 file-loader 或 asset/resource 配置。\n *\n * 示例(Vite):\n * import configUrl from '@stampgis/webrtc/assets/config/stamp_core_config.js'\n * // configUrl = '/node_modules/.vite/deps/assets/config/stamp_core_config.js'\n *\n * 示例(Webpack 5):\n * // vue.config.js 中配置:\n * // module: { rules: [{ test: /@stampgis\\/webrtc.*\\.js$/, type: 'asset/resource' }] }\n */\nconst ASSET_IMPORTS = {\n config: '@stampgis/webrtc/assets/config/stamp_core_config.js',\n pixelstreaming: '@stampgis/webrtc/assets/core/pixelstreaming.js',\n playerControl: '@stampgis/webrtc/assets/core/playerControl.js',\n} as const;\n\n// ============ 包内 assets URL(运行时解析) ============\n\n/**\n * 通过 `new URL(path, import.meta.url)` 获取包内 assets 的运行时 URL。\n *\n * 路径相对于 dist/index.js(构建产物位置),所以用 `../assets/`:\n * dist/index.js → ../assets/ → 包根目录的 assets/\n *\n * 这是 Vite 官方推荐的静态资源引用方式:\n * https://vitejs.dev/guide/assets.html#new-url-url-import-meta-url\n *\n * 注意:必须使用 `new URL` + `import.meta.url` 形式,\n * Vite 和 Webpack 5+ 会识别这个模式并在编译期正确处理路径。\n */\nconst BUNDLED_ASSET_URLS = {\n config: new URL('../assets/config/stamp_core_config.js', import.meta.url).href,\n pixelstreaming: new URL('../assets/core/pixelstreaming.js', import.meta.url).href,\n playerControl: new URL('../assets/core/playerControl.js', import.meta.url).href,\n} as const;\n\n// ============ 加载状态 ============\n\nlet coreLoaded = false;\n\n// ============ loadCore ============\n\n/**\n * 动态加载三个核心脚本\n *\n * 加载顺序(严格按序,因为存在依赖):\n * 1. stamp_core_config.js → 注册 window.stamp_core_config\n * 2. pixelstreaming.js → 注册 window.StampPixelStreaming\n * 3. playerControl.js → 注册 window.StampAPI(依赖前两个脚本)\n *\n * 加载完成后,如果传入了 match_maker,会覆盖 stamp_core_config 中的匹配器地址。\n *\n * @param options 加载配置\n *\n * @example\n * ```ts\n * // 方式一:从包内 assets 加载(Vite 推荐,无需手动复制文件)\n * await loadCore({ useBundledAssets: true });\n *\n * // 方式二:从服务器/CDN 加载\n * await loadCore({ baseUrl: '/gis/' });\n *\n * // 方式三:精确指定每个脚本 URL\n * await loadCore({\n * configUrl: 'https://cdn.example.com/config/stamp_core_config.js',\n * pixelstreamingUrl: 'https://cdn.example.com/core/pixelstreaming.js',\n * playerControlUrl: 'https://cdn.example.com/core/playerControl.js',\n * match_maker: '/matchmaker',\n * });\n *\n * // 方式四:通过打包器 import 获取 URL(最大灵活性)\n * import configUrl from '@stampgis/webrtc/assets/config/stamp_core_config.js'\n * import pixelstreamingUrl from '@stampgis/webrtc/assets/core/pixelstreaming.js'\n * import playerControlUrl from '@stampgis/webrtc/assets/core/playerControl.js'\n * await loadCore({ configUrl, pixelstreamingUrl, playerControlUrl });\n * ```\n */\nexport async function loadCore(options: CoreLoadOptions = {}): Promise<void> {\n if (coreLoaded) return;\n\n const {\n baseUrl = '',\n configUrl,\n pixelstreamingUrl,\n playerControlUrl,\n match_maker,\n timeout = 30000,\n useBundledAssets = false,\n } = options;\n\n // 解析脚本 URL —— 优先级:显式 URL > useBundledAssets > baseUrl 拼接\n let configSrc: string;\n let pixelstreamingSrc: string;\n let playerControlSrc: string;\n\n if (configUrl && pixelstreamingUrl && playerControlUrl) {\n // 方式三/四:显式指定 URL\n configSrc = configUrl;\n pixelstreamingSrc = pixelstreamingUrl;\n playerControlSrc = playerControlUrl;\n } else if (useBundledAssets) {\n // 方式一:从包内 assets 加载(编译期已解析为 URL)\n configSrc = BUNDLED_ASSET_URLS.config;\n pixelstreamingSrc = BUNDLED_ASSET_URLS.pixelstreaming;\n playerControlSrc = BUNDLED_ASSET_URLS.playerControl;\n } else {\n // 方式二:baseUrl 拼接\n configSrc = baseUrl + SCRIPT_PATHS.config;\n pixelstreamingSrc = baseUrl + SCRIPT_PATHS.pixelstreaming;\n playerControlSrc = baseUrl + SCRIPT_PATHS.playerControl;\n }\n\n if (!configSrc || !pixelstreamingSrc || !playerControlSrc) {\n throw new Error(\n '[@stampgis/webrtc] 未配置脚本加载方式。\\n' +\n '请选择以下方式之一:\\n' +\n ' 1. loadCore({ useBundledAssets: true }) —— 从包内 assets 加载\\n' +\n ' 2. loadCore({ baseUrl: \"/gis/\" }) —— 从服务器加载\\n' +\n ' 3. loadCore({ configUrl, pixelstreamingUrl, playerControlUrl }) —— 精确 URL\\n',\n );\n }\n\n // 按顺序加载(playerControl 依赖 pixelstreaming 和 config)\n await loadScript(configSrc);\n await waitForGlobal('stamp_core_config', timeout);\n\n await loadScript(pixelstreamingSrc);\n await waitForGlobal('StampPixelStreaming', timeout);\n\n await loadScript(playerControlSrc);\n await waitForGlobal('StampAPI', timeout);\n\n // 覆盖服务器 IP 配置\n if (match_maker && window.stamp_core_config) {\n const cfg = window.stamp_core_config;\n cfg.match_maker = match_maker;\n }\n\n coreLoaded = true;\n}\n\n// ============ 工具函数 ============\n\n/**\n * 解析 container/errorContainer 参数,支持传入 id 字符串或 HTMLElement\n */\nfunction resolveElement(el: string | HTMLElement, name: string): HTMLElement {\n if (typeof el === 'string') {\n const found = document.getElementById(el);\n if (!found) {\n throw new Error(`[@stampgis/webrtc] ${name}: 找不到 id 为 \"${el}\" 的元素`);\n }\n return found;\n }\n return el;\n}\n\n// ============ initMap ============\n\n/**\n * 初始化地图(地球渲染)\n *\n * 如果核心脚本尚未加载(window.StampAPI 不存在),会自动调用 loadCore()。\n * 默认使用 useBundledAssets: true,也可通过 coreOptions 指定加载方式。\n *\n * @param options 初始化参数\n *\n * @example\n * ```ts\n * // 最简用法:自动加载 + 初始化(通过 id 指定容器)\n * await initMap({ container: 'earthDiv' });\n *\n * // 传入 DOM 元素 + 自定义错误容器\n * await initMap({\n * container: document.getElementById('earth')!,\n * errorContainer: 'errorDiv',\n * mapIndex: 0,\n * });\n *\n * // errorContainer 不传则内部自动创建\n * await initMap({ container: 'earthDiv' });\n *\n * // 指定加载方式\n * await initMap({\n * container: 'earthDiv',\n * coreOptions: { baseUrl: '/gis/' },\n * });\n * ```\n */\nexport async function initMap(options: InitMapOptions): Promise<unknown> {\n // 如果核心脚本尚未就绪,自动加载\n if (!window.StampAPI) {\n await loadCore(options.coreOptions ?? { useBundledAssets: true });\n }\n\n // 解析容器元素\n const earthDomElement = resolveElement(options.container, 'container');\n\n // 补全容器缺失样式(不覆盖用户已设值)\n // 参考 Cesium .cesium-widget:position:relative + 100% + overflow:hidden\n // 参考 AMap:要求用户保证有效尺寸,这里做兜底\n ensureContainerStyle(earthDomElement);\n\n // 解析错误提示容器:不传则内部创建\n let errorDomElement: HTMLElement;\n if (options.errorContainer) {\n errorDomElement = resolveElement(options.errorContainer, 'errorContainer');\n } else {\n errorDomElement = document.createElement('div');\n errorDomElement.id = 'stamp-error-container';\n earthDomElement.appendChild(errorDomElement);\n }\n\n // 补全错误容器样式(参考 Cesium .cesium-widget-errorPanel)\n ensureErrorContainerStyle(errorDomElement);\n\n return window.StampAPI!.initVideoPlayer({\n earthDomElement,\n errorDomElement,\n iIndex: options.mapIndex ?? 0,\n showTips: options.showTips ?? true,\n });\n}\n\n/**\n * 补全地图容器缺失的样式,不覆盖用户已设值。\n *\n * 参考:\n * - Cesium .cesium-widget { position: relative; width: 100%; height: 100%; overflow: hidden; }\n * - AMap 要求用户自行设置宽高,本方法做兜底\n */\nfunction ensureContainerStyle(el: HTMLElement): void {\n const s = el.style;\n // position:relative 让内部绝对定位的 error/video 元素正确参照\n if (!s.position || s.position === 'static') {\n s.position = 'absolute';\n }\n // width:默认撑满,height 由用户自行控制(避免 SDK 强制 100vh/100% 的副作用)\n if (!s.width) s.width = '100%';\n if (!s.height) s.height = '100%';\n // overflow:hidden 防止 video 溢出\n if (!s.overflow || s.overflow === 'visible') {\n s.overflow = 'hidden';\n }\n // margin/padding:仅清零默认值,避免偏差\n if (!s.margin) s.margin = '0';\n}\n\n/**\n * 补全错误容器样式,参考 Cesium .cesium-widget-errorPanel:\n * position: absolute; 覆盖整个地图容器;z-index: 99999; 居中文字\n *\n * playerControl.js 只操作 innerHTML 和 visibility,\n * 不设 position/z-index,需在此补全。\n */\nfunction ensureErrorContainerStyle(el: HTMLElement): void {\n const s = el.style;\n // 绝对定位覆盖在地图容器上\n if (!s.position || s.position === 'static') {\n s.position = 'absolute';\n }\n // 撑满父容器\n if (!s.top) s.top = 'auto';\n if (!s.right) s.right = '0';\n if (!s.bottom) s.bottom = '0';\n if (!s.left) s.left = 'auto';\n if (!s.width) s.width = 'auto';\n if (!s.height) s.height = '20px';\n // 高 z-index 确保错误提示在最上层(Cesium 用 99999)\n if (!s.zIndex) s.zIndex = '99999';\n // 居中 + 半透明背景(仅在可见时生效)\n if (!s.textAlign) s.textAlign = 'center';\n if (!s.display) s.display = 'flex';\n if (!s.alignItems) s.alignItems = 'center';\n if (!s.justifyContent) s.justifyContent = 'center';\n if (!s.backgroundColor) s.backgroundColor = 'rgba(0, 0, 0, 0.7)';\n if (!s.color) s.color = '#fff';\n if (!s.fontFamily) s.fontFamily = 'sans-serif';\n if (!s.fontSize) s.fontSize = '14px';\n // 初始隐藏,等 playerControl.js 控制显隐\n s.visibility = 'hidden';\n}\n\n// ============ 导出 ============\n\n/**\n * StampUtil 接口库(默认导出)\n *\n * 包含数百个地图操作方法:量算、图层管理、标注、分析等。\n * 使用前需确保已调用 loadCore()。\n *\n * @example\n * ```ts\n * import StampUtil, { loadCore } from '@stampgis/webrtc';\n *\n * await loadCore({ useBundledAssets: true });\n * const result = await StampUtil.measureHorizontalDist(16, 0xffffffff);\n * ```\n */\nexport default StampUtil;\n\n// 命名导出\nexport { StampUtil };\n\n// 工具函数\nexport { loadScript, waitForGlobal } from './loader';\n\n// 类型导出\nexport type { CoreLoadOptions, InitMapOptions, StampCoreConfig } from './types';\nexport { STAMP_RTTI } from './StampRtti';\n\n// 包内 assets 路径常量(供使用方 import 方式使用)\nexport const ASSET_PATHS = ASSET_IMPORTS;\n","export enum STAMP_RTTI {\n //图层\n SE_RTTI_DEM_LAYER = 101,\n SE_RTTI_DOM_LAYER = 102,\n SE_RTTI_BUILDING_LAYER = 103,\n SE_RTTI_BLOCK_LAYER = 104,\n SE_RTTI_BILLBOARD_LAYER = 105,\n SE_RTTI_MATCH_MODEL_LAYER = 106,\n SE_RTTI_POI_LAYER = 107,\n SE_RTTI_VECTOR_LAYER = 108,\n SE_RTTI_GIS_VECTOR_LAYER = 109,\n SE_RTTI_GIS_POI_LAYER = 110,\n SE_RTTI_OBLIQUE_PHOTO_LAYER = 111,\n SE_RTTI_ANNOTATION_LAYER = 112,\n SE_RTTI_PIPELINE_LAYER = 114,\n SE_RTTI_FOLDER_LAYER = 115,\n SE_RTTI_POWER_LAYER = 116,\n SE_RTTI_PROJECT_LAYER = 117,\n SE_RTTI_EDIT_LAYER = 118,\n SE_RTTI_EDIT_POWER_LAYER = 119,\n SE_RTTI_WMS_LAYER = 120,\n SE_RTTI_WMTS_LAYER = 121,\n SE_RTTI_MAP_LAYER = 122,\n SE_RTTI_WMS_SUB_LAYER = 123,\n SE_RTTI_MAPSERVER_LAYER = 124,\n SE_RTTI_EDIT_MAP_LAYER = 125,\n SE_RTTI_EDIT_PIPELINE_LAYER = 126,\n SE_RTTI_EDIT_GEOLOGY_LAYER = 127,\n SE_RTTI_VECTOR_TILE_LAYER = 128,\n SE_RTTI_EDIT_MAP_RASTER_LAYER = 129,\n SE_RTTI_MODEL_LOD_LAYER = 130,\n SE_RTTI_TILE_BLOCK_LAYER = 131,\n SE_RTTI_EDIT_MAP_POI_LAYER = 132,\n SE_RTTI_VECTOR_RIVER_LAYER = 133,\n SE_RTTI_POINT_CLOUD_LAYER = 134,\n SE_RTTI_GRID_GEOLOGY_LAYER = 135,\n SE_RTTI_BIM_LAYER = 136,\n SE_RTTI_WIND_FOLIAGE_LAYER = 137,\n SE_RTTI_LIGHT_LAYER = 138,\n SE_RTTI_UE_MODEL_LAYER = 139,\n\n // 北斗网格\n SE_RTTI_BEIDOU_GRID_LAYER = 146,\n SE_RTTI_BEIDOU_GRID_LAYER_PATH = 147,\n\n //观察视角\n SE_GLOBE_OBSERVER = 150,\n\n // 标绘对象\n SE_RTTI_ELEMENT_BOX = 202,\n SE_RTTI_ELEMENT_CYLINDER = 203,\n SE_RTTI_ELEMENT_CONE = 204,\n SE_RTTI_ELEMENT_PRISM = 205,\n SE_RTTI_ELEMENT_PYRAMID = 206,\n SE_RTTI_ELEMENT_VOLUME = 207,\n SE_RTTI_ELEMENT_MODEL_SET = 208,\n SE_RTTI_ELEMENT_ICON = 209,\n SE_RTTI_ELEMENT_SIGNAL_SPHERE = 210,\n SE_RTTI_ELEMENT_POLYGON = 211,\n SE_RTTI_ELEMENT_POINTS = 212,\n\n SE_RTTI_ELEMENT_MESH = 213,\n SE_RTTI_ELEMENT_SLOPE_ARROW = 214,\n SE_RTTI_ELEMENT_VIEW_SHED = 215,\n SE_RTTI_ELEMENT_SPHERE = 216,\n SE_RTTI_ELEMENT_SIMPLE_BILLBOARD = 217,\n SE_RTTI_ELEMENT_SPHERE_PYRAMID = 218,\n SE_RTTI_ELEMENT_SEMISPHERE = 219,\n SE_RTTI_ELEMENT_LINE = 220,\n SE_RTTI_ELEMENT_TILE_MESH = 221,\n SE_RTTI_ELEMENT_MODEL = 222,\n SE_RTTI_EDIT_MODEL = 223,\n SE_RTTI_ELEMENT_PARAPET = 224,\n SE_RTTI_ELEMENT_SLOPE = 225,\n SE_RTTI_ELEMENT_WATER = 226,\n SE_RTTI_ELEMENT_CIRCLE = 227,\n SE_RTTI_ELEMENT_SECTOR = 228,\n SE_RTTI_ELEMENT_CURVE = 229,\n SE_RTTI_ELEMENT_CURVE_CLOSE = 230,\n SE_RTTI_ELEMENT_CURVE_POLYGON = 231,\n SE_RTTI_ELEMENT_LIGHT_CONE = 232,\n SE_RTTI_ELEMENT_TRUMPET = 233,\n SE_RTTI_ELEMENT_FLOW_LINE = 234,\n SE_RTTI_EDIT_UE_MODEL = 235,\n SE_RTTI_ELEMENT_UE_WATER = 236,\n SE_RTTI_ELEMENT_ADVERTISING_BOARD = 237,\n SE_RTTI_ELEMENT_ELLIPSE = 243,\n SE_RTTI_ELEMENT_GRID = 244, //晕渲图\n SE_RTTI_ELEMENT_TEXTURE_POLYGON = 245,\n SE_RTTI_ELEMENT_PARTICLE = 246,\n SE_RTTI_ELEMENT_CAMERA = 247,\n SE_RTTI_EDIT_POWERTOWER = 248,\n SE_RTTI_EDIT_POWERLINE = 249,\n SE_RTTI_ELEMENT_PLOT_SARROW = 250,\n SE_RTTI_ELEMENT_PLOT_EQUAL_SARROW = 251,\n SE_RTTI_ELEMENT_PLOT_TAIL_SARROW = 252,\n SE_RTTI_ELEMENT_PLOT_CUSTOM_ARROW = 253,\n SE_RTTI_ELEMENT_PLOT_CUSTOM_TAIL_ARROW = 254,\n SE_RTTI_ELEMENT_PLOT_DOUBLE_ARROW = 255,\n SE_RTTI_ELEMENT_PLOT_XARROW = 256,\n SE_RTTI_ELEMENT_PLOT_TRIANGLE_FLAG = 257,\n SE_RTTI_ELEMENT_PLOT_RECT_FLAG = 258,\n SE_RTTI_ELEMENT_PLOT_CURVE_FLAG = 259,\n SE_RTTI_ELEMENT_PLOT_ASSEMBLY_AREA = 260,\n SE_RTTI_PEN_STYLE = 261,\n SE_RTTI_BRUSH_STYLE = 262,\n SE_RTTI_ICON_STYLE = 263,\n SE_RTTI_SYMBOL_STYLE = 264,\n SE_RTTI_SIMPLE_LINE_STYLE = 268,\n SE_RTTI_SIMPLE_POLYGON_STYLE = 269,\n SE_RTTI_SIMPLE_BUILDING = 280,\n SE_RTTI_BUILDING_ROOF_PARAPET = 281,\n SE_RTTI_ELEMENT_SOIL_LAYER = 282,\n SE_RTTI_ELEMENT_DRILL_HOLE = 283,\n SE_RTTI_ELEMENT_SLOPE_POLYGON = 284,\n SE_RTTI_ELEMENT_PLOT_EQUAL_SARROW_CLOSE = 285,\n SE_RTTI_ELEMENT_CIRCLE_CONTAINER = 286,\n SE_RTTI_ELEMENT_SQUARE_CONTAINER = 287,\n SE_RTTI_ELEMENT_CIRCLE_JOINT = 288,\n SE_RTTI_ELEMENT_SQUARE_JOINT = 289,\n SE_RTTI_ELEMENT_CIRCLE_WELL = 290,\n SE_RTTI_ELEMENT_SQUARE_WELL = 291,\n SE_RTTI_ELEMENT_SEWAGE_WELL = 292,\n SE_RTTI_ELEMENT_CIRCLE_WELL_PLATE = 293,\n SE_RTTI_ELEMENT_SQUARE_WELL_PLATE = 294,\n SE_RTTI_ELEMENT_SQUARE_TRENCH = 295,\n SE_RTTI_ELEMENT_SQUARE_TRENCH_PLATE = 296,\n SE_RTTI_ELEMENT_PIPELINE_ROOM = 297,\n SE_RTTI_ELEMENT_PIPELINE_MATCHMODEL = 298,\n SE_RTTI_ELEMENT_PIPELINE_POI = 299,\n SE_RTTI_DYNAMIC_OBJECT = 300,\n SE_RTTI_COMMON_DYNAMIC_MODEL = 301,\n SE_RTTI_EDIT_ELEMENT_SOIL_OBJECT = 302,\n SE_RTTI_EDIT_ELEMENT_DRILL_HOLE = 303,\n SE_RTTI_EDIT_ELEMENT_COLOR_TABLE = 304,\n SE_RTTI_EDIT_ELEMENT_ENTITY = 305,\n SE_RTTI_EDIT_GEOLOGY_CONTOUR = 306,\n SE_RTTI_EDIT_ELEMENT_DRILL_ICON = 307,\n SE_RTTI_ELEMENT_CURRENT = 308, //洋流\n SE_RTTI_ELEMENT_HEAT_MAP_3D = 309,\n SE_RTTI_ELEMENT_TEXTURE_SYMBOL = 320, //纹理多边形\n SE_RTTI_ELEMENT_GREATWALL_LINE = 321,\n SE_RTTI_ELEMENT_WIRENET_LINE = 322,\n SE_RTTI_ELEMENT_SYMBOL_3D = 323,\n SE_RTTI_ELEMENT_CORDON = 324,\n SE_RTTI_ELEMENT_ELECTRIC_WALL = 325,\n SE_RTTI_ELEMENT_DYNAMIC_WALL = 327,\n SE_RTTI_ELEMENT_HALO_WALL = 328,\n SE_RTTI_ELEMENT_ARROW_FLOWLINE = 329,\n SE_RTTI_ELEMENT_UE_ICON = 330,\n SE_RTTI_ELEMENT_TRAFFIC_FLOW_LINE = 333,//车流线\n SE_RTTI_ELEMENT_OD_LINE = 334,//OD线\n SE_RTTI_ELEMENT_OD_LINE_CIRCLE = 336,//OD线圆\n SE_RTTI_ELEMENT_SPLINE_FLOW_LINE = 335,//样条车流线\n SE_RTTI_D3D9_MESH_SUBSET = 405,\n SE_RTTI_GEOMETRY_MESH_SUBSET = 406,\n SE_RTTI_X_MEHS = 407,\n SE_RTTI_GRID_GEOLOGY_MESH = 408,\n SE_RTTI_ELEMENT_ALTITUDE_DIFFERNCE_POLYGON = 411,\n SE_RTTI_ELEMENT_CONTOUR_POLYGON = 412,\n SE_RTTI_ELEMENT_HEAT_MAP_POLYGON = 413,\n SE_RTTI_ELEMENT_VOLUME_WATER = 414,\n SE_RTTI_POLYGON_SUBMERGING = 415,\n SE_RTTI_ELEMENT_POLYGON_MESH = 416,\n SE_RTTI_ELEMENT_GAS_SPREAD = 417,\n SE_RTTI_ELEMENT_LIQUID_SPREAD = 418,\n SE_RTTI_STATION_PASS = 501,\n SE_RTTI_STATION_LOOKAT = 502,\n SE_RTTI_STATION_SURROUND = 503,\n SE_RTTI_STATION_ROUTE = 504,\n SE_RTTI_TRACK = 560,\n SE_RTTI_PIPELINE_AREA = 563,\n SE_RTTI_PIPELINE_LINE = 564,\n SE_RTTI_PIPELINE_POINT = 565,\n SE_RTTI_PIPELINE_DANGER = 566,\n SE_RTTI_PIPELINE_CHECK_POINT = 567,\n SE_RTTI_ELEMENT_SLOPE_DIRECTION_POLYGON = 568,\n SE_RTTI_ELEMENT_AUTO_CAMERA = 569,\n SE_RTTI_ELEMENT_WAVE = 570,\n SE_RTTI_ELEMENT_RIVER = 571,\n SE_RTTI_ELEMENT_LIGHT = 572,\n SE_RTTI_SCENE_CONTROLLER = 573,\n SE_RTTI_EDIT_POWERLINE_2D = 574,\n SE_RTTI_EDIT_POWERLINE_3D = 575,\n SE_RTTI_EDIT_POWERLINE_SPACER = 576,\n\n SE_RTTI_ELEMENT_ICON_WEBUI = 999, //webUI文字标注\n}\n","// @ts-nocheck\nimport { STAMP_RTTI } from \"./StampRtti\";\nimport JSZip from \"jszip\";\nimport { saveAs } from \"file-saver\";\ndeclare const StampAPI: any;\nconst StampUtil = new (class {\n highlightGuid = \"\";\n highlightGuidArr: Array<string> = [];\n submergePolygon = null as any;\n earthToolTipMap = [] as any;\n contourPointIconsGuid = [] as any; //等高线标注对象GUID\n contourLineElementGuid = \"\";\n bestPathIconList = [] as any; //最优路径起点终点标注\n lineSightIconList = [] as any; //通视分析起点终点标注\n insolationIconList = [] as any;\n recordedChunks = [] as any;\n mediaRecorder = null as any;\n webUIRootGuid = \"\";\n webUIItems = [] as any;\n libaxIndex = 0;\n screen_num = 1;\n gpsTrackMap = {} as any;\n projectModelLayerMap = {} as any; //工程和模型图层映射关系\n layerData = [] as any; //图层列表\n _maskScreenExGuid: string | null = null;\n\n async initProjectModelLayerMap() {\n this.projectModelLayerMap = {};\n for (let i = 0; i < this.layerData.length; i++) {\n if (!this.projectModelLayerMap[this.layerData[i].guid]) {\n this.projectModelLayerMap[this.layerData[i].guid] = {};\n }\n const projectInfo = (await StampUtil.getProjectInfo(\n this.layerData[i].guid\n )) as any;\n const layers = (await StampUtil.getModelLayerids(\n this.layerData[i].sub_layers\n )) as any;\n //North South East West\n this.projectModelLayerMap[this.layerData[i].guid] = {\n lonlatBox: projectInfo.Rect,\n layers: layers,\n };\n }\n }\n /**\n * 获取地球对象实例\n *\n * @returns {any} 地球对象实例,根据libaxIndex返回不同的实例\n * @description 根据libaxIndex值返回对应的地球对象实例,支持多屏幕显示\n * @example\n * // 获取默认地球对象\n * const earth = StampUtil.getLibax();\n */\n getLibax() {\n if (this.libaxIndex == 0) {\n return StampAPI.lib_ax;\n } else if (this.libaxIndex == 1) {\n return StampAPI.lib_ax1;\n } else if (this.libaxIndex == 2) {\n return StampAPI.lib_ax2;\n }\n return StampAPI.lib_ax;\n }\n\n //#region 基础接口\n /**\n * 生成全球唯一GUID\n *\n * @returns {string} 生成的GUID字符串,格式为xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\n * @description 使用随机数生成符合标准格式的GUID\n * @example\n * // 生成一个新的GUID\n * const guid = StampUtil.createGuid();\n * // 输出类似: \"550e8400-e29b-41d4-a716-446655440000\"\n */\n createGuid() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(\n /[xy]/g,\n function (c) {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n }\n );\n }\n /**\n * 对象深拷贝\n *\n * @param {any} obj 要拷贝的对象\n * @returns {any} 拷贝后的新对象\n * @description 递归复制对象的所有属性,包括嵌套对象和数组\n * @example\n * // 深拷贝一个对象\n * const original = { a: 1, b: { c: 2 } };\n * const copy = StampUtil.deepCopy(original);\n * // 修改拷贝对象不会影响原对象\n * copy.b.c = 3;\n * console.log(original.b.c); // 输出: 2\n */\n deepCopy(obj: any) {\n let objClone = null as any;\n if (Array.isArray(obj)) {\n objClone = [];\n } else {\n objClone = {};\n }\n if (obj && typeof obj === \"object\") {\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n // 判断ojb子元素是否为对象,如果是,递归复制\n if (obj[key] && typeof obj[key] === \"object\") {\n objClone[key] = StampUtil.deepCopy(obj[key]) as any;\n } else {\n // 如果不是,简单复制\n objClone[key] = obj[key] as any;\n }\n }\n }\n }\n return objClone;\n }\n /**\n * 日期格式转时间格式:HH:MM:SS\n *\n * @param {Date} dateTime 日期对象\n * @returns {string} 格式化后的时间字符串,格式为HH:MM:SS\n * @description 将Date对象转换为小时:分钟:秒的时间格式\n * @example\n * // 格式化当前时间\n * const now = new Date();\n * const timeStr = StampUtil.formatDateTime(now);\n * // 输出类似: \"14:30:45\"\n */\n formatDateTime(dateTime: Date) {\n const hour = dateTime.getHours();\n let hourStr = hour.toString();\n if (hour < 10) {\n hourStr = \"0\" + hour;\n }\n const minute = dateTime.getMinutes();\n let minuteStr = minute.toString();\n if (minute < 10) {\n minuteStr = \"0\" + minute;\n }\n const second = dateTime.getSeconds();\n let secondStr = second.toString();\n if (second < 10) {\n secondStr = \"0\" + second;\n }\n return hourStr + \":\" + minuteStr + \":\" + secondStr;\n }\n /**\n * 获取图片URL\n *\n * @param {string} name 图片文件名\n * @returns {string} 完整的图片URL路径\n * @description 根据图片文件名生成完整的URL路径\n * @example\n * // 获取图片URL\n * const imageUrl = StampUtil.getImageUrl(\"icon.png\");\n * // 输出类似: \"http://localhost:8080/images/icon.png\"\n */\n getImageUrl(name: string) {\n return `${window.location.origin}${window.location.pathname}images/${name}`;\n }\n //#endregion\n\n //#region 环境变量\n\n /**\n * 获取应用程序根目录\n *\n * @returns {Promise<any>} 返回包含根目录信息的Promise\n * @description 获取exe所在的目录路径\n * @example\n * // 获取应用程序根目录\n * StampUtil.getRootPath().then((path) => {\n * console.log('应用程序根目录:', path);\n * });\n */\n getRootPath() {\n return new Promise((resolve) => {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Environment\n );\n handler.interface.get_root_path();\n const onEnvironmentGet = handler.interface.OnEnvironmentGet;\n handler.interface.OnEnvironmentGet = function (data: any) {\n handler.interface.OnEnvironmentGet = onEnvironmentGet;\n resolve(data);\n };\n });\n }\n\n /**\n * 修改地图信息显示设置\n *\n * @param {Object} [params] 配置参数\n * @param {number} [params.width_ratio=0.01] 绘制区域左上角距窗口左上角距离占屏幕大小长宽比,-1使用默认位置加绘制黑色背景\n * @param {number} [params.height_ratio=0.8] 绘制区域左上角距窗口左上角距离占屏幕大小高度比\n * @param {number} [params.font_color=0xffff0000] 字体颜色,全透表示不显示\n * @param {number} [params.font_width=20] 字体宽度,默认是10\n * @param {number} [params.font_height=20] 字体高度\n * @description 修改地图下方信息显示的位置、颜色和大小\n * @example\n * // 修改信息显示位置和颜色\n * StampUtil.changeInfomation({\n * width_ratio: 0.1,\n * height_ratio: 0.9,\n * font_color: 0xff00ff00,\n * font_width: 16,\n * font_height: 16\n * });\n */\n changeInfomation(params?: any) {\n const environment_interface = StampUtil.getLibax().environment_interface;\n const width_ratio = params.width_ratio || 0.01; // 绘制区域左上角距窗口左上角距离占屏幕大小长宽比,-1使用默认位置加绘制黑色背景,指定位置后黑色背景不画\n const height_ratio = params.height_ratio || 0.8;\n const font_color = params.font_color || 0xffff0000; // 全透表示不显示\n const font_width = params.font_width || 20; // 默认是10\n const font_height = params.font_height || 20;\n environment_interface.set_info_position_color_size(\n width_ratio,\n height_ratio,\n font_color,\n font_width,\n font_height\n );\n }\n\n /**\n * 设置草图模式\n *\n * @param {Object} params 配置参数\n * @param {boolean} params.draftEffectEnable 是否启用草图效果\n * @param {boolean} params.isColorMode 是否启用彩色模式\n * @param {boolean} params.onlyBuilding 是否只针对建筑\n * @description 设置场景的草图显示效果\n * @example\n * // 启用草图模式\n * StampUtil.draftEffect({\n * draftEffectEnable: true,\n * isColorMode: false,\n * onlyBuilding: true\n * });\n */\n draftEffect(params: any) {\n const draft_effect_enable = params.draftEffectEnable;\n const is_color_mode = params.isColorMode;\n const only_building = params.onlyBuilding; //区分地形跟模型\n const environment_interface = StampUtil.getLibax().environment_interface;\n environment_interface.draft_effect(\n draft_effect_enable,\n is_color_mode,\n only_building\n );\n }\n\n /**\n * 设置模型纹理显示\n *\n * @param {string} layerid 图层guid\n * @param {boolean} bShowTexture true: 去掉纹理 / false:显示纹理\n * @description 控制模型是否显示纹理\n * @example\n * // 去掉模型纹理\n * StampUtil.removeTexture('layer_guid', true);\n *\n * // 显示模型纹理\n * StampUtil.removeTexture('layer_guid', false);\n */\n removeTexture(layerid: string, bShowTexture: boolean) {\n const params = [layerid, bShowTexture];\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampUtil.getLibax()\n );\n layer_manager_interface.set_use_default_texture(params);\n }\n\n /**\n * 控制高亮描边效果\n *\n * @param {boolean} outlineEnable 是否开启高亮描边\n * @param {number} [color=0xffe8ff80] 描边颜色,默认值为0xffe8ff80\n * @param {number} [width=2] 描边宽度,默认值为2\n * @description 开启或关闭模型的高亮描边效果\n * @example\n * // 开启高亮描边\n * StampUtil.outline(true, 0xffff0000, 3);\n *\n * // 关闭高亮描边\n * StampUtil.outline(false);\n */\n outline(outlineEnable: boolean, color = 0xffe8ff80, width = 2) {\n const environment_interface = StampAPI.LibAx.environment_interface(\n StampUtil.getLibax()\n );\n environment_interface.outline(outlineEnable, color, width);\n }\n\n /**\n * 设置伽马校色\n *\n * @param {boolean} value 是否开启伽马校色\n * @description 开启或关闭伽马校色功能\n * @example\n * // 开启伽马校色\n * StampUtil.setGamma(true);\n *\n * // 关闭伽马校色\n * StampUtil.setGamma(false);\n */\n setGamma(value: boolean) {\n const environment_interface = StampAPI.LibAx.environment_interface(\n StampUtil.getLibax()\n );\n environment_interface.set_tonemap_gamma(value);\n }\n\n /**\n * 获取伽马校色状态\n *\n * @returns {Promise<boolean>} 返回伽马校色状态的Promise\n * @description 获取当前伽马校色的开启状态\n * @example\n * // 获取伽马校色状态\n * StampUtil.getGamma().then((status) => {\n * console.log('伽马校色状态:', status);\n * });\n */\n getGamma() {\n return new Promise((resolve) => {\n const environment_interface = StampUtil.getLibax().environment_interface;\n environment_interface.OnEnvironmentGet = function (data: any) {\n resolve(data.TonemapGamma);\n };\n environment_interface.get_tonemap_gamma();\n });\n }\n\n /**\n * 设置高亮颜色\n *\n * @param {number} highlightColor 高亮颜色\n * @param {number} emissiveColor 光晕颜色\n * @param {number} [continueTime=7] 高亮持续时间,默认值为7秒\n * @param {number} [intervalTime=0.5] 高亮闪烁间隔时间,默认值为0.5秒\n * @description 设置模型高亮显示的颜色和闪烁效果\n * @example\n * // 设置高亮颜色\n * StampUtil.setHighlightColor(0xffff0000, 0xff00ff00, 5, 0.3);\n */\n setHighlightColor(\n highlightColor: number,\n emissiveColor: number,\n continueTime = 7,\n intervalTime = 0.5\n ) {\n const environment_interface = StampUtil.getLibax().environment_interface;\n environment_interface.set_highlight_color(\n highlightColor,\n emissiveColor,\n continueTime,\n intervalTime\n );\n }\n /**\n * 获取地形透明度\n *\n * @returns {Promise<number>} 返回地形透明度的Promise,值范围为0-100\n * @description 获取当前地形的透明度设置\n * @example\n * // 获取地形透明度\n * StampUtil.getTerrainTransparent().then((transparency) => {\n * console.log('地形透明度:', transparency);\n * });\n */\n getTerrainTransparent() {\n return new Promise((resolve) => {\n const environment_interface = StampUtil.getLibax().environment_interface;\n environment_interface.OnEnvironmentGet = function (data: any) {\n resolve(\n Math.round((parseFloat(data.terrain_transparency) * 100) / 255)\n );\n };\n environment_interface.get_terrain_pransparency();\n });\n }\n\n /**\n * 设置地形透明度\n *\n * @param {number} value 透明度值,范围为0-100\n * @description 设置地形的透明度,会应用到所有屏幕\n * @example\n * // 设置地形透明度为50%\n * StampUtil.setTerrainTransparent(50);\n */\n setTerrainTransparent(value: number) {\n let screenArr = [StampAPI.lib_ax];\n if (this.screen_num == 2) {\n screenArr = [StampAPI.lib_ax, StampAPI.lib_ax1];\n } else if (this.screen_num == 3) {\n screenArr = [StampAPI.lib_ax, StampAPI.lib_ax1, StampAPI.lib_ax2];\n }\n for (let i = 0; i < screenArr.length; i++) {\n const environment_interface = screenArr[i].environment_interface;\n environment_interface.set_terrain_pransparency((value * 255) / 100);\n }\n }\n\n /**\n * 获取编码器质量参数\n *\n * @returns {Promise<any>} 返回编码器质量参数的Promise\n * @description 获取当前编码器的质量设置\n * @example\n * // 获取编码器质量参数\n * StampUtil.getEncoderQp().then((params) => {\n * console.log('编码器质量参数:', params);\n * });\n */\n getEncoderQp() {\n return new Promise((resolve) => {\n const environment_interface = StampUtil.getLibax().environment_interface;\n environment_interface.OnEnvironmentGet = function (data: any) {\n resolve(data);\n };\n environment_interface.get_encoder_qp();\n });\n }\n\n /**\n * 设置编码器质量参数\n *\n * @param {Array<number>} value 质量参数数组,范围为0-51\n * @description 设置编码器的质量参数\n * @example\n * // 设置编码器质量参数\n * StampUtil.setEncoderQp([20, 30]);\n */\n setEncoderQp(value: any) {\n const environment_interface = StampAPI.lib_ax.environment_interface;\n environment_interface.set_encoder_qp(value[0], value[1]); // 0-51 范围\n }\n\n /**\n * 设置图层是否开启倾斜阴影\n *\n * @param {any} curentLayer 图层对象或guid\n * @param {boolean} is_cast_shadow 是否开启阴影\n * @description 控制指定图层是否开启倾斜阴影效果\n * @example\n * // 开启图层阴影\n * StampUtil.setCastShadow('layer_guid', true);\n *\n * // 关闭图层阴影\n * StampUtil.setCastShadow('layer_guid', false);\n */\n setCastShadow(curentLayer: any, is_cast_shadow: boolean) {\n if (curentLayer == undefined) {\n return;\n }\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampUtil.getLibax()\n );\n const params = [curentLayer, is_cast_shadow];\n layer_manager_interface.set_layer_is_cast_shadow(params);\n }\n /**\n * 获取图层倾斜阴影状态\n *\n * @param {any} curentLayer 图层对象或guid\n * @returns {Promise<boolean>} 返回阴影状态的Promise\n * @description 获取指定图层的倾斜阴影开启状态\n * @example\n * // 获取图层阴影状态\n * StampUtil.getCastShadow('layer_guid').then((status) => {\n * console.log('图层阴影状态:', status);\n * });\n */\n getCastShadow(curentLayer: any) {\n return new Promise((resolve) => {\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampUtil.getLibax()\n );\n if (curentLayer == undefined) {\n return;\n }\n layer_manager_interface.OnGetLayerIsCastShadow = function (data: any) {\n if (data.is_cast_shadow != undefined) {\n resolve(data.is_cast_shadow);\n }\n };\n layer_manager_interface.get_layer_is_cast_shadow(curentLayer);\n });\n }\n\n /**\n * 设置模型透明度\n *\n * @param {any} curentLayer 图层对象或guid\n * @param {number} transparency 透明度值,范围为0-100\n * @description 设置指定模型图层的透明度\n * @example\n * // 设置模型透明度为50%\n * StampUtil.setLayerTransparency('layer_guid', 50);\n */\n setLayerTransparency(curentLayer: any, transparency: number) {\n if (curentLayer == undefined) {\n return;\n }\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampUtil.getLibax()\n );\n const params = [curentLayer, transparency / 100];\n layer_manager_interface.set_layer_transparency(params);\n }\n\n /**\n * 获取模型透明度\n *\n * @param {any} currentLayer 图层对象或guid\n * @returns {Promise<number>} 返回透明度值的Promise\n * @description 获取指定模型图层的透明度设置\n * @example\n * // 获取模型透明度\n * StampUtil.getLayerTransparent('layer_guid').then((transparency) => {\n * console.log('模型透明度:', transparency);\n * });\n */\n getLayerTransparent(currentLayer: any) {\n return new Promise((resolve) => {\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampUtil.getLibax()\n );\n layer_manager_interface.OnGetLayerTransparency = function (data: any) {\n resolve(data.transparency);\n };\n layer_manager_interface.get_layer_transparency(currentLayer);\n });\n }\n\n /**\n * 设置模型 Lift 动画参数\n *\n * @param {any} guid 模型guid\n * @param {number} fixedOffset 固定偏移值\n * @param {number} speed 动画速度\n * @param {number} minValue 最小值\n * @param {number} maxValue 最大值\n * @description 设置模型的 Lift 动画效果参数\n * @example\n * // 设置模型 Lift 动画参数\n * StampUtil.setLiftAnimationParam('model_guid', 0, 1, -10, 10);\n */\n setLiftAnimationParam(\n guid: any,\n fixedOffset: number,\n speed: number,\n minValue: number,\n maxValue: number\n ) {\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampUtil.getLibax()\n );\n layer_manager_interface.set_lift_animation_param(\n guid,\n fixedOffset,\n speed,\n minValue,\n maxValue\n );\n }\n\n /**\n * 设置瓦片透明度\n *\n * @param {any} curentLayer 瓦片图层对象或guid\n * @param {number} transparency 透明度值,范围为0-100\n * @description 设置指定瓦片图层的透明度\n * @example\n * // 设置瓦片透明度为50%\n * StampUtil.setTilesTransparency('tile_layer_guid', 50);\n */\n setTilesTransparency(curentLayer: any, transparency: number) {\n if (curentLayer == undefined) {\n return;\n }\n const vector_tile_layer_interface =\n StampAPI.LibAx.vector_tile_layer_interface(StampUtil.getLibax());\n const params = [curentLayer, parseInt(((transparency / 100) * 255) as any)];\n vector_tile_layer_interface.set_alpha(params);\n }\n\n /**\n * 获取瓦片透明度\n *\n * @param {any} currentLayer 瓦片图层对象或guid\n * @returns {Promise<number>} 返回透明度值的Promise,范围为0-1\n * @description 获取指定瓦片图层的透明度设置\n * @example\n * // 获取瓦片透明度\n * StampUtil.getTilesTransparency('tile_layer_guid').then((transparency) => {\n * console.log('瓦片透明度:', transparency);\n * });\n */\n getTilesTransparency(currentLayer: any) {\n return new Promise((resolve) => {\n const vector_tile_layer_interface =\n StampAPI.LibAx.vector_tile_layer_interface(StampUtil.getLibax());\n vector_tile_layer_interface.OnRespondGet = function (data: any) {\n resolve(data.alpha / 255);\n };\n vector_tile_layer_interface.get_alpha(currentLayer);\n });\n }\n\n /**\n * 设置天气特效\n * @param index (\n * 0:雨,\n 1:雨夹电\n 2:雨夹电夹风\n 3:雪\n 4:雪夹风\n 5:电\n 6:雾\n * )\n */\n /**\n * 设置天气特效\n *\n * @param {number} index 天气类型索引:\n * 0:雨,\n * 1:雨夹电\n * 2:雨夹电夹风\n * 3:雪\n * 4:雪夹风\n * 5:电\n * 6:雾\n * @description 设置场景的天气特效\n * @example\n * // 设置下雨特效\n * StampUtil.startWeatherEffects(0);\n *\n * // 设置下雪特效\n * StampUtil.startWeatherEffects(3);\n */\n startWeatherEffects(index: any) {\n const weather_interface = StampAPI.LibAx.weather_interface(\n StampUtil.getLibax()\n );\n weather_interface.start_weather(index);\n }\n\n /**\n * 设置天气特效强度\n *\n * @param {number} value 特效强度值\n * @returns {Promise<number>} 返回处理后的强度值\n * @description 设置天气特效的强度大小\n * @example\n * // 设置天气特效强度\n * StampUtil.setEffectValue(3).then((value) => {\n * console.log('天气特效强度:', value);\n * });\n */\n setEffectValue(value: number) {\n return new Promise((resolve) => {\n const weather_interface = StampAPI.LibAx.weather_interface(\n StampUtil.getLibax()\n );\n value = value % 5;\n weather_interface.set_effect_value(value);\n resolve(value);\n });\n }\n\n /**\n * 停止天气特效\n *\n * @description 停止当前正在播放的天气特效\n * @example\n * // 停止天气特效\n * StampUtil.stopWeather();\n */\n stopWeather = function () {\n const weather_interface = StampAPI.LibAx.weather_interface(\n StampUtil.getLibax()\n );\n weather_interface.stop_weather();\n };\n\n /**\n * 设置地下模式\n *\n * @param {boolean} value 是否开启地下模式\n * @description 控制是否进入地下模式\n * @example\n * // 开启地下模式\n * StampUtil.setUnderground(true);\n *\n * // 关闭地下模式\n * StampUtil.setUnderground(false);\n */\n setUnderground(value: boolean) {\n const global_control_interface =\n StampUtil.getLibax().global_control_interface;\n const params = [value];\n global_control_interface.underground_mode(params);\n }\n\n /**\n * 获取工程信息\n *\n * @param {string} layerid 工程guid\n * @returns {Promise<any>} 返回工程信息的Promise\n * @description 获取指定工程的详细信息\n * @example\n * // 获取工程信息\n * StampUtil.getProjectInfo('project_guid').then((info) => {\n * console.log('工程信息:', info);\n * });\n */\n getProjectInfo(layerid: string) {\n return new Promise((resolve) => {\n const stamp_frame = StampUtil.getLibax().stamp_frame;\n stamp_frame.set_current_project(layerid);\n stamp_frame.OnGetProjectProperty = (data: any) => {\n resolve(data);\n };\n stamp_frame.GetProjectPropertyCommand(layerid);\n });\n }\n\n /**\n * 设置POI鼠标悬停事件\n *\n * @param {Function} hoverFunc 鼠标悬停时的回调函数\n * @param {Function} unHoverFunc 鼠标离开时的回调函数\n * @description 设置POI(兴趣点)的鼠标悬停和离开事件处理函数\n * @example\n * // 设置POI悬停事件\n * StampUtil.setPOIHoverEvent(\n * (data) => {\n * console.log('鼠标悬停在POI上:', data);\n * },\n * (data) => {\n * console.log('鼠标离开POI:', data);\n * }\n * );\n */\n setPOIHoverEvent(hoverFunc: any, unHoverFunc: any) {\n const stamp_frame = StampUtil.getLibax().stamp_frame;\n stamp_frame.OnPOIHover = function (data: any) {\n typeof hoverFunc == \"function\" && hoverFunc(data);\n };\n stamp_frame.OnPOILeave = function (data: any) {\n typeof unHoverFunc == \"function\" && unHoverFunc(data);\n };\n }\n //#endregion\n\n //#region 灯光接口\n\n /**\n * 获取地球场景灯光效果参数\n *\n * @param {boolean} [isSun=true] 是否获取太阳光参数\n * @returns {Promise<Object>} 返回包含所有灯光效果参数的Promise\n * @description 获取地球场景的灯光、天空、大气、雾、曝光和体积云等效果参数\n * @example\n * // 获取地球场景灯光效果参数\n * StampUtil.getUELight().then((params) => {\n * console.log('场景灯光效果参数:', params);\n * });\n */\n async getUELight(isSun = true) {\n //未保存入库就取系统默认值\n const directionalLight = (await StampUtil.getDirectionalLightInfo(\n isSun\n )) as any;\n const skyLight = (await StampUtil.getSkyLight()) as any;\n const skyAtmosphere = (await StampUtil.getSkyAtmosphere()) as any;\n const fog = (await StampUtil.getFogData()) as any;\n const postprocessing = (await StampUtil.getPostprocessingData()) as any;\n const cloudData = (await StampUtil.getCloudData()) as any;\n if (skyAtmosphere && skyAtmosphere.rayleighScatteringScale) {\n skyAtmosphere.rayleighScatteringScale = Number(\n Math.round(skyAtmosphere.rayleighScatteringScale * 10000) / 10000\n );\n }\n if (fog && fog.fogDensity) {\n fog.fogDensity = Number(Math.round(fog.fogDensity * 10000) / 10000);\n }\n const gamma = (await StampUtil.getGamma()) as any;\n const viewSetting = {\n directionalLight,\n skyLight,\n skyAtmosphere,\n fog,\n postprocessing,\n cloudData,\n gamma: gamma == 1,\n };\n return viewSetting;\n }\n\n /**\n * 设置地球场景灯光效果参数\n *\n * @param {Object} viewSetting 灯光效果参数对象\n * @param {Object} [viewSetting.directionalLight] 方向光参数\n * @param {Object} [viewSetting.skyLight] 天空光参数\n * @param {Object} [viewSetting.skyAtmosphere] 天空大气参数\n * @param {Object} [viewSetting.fog] 雾气参数\n * @param {Object} [viewSetting.postprocessing] 曝光参数\n * @param {Object} [viewSetting.cloudData] 体积云参数\n * @param {boolean} [viewSetting.gamma] 伽马校色设置\n * @description 设置地球场景的灯光、天空、大气、雾、曝光和体积云等效果参数\n * @example\n * // 设置地球场景灯光效果参数\n * StampUtil.setUELight({\n * directionalLight: {\n * intensity: 5,\n * lightColor: 4294967295,\n * isSun: true,\n * shadowAmount: 0.75\n * },\n * skyLight: {\n * intensity: 1\n * },\n * fog: {\n * fogDensity: 0.001\n * }\n * });\n */\n setUELight(viewSetting: any) {\n //场景光\n StampUtil.setDirectionalLight(viewSetting.directionalLight);\n\n //天空灯\n StampUtil.setSkyLight(viewSetting.skyLight);\n\n //雾气\n StampUtil.setFogData(viewSetting.fog);\n\n //天空大气\n StampUtil.setSkyAtmosphere(viewSetting.skyAtmosphere);\n\n //曝光\n StampUtil.setPostprocessingData(viewSetting.postprocessing);\n\n //体积云\n StampUtil.setCloudData(viewSetting.cloudData);\n\n if (viewSetting.gamma != undefined) {\n StampUtil.setGamma(viewSetting.gamma);\n }\n }\n\n /**\n * 获取方向光参数\n *\n * @param {boolean} isSun 是否为太阳光\n * @returns {Promise<Object>} 返回方向光参数的Promise\n * @description 获取场景中方向光(如太阳光)的详细参数\n * @example\n * // 获取太阳光参数\n * StampUtil.getDirectionalLightInfo(true).then((params) => {\n * console.log('太阳光参数:', params);\n * });\n *\n * // 获取其他方向光参数\n * StampUtil.getDirectionalLightInfo(false).then((params) => {\n * console.log('方向光参数:', params);\n * });\n */\n getDirectionalLightInfo(isSun: boolean) {\n return new Promise((resolve) => {\n const directional_light_interface =\n StampUtil.getLibax().directional_light_interface;\n directional_light_interface.OnDirectionalLightGet = function (data: any) {\n directional_light_interface.OnDirectionalLightGet = undefined;\n resolve(data);\n };\n directional_light_interface.get_directional_light(isSun);\n });\n }\n\n /**\n * 设置方向光参数\n *\n * @param {Object} lightData 方向光参数对象\n * @param {number} lightData.intensity 光强度\n * @param {number} lightData.lightColor 光颜色\n * @param {boolean} lightData.isSun 是否为太阳光\n * @param {number} lightData.shadowAmount 阴影强度\n * @description 设置场景中方向光(如太阳光)的参数\n * @example\n * // 设置太阳光参数\n * StampUtil.setDirectionalLight({\n * intensity: 5,\n * lightColor: 4294967295,\n * isSun: true,\n * shadowAmount: 0.75\n * });\n */\n setDirectionalLight(lightData: any) {\n StampUtil.getLibax().directional_light_interface.set_directional_light_data(\n lightData\n );\n }\n\n setDirectionalLightTest(lightData: any) {\n StampUtil.getLibax().directional_light_interface.set_directional_light_data_for_test(\n lightData\n );\n }\n\n /**\n * 设置阴影强度\n *\n * @param {number} iIndex 阴影强度值\n * @param {boolean} [isSun=true] 是否为太阳光\n * @description 设置方向光的阴影强度\n * @example\n * // 设置太阳光阴影强度\n * StampUtil.setShadowAmount(0.75, true);\n *\n * // 设置其他方向光阴影强度\n * StampUtil.setShadowAmount(0.5, false);\n */\n setShadowAmount(iIndex: number, isSun = true) {\n StampUtil.setDirectionalLight({\n isSun: isSun,\n shadowAmount: iIndex,\n });\n }\n\n /**\n * 设置高光范围\n *\n * @param {number} [value=0.07619] 高光范围值,默认值为0.07619\n * @param {boolean} [isSun=true] 是否为太阳光\n * @description 设置方向光的高光范围\n * @example\n * // 设置太阳光高光范围\n * StampUtil.setSpecularScale(0.1, true);\n *\n * // 设置其他方向光高光范围\n * StampUtil.setSpecularScale(0.05, false);\n */\n setSpecularScale(value = 0.07619, isSun = true) {\n StampUtil.setDirectionalLight({\n isSun: isSun,\n speculaScale: value,\n });\n }\n /**\n * 设置是否开启光照阴影\n *\n * @param {boolean} bValue 是否开启阴影\n * @param {boolean} [isSun=true] 是否为太阳光\n * @description 设置方向光是否开启阴影效果\n * @example\n * // 开启太阳光阴影\n * StampUtil.setLightShadow(true, true);\n *\n * // 关闭其他方向光阴影\n * StampUtil.setLightShadow(false, false);\n */\n setLightShadow(bValue: boolean, isSun = true) {\n StampUtil.setDirectionalLight({\n isSun: isSun,\n castShadows: bValue,\n });\n }\n\n /**\n * 设置光照强度\n *\n * @param {number} [value=0.4] 光照强度值,范围为0~1,默认值为0.4\n * @param {boolean} [isSun=true] 是否为太阳光\n * @description 设置方向光的光照强度\n * @example\n * // 设置太阳光强度\n * StampUtil.setLightIntensity(0.6, true);\n *\n * // 设置其他方向光强度\n * StampUtil.setLightIntensity(0.3, false);\n */\n setLightIntensity(value = 0.4, isSun = true) {\n StampUtil.setDirectionalLight({\n isSun: isSun,\n intensity: value,\n });\n }\n\n /**\n * 设置光源颜色\n *\n * @param {number} color 光源颜色值\n * @param {boolean} [isSun=true] 是否为太阳光\n * @description 设置方向光的颜色\n * @example\n * // 设置太阳光颜色为白色\n * StampUtil.setLightColor(0xffffff, true);\n *\n * // 设置其他方向光颜色为红色\n * StampUtil.setLightColor(0xff0000, false);\n */\n setLightColor(color: number, isSun = true) {\n StampUtil.setDirectionalLight({\n isSun: isSun,\n lightColor: color,\n });\n }\n\n /**\n * 设置大气太阳光\n *\n * @param {boolean} isSunLight 是否开启大气太阳光\n * @param {boolean} [isSun=true] 是否为太阳光\n * @description 设置方向光是否影响大气效果\n * @example\n * // 开启大气太阳光效果\n * StampUtil.setAtmosphereSunLight(true, true);\n *\n * // 关闭大气太阳光效果\n * StampUtil.setAtmosphereSunLight(false, true);\n */\n setAtmosphereSunLight(isSunLight: boolean, isSun = true) {\n StampUtil.setDirectionalLight({\n isSun: isSun,\n atmosphereSunlight: isSunLight,\n });\n }\n\n setAtmosphereSunDiskColorScale(colorScale: any, isSun = true) {\n StampUtil.setDirectionalLight({\n isSun: isSun,\n atmosphereSunDiskColorScale: colorScale,\n });\n }\n\n /**\n * 设置光源角度\n *\n * @param {number} angle 光源角度值\n * @param {boolean} [isSun=true] 是否为太阳光\n * @description 设置方向光的角度\n * @example\n * // 设置太阳光角度\n * StampUtil.setLightSourceAngle(45, true);\n *\n * // 设置其他方向光角度\n * StampUtil.setLightSourceAngle(90, false);\n */\n setLightSourceAngle(angle: number, isSun = true) {\n StampUtil.setDirectionalLight({\n isSun: isSun,\n lightSourceAngle: angle,\n });\n }\n\n /**\n * 设置光源软角\n *\n * @param {number} softAngle 光源软角值\n * @param {boolean} [isSun=true] 是否为太阳光\n * @description 设置方向光的软角,控制阴影边缘的模糊程度\n * @example\n * // 设置太阳光软角\n * StampUtil.setLightSourceSoftAngle(5, true);\n *\n * // 设置其他方向光软角\n * StampUtil.setLightSourceSoftAngle(10, false);\n */\n setLightSourceSoftAngle(softAngle: number, isSun = true) {\n StampUtil.setDirectionalLight({\n isSun: isSun,\n lightSourceSoftAngle: softAngle,\n });\n }\n\n /**\n * 设置是否使用色温\n *\n * @param {boolean} isUse 是否使用色温\n * @param {boolean} [isSun=true] 是否为太阳光\n * @description 设置方向光是否使用色温\n * @example\n * // 开启色温\n * StampUtil.setUseTemperature(true, true);\n *\n * // 关闭色温\n * StampUtil.setUseTemperature(false, true);\n */\n setUseTemperature(isUse: boolean, isSun = true) {\n StampUtil.setDirectionalLight({\n isSun: isSun,\n useTemperature: isUse,\n });\n }\n\n /**\n * 设置光源温度\n *\n * @param {number} temperature 光源温度值\n * @param {boolean} [isSun=true] 是否为太阳光\n * @description 设置方向光的色温\n * @example\n * // 设置太阳光色温\n * StampUtil.setTemperature(6500, true);\n *\n * // 设置其他方向光色温\n * StampUtil.setTemperature(5000, false);\n */\n setTemperature(temperature: number, isSun = true) {\n StampUtil.setDirectionalLight({\n isSun: isSun,\n temperature: temperature,\n });\n }\n\n /**\n * 设置是否影响场景\n *\n * @param {boolean} isAffect 是否影响场景\n * @param {boolean} [isSun=true] 是否为太阳光\n * @description 设置方向光是否影响场景\n * @example\n * // 开启方向光影响场景\n * StampUtil.setAffectsWorld(true, true);\n *\n * // 关闭方向光影响场景\n * StampUtil.setAffectsWorld(false, true);\n */\n setAffectsWorld(isAffect: boolean, isSun = true) {\n StampUtil.setDirectionalLight({\n isSun: isSun,\n affectsWorld: isAffect,\n });\n }\n\n /**\n * 设置间接光强度\n *\n * @param {number} value 间接光强度值\n * @param {boolean} [isSun=true] 是否为太阳光\n * @description 设置方向光的间接光强度\n * @example\n * // 设置太阳光间接光强度\n * StampUtil.setIndirectLightingIntensity(1.0, true);\n *\n * // 设置其他方向光间接光强度\n * StampUtil.setIndirectLightingIntensity(0.5, false);\n */\n setIndirectLightingIntensity(value: number, isSun = true) {\n StampUtil.setDirectionalLight({\n isSun: isSun,\n indirectLightingIntensity: value,\n });\n }\n\n /**\n * 设置体积散射强度\n *\n * @param {number} value 体积散射强度值\n * @param {boolean} [isSun=true] 是否为太阳光\n * @description 设置方向光的体积散射强度\n * @example\n * // 设置太阳光体积散射强度\n * StampUtil.setVolumetricScatteringIntensity(1.0, true);\n *\n * // 设置其他方向光体积散射强度\n * StampUtil.setVolumetricScatteringIntensity(0.5, false);\n */\n setVolumetricScatteringIntensity(value: number, isSun = true) {\n StampUtil.setDirectionalLight({\n isSun: isSun,\n volumetricScatteringIntensity: value,\n });\n }\n\n /**\n * 设置是否在云上投射阴影\n *\n * @param {boolean} isOnCloud 是否在云上投射阴影\n * @param {boolean} [isSun=true] 是否为太阳光\n * @description 设置方向光是否在云上投射阴影\n * @example\n * // 开启在云上投射阴影\n * StampUtil.setCastShadowsOnClouds(true, true);\n *\n * // 关闭在云上投射阴影\n * StampUtil.setCastShadowsOnClouds(false, true);\n */\n setCastShadowsOnClouds(isOnCloud: boolean, isSun = true) {\n StampUtil.setDirectionalLight({\n isSun: isSun,\n castShadowsOnClouds: isOnCloud,\n });\n }\n\n /**\n * 设置是否在大气上投射阴影\n *\n * @param {boolean} isOnAtmosphere 是否在大气上投射阴影\n * @param {boolean} [isSun=true] 是否为太阳光\n * @description 设置方向光是否在大气上投射阴影\n * @example\n * // 开启在大气上投射阴影\n * StampUtil.setCastShadowsOnAtmosphere(true, true);\n *\n * // 关闭在大气上投射阴影\n * StampUtil.setCastShadowsOnAtmosphere(false, true);\n */\n setCastShadowsOnAtmosphere(isOnAtmosphere: boolean, isSun = true) {\n StampUtil.setDirectionalLight({\n isSun: isSun,\n castShadowsOnAtmosphere: isOnAtmosphere,\n });\n }\n\n /**\n * 设置是否投射云阴影\n *\n * @param {boolean} isCloudShadow 是否投射云阴影\n * @param {boolean} [isSun=true] 是否为太阳光\n * @description 设置方向光是否投射云阴影\n * @example\n * // 开启投射云阴影\n * StampUtil.setCastCloudShadows(true, true);\n *\n * // 关闭投射云阴影\n * StampUtil.setCastCloudShadows(false, true);\n */\n setCastCloudShadows(isCloudShadow: boolean, isSun = true) {\n StampUtil.setDirectionalLight({\n isSun: isSun,\n castCloudShadows: isCloudShadow,\n });\n }\n\n /**\n * 设置云散射强度范围\n *\n * @param {number} color 云散射强度值\n * @param {boolean} [isSun=true] 是否为太阳光\n * @description 设置方向光的云散射强度范围\n * @example\n * // 设置太阳光云散射强度\n * StampUtil.setCloudScatteredLuminanceScale(1.0, true);\n *\n * // 设置其他方向光云散射强度\n * StampUtil.setCloudScatteredLuminanceScale(0.5, false);\n */\n setCloudScatteredLuminanceScale(color: number, isSun = true) {\n StampUtil.setDirectionalLight({\n isSun: isSun,\n cloudScatteredLuminanceScale: color,\n });\n }\n\n /**\n * 设置可移动光源的动态阴影距离\n *\n * @param {number} value 阴影显示距离值\n * @param {boolean} [isSun=true] 是否为太阳光\n * @description 设置可移动光源的动态阴影显示距离\n * @example\n * // 设置太阳光动态阴影距离\n * StampUtil.setDynamicShadowDistanceMovableLight(1000, true);\n *\n * // 设置其他方向光动态阴影距离\n * StampUtil.setDynamicShadowDistanceMovableLight(500, false);\n */\n setDynamicShadowDistanceMovableLight(value: number, isSun = true) {\n StampUtil.setDirectionalLight({\n isSun: isSun,\n dynamicShadowDistanceMovableLight: value,\n });\n }\n\n /**\n * 设置阴影距离消失参数\n *\n * @param {number} value 阴影距离消失参数值\n * @param {boolean} [isSun=true] 是否为太阳光\n * @description 设置阴影距离的淡出比例\n * @example\n * // 设置太阳光阴影距离消失参数\n * StampUtil.setShadowDistanceFadeoutFraction(0.5, true);\n *\n * // 设置其他方向光阴影距离消失参数\n * StampUtil.setShadowDistanceFadeoutFraction(0.3, false);\n */\n setShadowDistanceFadeoutFraction(value: number, isSun = true) {\n StampUtil.setDirectionalLight({\n isSun: isSun,\n shadowDistanceFadeoutFraction: value,\n });\n }\n\n //#endregion\n\n //#region 天空效果参数\n /**\n * 设置天空灯参数\n *\n * @param {Object} data 天空灯参数对象\n * @param {number} [data.intensity=1] 天空光强度\n * @param {number} [data.lightColor=4294967295] 天空光颜色\n * @param {boolean} [data.useDefault=true] 是否使用默认设置\n * @description 设置场景中天空灯的参数\n * @example\n * // 设置天空灯参数\n * StampUtil.setSkyLight({\n * intensity: 1,\n * lightColor: 4294967295,\n * useDefault: true\n * });\n */\n setSkyLight(data: any) {\n StampUtil.getLibax().sky_light_interface.set_sky_light_data(data);\n }\n\n /**\n * 获取天空灯参数\n *\n * @returns {Promise<Object>} 返回天空灯参数的Promise\n * @description 获取场景中天空灯的详细参数\n * @example\n * // 获取天空灯参数\n * StampUtil.getSkyLight().then((params) => {\n * console.log('天空灯参数:', params);\n * });\n */\n getSkyLight() {\n return new Promise((resolve) => {\n const sky_light_interface = StampUtil.getLibax().sky_light_interface;\n sky_light_interface.OnSkyLightGet = function (data: any) {\n resolve(data);\n };\n sky_light_interface.get_sky_light();\n });\n }\n\n /**\n * 设置是否开启实时捕获\n *\n * @param {boolean} bValue 是否开启实时捕获\n * @description 设置天空光是否开启实时捕获\n * @example\n * // 开启实时捕获\n * StampUtil.setRealTimeCapture(true);\n *\n * // 关闭实时捕获\n * StampUtil.setRealTimeCapture(false);\n */\n setRealTimeCapture(bValue: boolean) {\n StampUtil.setSkyLight({\n isRealTimeCapture: bValue,\n });\n }\n\n /**\n * 设置天空光源类型\n *\n * @param {number} value 光源类型值\n * @description 设置天空光的光源类型\n * @example\n * // 设置天空光源类型\n * StampUtil.setSourceType(0);\n */\n setSourceType(value: number) {\n StampUtil.setSkyLight({\n sourceType: value,\n });\n }\n\n /**\n * 设置天空光强度\n *\n * @param {number} value 天空光强度值\n * @description 设置天空光的强度\n * @example\n * // 设置天空光强度\n * StampUtil.setIntensity(1.0);\n */\n setIntensity(value: number) {\n StampUtil.setSkyLight({\n intensity: value,\n });\n }\n\n /**\n * 设置天空光颜色\n *\n * @param {number} color 天空光颜色值\n * @description 设置天空光的颜色\n * @example\n * // 设置天空光颜色为白色\n * StampUtil.setSkyLightColor(0xffffff);\n *\n * // 设置天空光颜色为蓝色\n * StampUtil.setSkyLightColor(0x0000ff);\n */\n setSkyLightColor(color: number) {\n StampUtil.setSkyLight({\n lightColor: color,\n });\n }\n\n /**\n * 设置天空光是否影响场景\n *\n * @param {boolean} bValue 是否影响场景\n * @description 设置天空光是否影响场景\n * @example\n * // 开启天空光影响场景\n * StampUtil.setSkyAffectWorld(true);\n *\n * // 关闭天空光影响场景\n * StampUtil.setSkyAffectWorld(false);\n */\n setSkyAffectWorld(bValue: boolean) {\n StampUtil.setSkyLight({\n affectWorld: bValue,\n });\n }\n\n /**\n * 设置天空光是否投射阴影\n *\n * @param {boolean} bValue 是否投射阴影\n * @description 设置天空光是否投射阴影\n * @example\n * // 开启天空光投射阴影\n * StampUtil.setCastShadows(true);\n *\n * // 关闭天空光投射阴影\n * StampUtil.setCastShadows(false);\n */\n setCastShadows(bValue: boolean) {\n StampUtil.setSkyLight({\n castShadows: bValue,\n });\n }\n\n /**\n * 设置天空光间接光照强度\n *\n * @param {number} value 间接光照强度值\n * @description 设置天空光的间接光照强度\n * @example\n * // 设置天空光间接光照强度\n * StampUtil.setSkyIndirectLightingIntensity(1.0);\n */\n setSkyIndirectLightingIntensity(value: number) {\n StampUtil.setSkyLight({\n indirectLightIntensity: value,\n });\n }\n\n /**\n * 设置天空光体积散射强度\n *\n * @param {number} value 体积散射强度值\n * @description 设置天空光的体积散射强度\n * @example\n * // 设置天空光体积散射强度\n * StampUtil.setSkyVolumetricScatteringIntensity(1.0);\n */\n setSkyVolumetricScatteringIntensity(value: number) {\n StampUtil.setSkyLight({\n volumetricScatteringIntensity: value,\n });\n }\n\n /**\n * 低半球是否使用纯色\n * @param bValue\n */\n setLowerHemisphereIsBlack(bValue: boolean) {\n StampUtil.setSkyLight({\n lowerHemisphereIsBlack: bValue,\n });\n }\n\n /**\n * 低半球纯色颜色\n * @param rgbaColor\n */\n setLowerHemisphereColor(\n rgbaColor = {\n x: 0.003,\n y: 0.003,\n z: 0.003,\n w: 1.0,\n }\n ) {\n StampUtil.setSkyLight({\n lowerHemisphereColor: rgbaColor,\n });\n }\n\n //#endregion\n\n //#region 大气参数设置\n /**\n * 设置天空大气参数\n *\n * @param {Object} skyAtmosphere 天空大气参数对象\n * @param {boolean} [skyAtmosphere.visibility=true] 大气可见性\n * @param {Object} [skyAtmosphere.rayleighScattering] 瑞利散射参数\n * @param {number} [skyAtmosphere.rayleighScattering.x=0.175] 瑞利散射X分量\n * @param {number} [skyAtmosphere.rayleighScattering.y=0.410] 瑞利散射Y分量\n * @param {number} [skyAtmosphere.rayleighScattering.z=1] 瑞利散射Z分量\n * @param {number} [skyAtmosphere.rayleighScattering.w=1] 瑞利散射W分量\n * @param {number} [skyAtmosphere.rayleighScatteringScale=0.016] 瑞利散射缩放\n * @param {Object} [skyAtmosphere.mieScattering] 米氏散射参数\n * @param {number} [skyAtmosphere.mieScattering.x=1] 米氏散射X分量\n * @param {number} [skyAtmosphere.mieScattering.y=1] 米氏散射Y分量\n * @param {number} [skyAtmosphere.mieScattering.z=1] 米氏散射Z分量\n * @param {number} [skyAtmosphere.mieScattering.w=1] 米氏散射W分量\n * @param {number} [skyAtmosphere.mieScatteringScale=0.004] 米氏散射缩放\n * @param {boolean} [skyAtmosphere.useDefault=true] 是否使用默认设置\n * @description 设置天空大气的详细参数\n * @example\n * // 设置天空大气参数\n * StampUtil.setSkyAtmosphere({\n * visibility: true,\n * rayleighScattering: {\n * x: 0.175,\n * y: 0.410,\n * z: 1,\n * w: 1\n * },\n * rayleighScatteringScale: 0.016,\n * mieScattering: {\n * x: 1,\n * y: 1,\n * z: 1,\n * w: 1\n * },\n * mieScatteringScale: 0.004,\n * useDefault: true\n * });\n */\n setSkyAtmosphere(skyAtmosphere: any) {\n StampUtil.getLibax().sky_light_interface.set_sky_atmosphere_data(\n skyAtmosphere\n );\n }\n\n /**\n * 获取天空大气参数\n *\n * @returns {Promise<Object>} 返回天空大气参数的Promise\n * @description 获取场景中天空大气的详细参数\n * @example\n * // 获取天空大气参数\n * StampUtil.getSkyAtmosphere().then((params) => {\n * console.log('天空大气参数:', params);\n * });\n */\n getSkyAtmosphere() {\n return new Promise((resolve) => {\n const sky_light_interface = StampUtil.getLibax().sky_light_interface;\n sky_light_interface.OnSkyAtmosphereGet = function (data: any) {\n resolve(data);\n };\n sky_light_interface.get_sky_atmosphere();\n });\n }\n /**\n * 设置大气可见性\n *\n * @param {boolean} [value=true] 大气可见性\n * @description 设置大气的可见性\n * @example\n * // 开启大气可见性\n * StampUtil.setAtmosphereVisibility(true);\n *\n * // 关闭大气可见性\n * StampUtil.setAtmosphereVisibility(false);\n */\n setAtmosphereVisibility(value = true) {\n const skyAtmosphere = {\n atmosphereVisibility: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n /**\n * 设置大气可见高度\n *\n * @param {number} [value=0.1] 大气可见高度值\n * @description 设置大气的可见高度\n * @example\n * // 设置大气可见高度\n * StampUtil.setAerialPerspectiveStartDepth(0.1);\n */\n setAerialPerspectiveStartDepth(value = 0.10000000149011612) {\n const skyAtmosphere = {\n aerialPerspectiveStartDepth: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n /**\n * 设置空中透视视图距离比例\n *\n * @param {number} [value=1] 空中透视视图距离比例值\n * @description 设置空中透视的视图距离比例\n * @example\n * // 设置空中透视视图距离比例\n * StampUtil.setAerialPerspectiveViewDistanceScale(1);\n */\n setAerialPerspectiveViewDistanceScale(value = 1) {\n const skyAtmosphere = {\n aerialPerspectiveViewDistanceScale: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n /**\n * 设置大气高度\n *\n * @param {number} [value=60] 大气高度值\n * @description 设置大气的高度\n * @example\n * // 设置大气高度\n * StampUtil.setAtmosphereHeight(60);\n */\n setAtmosphereHeight(value = 60) {\n const skyAtmosphere = {\n atmosphereHeight: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n /**\n * 设置多重散射因子\n *\n * @param {number} [value=1] 多重散射因子值\n * @description 设置大气的多重散射因子\n * @example\n * // 设置多重散射因子\n * StampUtil.setMultiScatteringFactor(1);\n */\n setMultiScatteringFactor(value = 1) {\n const skyAtmosphere = {\n multiScatteringFactor: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n /**\n * 设置底部半径\n *\n * @param {number} [value=6378.137] 底部半径值\n * @description 设置大气的底部半径\n * @example\n * // 设置底部半径\n * StampUtil.setBottomRadius(6378.137);\n */\n setBottomRadius(value = 6378.13720703125) {\n const skyAtmosphere = {\n bottomRadius: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n /**\n * 设置地面反照率\n *\n * @param {number} [value=4289374890] 地面反照率值\n * @description 设置大气的地面反照率\n * @example\n * // 设置地面反照率\n * StampUtil.setGroundAlbedo(4289374890);\n */\n setGroundAlbedo(value = 4289374890) {\n const skyAtmosphere = {\n groundAlbedo: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n /**\n * 设置光线样本计数比例\n *\n * @param {number} [value=1] 光线样本计数比例值\n * @description 设置大气的光线样本计数比例\n * @example\n * // 设置光线样本计数比例\n * StampUtil.setRaceSampleCountScale(1);\n */\n setRaceSampleCountScale(value = 1) {\n const skyAtmosphere = {\n raceSampleCountScale: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n /**\n * 设置瑞利散射标度\n *\n * @param {number} [value=0.04] 瑞利散射标度值\n * @description 设置大气的瑞利散射标度\n * @example\n * // 设置瑞利散射标度\n * StampUtil.setRayleighScatteringScale(0.04);\n */\n setRayleighScatteringScale(value = 0.03999999910593033) {\n const skyAtmosphere = {\n rayleighScatteringScale: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n /**\n * 设置瑞利散射颜色\n *\n * @param {Object} [value] 瑞利散射颜色对象\n * @param {number} [value.x=0.17] 瑞利散射颜色X分量\n * @param {number} [value.y=0.409] 瑞利散射颜色Y分量\n * @param {number} [value.z=1] 瑞利散射颜色Z分量\n * @param {number} [value.w=1] 瑞利散射颜色W分量\n * @description 设置大气的瑞利散射颜色\n * @example\n * // 设置瑞利散射颜色\n * StampUtil.setRayleighScatteringColor({\n * x: 0.17,\n * y: 0.409,\n * z: 1,\n * w: 1\n * });\n */\n setRayleighScatteringColor(\n value = {\n x: 0.17000000178813934,\n y: 0.4092339873313904,\n z: 1,\n w: 1,\n }\n ) {\n const skyAtmosphere = {\n rayleighScattering: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n /**\n * 设置瑞利指数分布\n *\n * @param {number} [value=8] 瑞利指数分布值\n * @description 设置大气的瑞利指数分布\n * @example\n * // 设置瑞利指数分布\n * StampUtil.setRayleighExponentialDistribution(8);\n */\n setRayleighExponentialDistribution(value = 8) {\n const skyAtmosphere = {\n rayleighExponentialDistribution: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n\n /**\n * 设置米氏散射标度\n *\n * @param {number} [value=0.04] 米氏散射标度值\n * @description 设置大气的米氏散射标度\n * @example\n * // 设置米氏散射标度\n * StampUtil.setMieScatteringScale(0.04);\n */\n setMieScatteringScale(value = 0.03999999910593033) {\n const skyAtmosphere = {\n mieScatteringScale: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n /**\n * 设置米氏散射颜色\n *\n * @param {Object} [value] 米氏散射颜色对象\n * @param {number} [value.x=0.17] 米氏散射颜色X分量\n * @param {number} [value.y=0.409] 米氏散射颜色Y分量\n * @param {number} [value.z=1] 米氏散射颜色Z分量\n * @param {number} [value.w=1] 米氏散射颜色W分量\n * @description 设置大气的米氏散射颜色\n * @example\n * // 设置米氏散射颜色\n * StampUtil.setMieScatteringColor({\n * x: 0.17,\n * y: 0.409,\n * z: 1,\n * w: 1\n * });\n */\n setMieScatteringColor(\n value = {\n x: 0.17000000178813934,\n y: 0.4092339873313904,\n z: 1,\n w: 1,\n }\n ) {\n const skyAtmosphere = {\n mieScattering: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n /**\n * 设置米氏吸收标度\n *\n * @param {number} [value=0.000444] 米氏吸收标度值\n * @description 设置大气的米氏吸收标度\n * @example\n * // 设置米氏吸收标度\n * StampUtil.setMieAbsorptionScale(0.000444);\n */\n setMieAbsorptionScale(value = 0.0004440000047907233) {\n const skyAtmosphere = {\n mieAbsorptionScale: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n /**\n * 设置米氏吸收颜色\n *\n * @param {Object} [value] 米氏吸收颜色对象\n * @param {number} [value.x=1] 米氏吸收颜色X分量\n * @param {number} [value.y=1] 米氏吸收颜色Y分量\n * @param {number} [value.z=1] 米氏吸收颜色Z分量\n * @param {number} [value.w=1] 米氏吸收颜色W分量\n * @description 设置大气的米氏吸收颜色\n * @example\n * // 设置米氏吸收颜色\n * StampUtil.setMieAbsorptionColor({\n * x: 1,\n * y: 1,\n * z: 1,\n * w: 1\n * });\n */\n setMieAbsorptionColor(\n value = {\n x: 1,\n y: 1,\n z: 1,\n w: 1,\n }\n ) {\n const skyAtmosphere = {\n mieAbsorption: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n\n /**\n * 设置米氏各向异性\n *\n * @param {number} [value=0.75] 米氏各向异性值\n * @description 设置大气的米氏各向异性\n * @example\n * // 设置米氏各向异性\n * StampUtil.setMieAnisotropy(0.75);\n */\n setMieAnisotropy(value = 0.75) {\n const skyAtmosphere = {\n mieAnisotropy: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n /**\n * 设置米氏指数分布\n *\n * @param {number} [value=1.2] 米氏指数分布值\n * @description 设置大气的米氏指数分布\n * @example\n * // 设置米氏指数分布\n * StampUtil.setMieExponentialDistribution(1.2);\n */\n setMieExponentialDistribution(value = 1.2000000476837158) {\n const skyAtmosphere = {\n mieExponentialDistribution: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n\n /**\n * 设置其他吸收标度\n *\n * @param {number} [value=0.002] 其他吸收标度值\n * @description 设置大气的其他吸收标度\n * @example\n * // 设置其他吸收标度\n * StampUtil.setOtherAbsorptionScale(0.002);\n */\n setOtherAbsorptionScale(value = 0.0020000000949949026) {\n const skyAtmosphere = {\n otherAbsorptionnScale: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n /**\n *其他吸收颜色\n * @param value\n */\n setOtherAbsorptionColor(\n value = {\n x: 0.7667340040206909,\n y: 1,\n z: 0,\n w: 1,\n }\n ) {\n const skyAtmosphere = {\n otherAbsorptionn: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n /**\n *天空亮度因子\n * @param value\n */\n setSkyLuminanceFactorColor(\n value = {\n x: 1,\n y: 1,\n z: 1,\n w: 1,\n }\n ) {\n const skyAtmosphere = {\n skyLuminanceFactor: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n /**\n *高度雾贡献\n * @param value\n */\n setHeightFogContribution(value = 2.875) {\n const skyAtmosphere = {\n heightFogContribution: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n /**\n *透射率最小光仰角\n * @param value\n */\n setTransmittanceMinLightElevationAngle(value = -90) {\n const skyAtmosphere = {\n transmittanceMinLightElevationAngle: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n\n /**\n *其他帐篷分布\n * @param value\n */\n setOtherTentDistribution(\n value = {\n x: 25,\n y: 1,\n z: 15,\n }\n ) {\n const skyAtmosphere = {\n otherTentDistribution: value,\n };\n StampUtil.setSkyAtmosphere(skyAtmosphere);\n }\n\n //#endregion\n\n //#region 雾参数设置\n /**\n * 设置雾参数统一接口\n * @param fog 格式参考 {\n \"fogDensity\": 0,\n \"fogHeightFalloff\": 0.10000000149011612,\n \"visibility\": false,\n \"useDefault\": true,\n \"fogMaxOpacity\": 1\n }\n */\n setFogData(fog: any) {\n const exponential_height_fog_interface =\n StampUtil.getLibax().exponential_height_fog_interface;\n exponential_height_fog_interface.set_fog_data(fog);\n }\n\n /**\n * 获取雾参数信息\n * @returns\n */\n getFogData() {\n return new Promise((resolve) => {\n const exponential_height_fog_interface =\n StampUtil.getLibax().exponential_height_fog_interface;\n exponential_height_fog_interface.OnExponentialHeightFogGet = function (\n data: any\n ) {\n resolve(data);\n };\n exponential_height_fog_interface.get_exponential_height_fog();\n });\n }\n\n /**\n * 设置雾密度\n * @param value\n */\n setFogDensity(value = 0.02) {\n const fog = {\n fogDensity: value,\n };\n StampUtil.setFogData(fog);\n }\n\n /**\n * 设置雾高度衰减\n * @param value\n */\n setHeightFalloff(value = 0.2) {\n const fog = {\n fogHeightFalloff: value,\n };\n StampUtil.setFogData(fog);\n }\n\n /**\n * 设置雾可见性\n * @param bValue\n */\n setFogVisibility(bValue: boolean) {\n const fog = {\n visibility: bValue,\n };\n StampUtil.setFogData(fog);\n }\n\n /**\n * 设置雾可见高度\n * @param value\n */\n setFogVisibleHeight(value = 1) {\n const fog = {\n visibleHeight: value,\n };\n StampUtil.setFogData(fog);\n }\n\n /**\n *\n * @param value\n */\n setSecondFogDensity(value = 0) {\n const fog = {\n secondFogDensity: value,\n };\n StampUtil.setFogData(fog);\n }\n\n /**\n *\n * @param value\n */\n setSecondFogHeightFallOff(value = 0.20000000298023224) {\n const fog = {\n secondFogHeightFallOff: value,\n };\n StampUtil.setFogData(fog);\n }\n /**\n *\n * @param value\n */\n setSecondFogHeightOffset(value = 0) {\n const fog = {\n secondFogHeightOffset: value,\n };\n StampUtil.setFogData(fog);\n }\n /**\n *\n * @param value\n */\n setFogMaxOpacity(value = 1) {\n const fog = {\n fogMaxOpacity: value,\n };\n StampUtil.setFogData(fog);\n }\n /**\n *\n * @param value\n */\n setStartDistance(value = 1) {\n const fog = {\n startDistance: value,\n };\n StampUtil.setFogData(fog);\n }\n /**\n *\n * @param value\n */\n setVolumetricFogDistance(value = 6000) {\n const fog = {\n volumetricFogDistance: value,\n };\n StampUtil.setFogData(fog);\n }\n /**\n *\n * @param value\n */\n setEnableVolumetricFog(value = true) {\n const fog = {\n enableVolumetricFog: value,\n };\n StampUtil.setFogData(fog);\n }\n\n //#endregion\n\n //#region 曝光参数设置\n /**\n * 获取曝光参数信息\n * @returns\n */\n getPostprocessingData() {\n return new Promise((resolve) => {\n const postprocessing_interface = StampAPI.LibAx.postprocessing_interface(\n StampUtil.getLibax()\n );\n postprocessing_interface.OnPostprocessingGet = function (data: any) {\n resolve(data);\n };\n postprocessing_interface.get_postprocessing();\n });\n }\n\n /**\n * 设置曝光参数统一接口\n * @param postprocessing\n */\n setPostprocessingData(postprocessing: any) {\n return new Promise((resolve) => {\n const postprocessing_interface = StampAPI.LibAx.postprocessing_interface(\n StampUtil.getLibax()\n );\n postprocessing_interface.OnPostprocessingGet = function (data: any) {\n resolve(data);\n };\n postprocessing_interface.set_postprocessing_data(postprocessing);\n });\n }\n\n /**\n * 是否开启曝光\n * @param value\n */\n setAutoExposure(value = true) {\n const autoExposure = {\n autoExposure: value,\n };\n StampUtil.setPostprocessingData(autoExposure);\n }\n\n /**\n * 曝光偏移\n * @param value\n */\n setAutoExposureBias(value = 1) {\n const autoExposureBias = {\n autoExposureBias: value,\n };\n StampUtil.setPostprocessingData(autoExposureBias);\n }\n\n /**\n * 白平衡温度\n * @param value\n */\n setWhiteTemp(value = 1) {\n const params = {\n whiteTemp: value,\n };\n StampUtil.setPostprocessingData(params);\n }\n\n /**\n * 阴影距离系数\n * @param value\n */\n setShadowDistanceScale(value: number) {\n const shadowDistanceScale = {\n shadowDistanceScale: value,\n };\n StampUtil.setPostprocessingData(shadowDistanceScale);\n }\n\n /**\n * 是否开启虚拟阴影\n * @param value\n */\n setShadowVirtualEnable(value: boolean) {\n const shadowVirtualEnable = {\n shadowVirtualEnable: value,\n };\n StampUtil.setPostprocessingData(shadowVirtualEnable);\n }\n\n /**\n * 白色色调\n * @param value\n */\n setWhiteTint(value = 1.0) {\n const params = {\n whiteTint: value,\n };\n StampUtil.setPostprocessingData(params);\n }\n /**\n * 斜面\n * @param value\n */\n setFilmSlope(value = 1.0) {\n const params = {\n filmSlope: value,\n };\n StampUtil.setPostprocessingData(params);\n }\n /**\n * 深色\n * @param value\n */\n setFilmToe(value = 1.0) {\n const params = {\n filmToe: value,\n };\n StampUtil.setPostprocessingData(params);\n }\n /**\n * 亮色\n * @param value\n */\n setFilmShoulder(value = 1.0) {\n const params = {\n filmShoulder: value,\n };\n StampUtil.setPostprocessingData(params);\n }\n /**\n * 黑色截断值\n * @param value\n */\n setFilmBlackClip(value = 1.0) {\n const params = {\n filmBlackClip: value,\n };\n StampUtil.setPostprocessingData(params);\n }\n /**\n * 白色截断值\n * @param value\n */\n setFilmWhiteClip(value = 1.0) {\n const params = {\n filmWhiteClip: value,\n };\n StampUtil.setPostprocessingData(params);\n }\n //#endregion\n\n //#region\n /**\n * 体积云参数\n */\n getCloudData() {\n return new Promise((resolve) => {\n const volumetric_cloud_interface =\n StampUtil.getLibax().volumetric_cloud_interface;\n volumetric_cloud_interface.OnVolumetricCloudGet = function (data: any) {\n resolve(data);\n };\n volumetric_cloud_interface.get_volumetric_cloud();\n });\n }\n /**\n * 云参数设置 \n * @params 格式参考 {\n \"layerBottomAltitude\": 5,\n \"layerHeight\": 12,\n \"tracingMaxDistance\": 6,\n \"visibility\": 0,\n \"visibleHeight\": 5\n }\n */\n setCloudData(params: any) {\n return new Promise((resolve) => {\n const volumetric_cloud_interface =\n StampUtil.getLibax().volumetric_cloud_interface;\n volumetric_cloud_interface.OnVolumetricCloudGet = function (data: any) {\n resolve(data);\n };\n volumetric_cloud_interface.set_cloud_data(params);\n });\n }\n //#endregion\n //#region 视角操作\n touchScreenScale(scale = 1) {\n const environment_interface = StampUtil.getLibax().environment_interface;\n environment_interface.touch_screen_scale(scale);\n }\n /**\n * 放大\n */\n enlarge() {\n StampUtil.getLibax().global_control_interface.zoom_in(0.33);\n }\n /**\n * 缩小\n */\n reduce() {\n StampUtil.getLibax().global_control_interface.zoom_out(-0.5);\n }\n\n /**\n * 全球视角\n */\n globalView() {\n StampUtil.getLibax().global_control_interface.resume();\n }\n\n /**\n * 指北\n */\n northView() {\n StampUtil.getLibax().global_control_interface.north_view();\n }\n\n /**\n * 顶视\n */\n topView() {\n StampUtil.getLibax().global_control_interface.top_view();\n }\n\n /**\n * 顶北\n */\n northTopView() {\n StampUtil.getLibax().global_control_interface.north_top_view();\n }\n\n /**\n * 视角停止\n */\n stopView() {\n StampUtil.getLibax().global_control_interface.stop();\n try {\n StampAPI.lib_ax1.earthDomElement &&\n StampAPI.lib_ax1.global_control_interface.stop();\n StampAPI.lib_ax2.earthDomElement &&\n StampAPI.lib_ax2.global_control_interface.stop();\n } catch (ex) {}\n }\n\n /**\n * 碰撞\n */\n intersectMode(bOpen: boolean) {\n const params = [bOpen];\n StampUtil.getLibax().global_control_interface.intersect_mode(params);\n }\n /**\n * 旋转\n */\n surroundControlEx(value = 0.2) {\n const params = [value];\n StampUtil.getLibax().global_control_interface.surround_control_ex(params);\n }\n /**\n * 右屏旋转 (是三屏的时候为中间屏幕)\n * @param value\n */\n surroundControlEx2(value = 0.2) {\n const params = [value];\n StampAPI.lib_ax1.global_control_interface.surround_control_ex(params);\n }\n /**\n * 右屏旋转\n * @param value\n */\n surroundControlEx3(value = 0.2) {\n const params = [value];\n StampAPI.lib_ax2.global_control_interface.surround_control_ex(params);\n }\n /**\n * 飞行定位\n * @param longitude 经度(度)\n * @param latitude 纬度(度)\n * @param altitude 高程(度)\n * @param head 朝向角(度)\n * @param pitch 俯仰角(度)\n * @param rotate 旋转角(度)\n * @param range 距离(米)\n * @param time 时间(秒)\n */\n flytoLookat(\n longitude: number,\n latitude: number,\n altitude: number,\n head: number,\n pitch: number,\n rotate: number,\n range: number,\n time = 3\n ) {\n StampUtil.getLibax().global_control_interface.fly_to_lookat(\n longitude,\n latitude,\n altitude,\n head,\n pitch,\n rotate,\n range,\n time\n );\n }\n\n /**\n * 直接定位\n * @param longitude 经度(度)\n * @param latitude 纬度(度)\n * @param altitude 高程(度)\n * @param head 朝向角(度)\n * @param pitch 俯仰角(度)\n * @param rotate 旋转角(度)\n * @param range 距离(米)\n */\n gotoLookat(\n longitude: number,\n latitude: number,\n altitude: number,\n head: number,\n pitch: number,\n rotate: number,\n range: number\n ) {\n StampUtil.getLibax().global_control_interface.go_to_lookat([\n longitude,\n latitude,\n altitude,\n head,\n pitch,\n rotate,\n range,\n ]);\n }\n\n /**\n * 飞行到经纬度范围\n * @param lonlatBox 矩形框范围\n */\n flytoElement(guid: any) {\n const elementObj = this.getElementById(guid);\n if (!elementObj) {\n return;\n }\n if (elementObj.rings || elementObj.points || elementObj.location) {\n let points = [];\n if (elementObj.points) {\n points = elementObj.points;\n } else if (elementObj.location) {\n points = [elementObj.location];\n } else if (elementObj.rings) {\n points = elementObj.rings[0].ring;\n }\n const lonlatBox = {\n minX: 0,\n maxX: 0,\n minY: 0,\n maxY: 0,\n };\n for (let i = 0; i < points.length; i++) {\n lonlatBox.minX =\n lonlatBox.minX == 0\n ? parseFloat(points[i].x)\n : Math.min(parseFloat(points[i].x), lonlatBox.minX);\n lonlatBox.maxX =\n lonlatBox.maxX == 0\n ? parseFloat(points[i].x)\n : Math.max(parseFloat(points[i].x), lonlatBox.maxX);\n lonlatBox.minY =\n lonlatBox.minY == 0\n ? parseFloat(points[i].y)\n : Math.min(parseFloat(points[i].y), lonlatBox.minY);\n lonlatBox.maxY =\n lonlatBox.maxY == 0\n ? parseFloat(points[i].y)\n : Math.max(parseFloat(points[i].y), lonlatBox.maxY);\n }\n this.flytoLonLatBox(lonlatBox);\n } else if (elementObj.longitude) {\n this.flytoLookat(\n elementObj.longitude,\n elementObj.latitude,\n elementObj.altitude,\n 0,\n 90,\n 0,\n 100,\n 3\n );\n }\n }\n\n /**\n * 飞行到经纬度范围\n * @param lonlatBox 矩形框范围\n */\n async flytoLonLatBox(lonlatBox: any, minHeight = 100) {\n const minX = lonlatBox.minX,\n minY = lonlatBox.minY,\n maxX = lonlatBox.maxX,\n maxY = lonlatBox.maxY;\n const width = (maxX - minX) / 2;\n const heigth = (maxY - minY) / 2;\n const lon = (maxX + minX) / 2;\n const lat = (maxY + minY) / 2;\n let maxHeight = 0;\n if (lonlatBox.maxHeight) {\n maxHeight = lonlatBox.maxHeight;\n } else {\n const points: any = await StampUtil.getBatchAltitude([\n {\n x: (minX + maxX) / 2,\n y: (minY + maxY) / 2,\n z: 0,\n },\n ]);\n maxHeight = points[0].z;\n }\n const rangeX =\n ((width / 180) * Math.PI * 6378137) / Math.tan((22.5 / 180) * Math.PI);\n const rangeY =\n ((heigth / 180) * Math.PI * 6378137) / Math.tan((22.5 / 180) * Math.PI);\n const global_control_interface =\n StampUtil.getLibax().global_control_interface;\n global_control_interface.fly_to_lookat(\n lon,\n lat,\n maxHeight,\n 0,\n 90,\n 0,\n Math.max(rangeX, rangeY, minHeight),\n 3\n );\n }\n\n /**\n * 飞行到点集合\n * @param points 点集合\n */\n flytoPoints(points: any) {\n const lonlatBox = {\n minX: 0,\n maxX: 0,\n minY: 0,\n maxY: 0,\n };\n for (let i = 0; i < points.length; i++) {\n lonlatBox.minX =\n lonlatBox.minX == 0\n ? parseFloat(points[i].x)\n : Math.min(parseFloat(points[i].x), lonlatBox.minX);\n lonlatBox.maxX =\n lonlatBox.maxX == 0\n ? parseFloat(points[i].x)\n : Math.max(parseFloat(points[i].x), lonlatBox.maxX);\n lonlatBox.minY =\n lonlatBox.minY == 0\n ? parseFloat(points[i].y)\n : Math.min(parseFloat(points[i].y), lonlatBox.minY);\n lonlatBox.maxY =\n lonlatBox.maxY == 0\n ? parseFloat(points[i].y)\n : Math.max(parseFloat(points[i].y), lonlatBox.maxY);\n }\n this.flytoLonLatBox(lonlatBox);\n }\n\n /**\n * 获取摄像机经纬度位置和角度信息\n * @returns\n */\n getPose() {\n return new Promise((resolve) => {\n const globe_observer_interface =\n StampUtil.getLibax().globe_observer_interface;\n globe_observer_interface.oldOnGetPoseFinished =\n globe_observer_interface.OnGetPoseFinished;\n globe_observer_interface.OnGetPoseFinished = (data: any) => {\n globe_observer_interface.OnGetPoseFinished =\n globe_observer_interface.oldOnGetPoseFinished;\n resolve(data);\n };\n globe_observer_interface.get_pose();\n });\n }\n\n /**\n * 获取目标点经纬度位置\n * @returns\n */\n getTargetPose() {\n return new Promise((resolve) => {\n const globe_observer_interface =\n StampUtil.getLibax().globe_observer_interface;\n globe_observer_interface.oldOnGetTargetPoseFinished =\n globe_observer_interface.OnGetTargetPoseFinished; //保存原方法\n globe_observer_interface.OnGetTargetPoseFinished = (data: any) => {\n globe_observer_interface.OnGetTargetPoseFinished =\n globe_observer_interface.oldOnGetTargetPoseFinished; //还原原方法\n resolve(data);\n };\n globe_observer_interface.get_target_pose();\n });\n }\n\n /**\n * 获取摄像机经纬度位置\n * @returns\n */\n getOriginPose() {\n return new Promise((resolve) => {\n const globe_observer_interface =\n StampUtil.getLibax().globe_observer_interface;\n globe_observer_interface.oldOnGetOriginPoseFinished =\n globe_observer_interface.OnGetOriginPoseFinished; //保存原方法\n globe_observer_interface.OnGetOriginPoseFinished = (data: any) => {\n globe_observer_interface.OnGetOriginPoseFinished =\n globe_observer_interface.oldOnGetOriginPoseFinished; //还原原方法\n resolve(data);\n };\n globe_observer_interface.get_origin_pose();\n });\n }\n\n /**\n * 添加div卡片\n * @param param\n */\n addEarthToolTip(\n param = {\n guid: StampUtil.createGuid(), //唯一编码guid,传空的话会给默认值\n divid: \"testMoveDiv\", //气泡窗体ID\n Longitude: 0, //经度\n Latitude: 0, //纬度\n Altitude: 0, //高程\n position: 0, //0: 左上角对齐,1:左下角对齐;2:右上角对齐;3:右下角对齐;4:上下左右居中对齐\n }\n ) {\n param.guid = param.guid || StampUtil.createGuid();\n const pos_guid = param.guid;\n const params = [1, pos_guid];\n params.push(param.Longitude);\n params.push(param.Latitude);\n params.push(param.Altitude);\n const globe_observer_interface =\n StampUtil.getLibax().globe_observer_interface;\n globe_observer_interface.OnToScreen = (data: any) => {\n if (data.positions == undefined || data.positions.length <= 0) {\n return;\n }\n const len = data.positions.length;\n for (let i = 0; i < len; ++i) {\n const pos =\n StampUtil.getLibax().player.streaming.onScreenKeyboardHelper.unquantizeAndDenormalizeUnsigned(\n data.positions[i].x,\n data.positions[i].y\n );\n const elementparam = StampUtil.earthToolTipMap[data.positions[i].guid];\n if (!elementparam) {\n continue; //不存在直接返回\n }\n const divElement = document.getElementById(\n StampUtil.earthToolTipMap[data.positions[i].guid].divid\n ) as HTMLElement;\n divElement.style.position = \"absolute\";\n switch (elementparam.position) {\n case 0: //左上\n divElement.style.left = pos.x + \"px\";\n divElement.style.top = pos.y + \"px\";\n break;\n case 1: //左下\n divElement.style.left = pos.x + \"px\";\n divElement.style.top = pos.y - divElement.offsetHeight + \"px\";\n break;\n case 2: //右上\n divElement.style.left = pos.x - divElement.offsetWidth + \"px\";\n divElement.style.top = pos.y + \"px\";\n break;\n case 3: //右下\n divElement.style.left = pos.x - divElement.offsetWidth + \"px\";\n divElement.style.top = pos.y - divElement.offsetHeight + \"px\";\n break;\n case 4: //居中\n divElement.style.left = pos.x - divElement.offsetWidth / 2 + \"px\";\n divElement.style.top = pos.y - divElement.offsetHeight / 2 + \"px\";\n break;\n default:\n break;\n }\n\n if (pos.x <= 0 || pos.y <= 0) {\n divElement.style.visibility = \"hidden\";\n } else {\n divElement.style.visibility = \"visible\";\n }\n }\n };\n globe_observer_interface.get_screen_pose(params);\n StampUtil.earthToolTipMap[param.guid] = param;\n return param;\n }\n\n /**\n * 删除div卡片\n * @param guid\n */\n deleteEarthToolTip(guid: string) {\n if (undefined != guid) {\n const params = [2, guid];\n const globe_observer_interface =\n StampUtil.getLibax().globe_observer_interface;\n globe_observer_interface.get_screen_pose(params);\n }\n }\n\n /**\n * 删除所有div卡片\n */\n deleteEarthToolTipAll() {\n const params = [3];\n const globe_observer_interface =\n StampUtil.getLibax().globe_observer_interface;\n globe_observer_interface.get_screen_pose(params);\n }\n\n //#endregion\n\n //#region 坐标转换\n /**\n * 平面转经纬度\n * @param x\n * @param y\n * @returns\n */\n transToSphr(x: number, y: number, z = 0.0) {\n return new Promise((resolve) => {\n const query_interface = StampAPI.LibAx.query_interface(\n StampUtil.getLibax()\n );\n const OnTransFinished = function (data: any) {\n query_interface.OnTransFinished = undefined;\n if (data && data[\"results:\"] && data[\"results:\"].length > 0) {\n resolve(data[\"results:\"][0]);\n } else {\n const obj = {\n lon: data.results[0],\n lat: data.results[1],\n alt: data.results[2],\n };\n resolve(obj);\n }\n };\n query_interface.OnTransFinished = OnTransFinished;\n query_interface.trans_to_sphr([x, y, z]);\n });\n }\n\n //经纬度转平面\n transToXy(lon: number, lat: number, alt = 0.0) {\n return new Promise((resolve) => {\n const query_interface = StampAPI.LibAx.query_interface(\n StampUtil.getLibax()\n );\n const OnTransFinished = function (data: any) {\n query_interface.OnTransFinished = undefined;\n if (data && data[\"results:\"] && data[\"results:\"].length > 0) {\n resolve(data[\"results:\"][0]);\n } else {\n const obj = {\n X: data.results[0],\n Y: data.results[1],\n Z: data.results[2],\n };\n resolve(obj);\n }\n };\n query_interface.OnTransFinished = OnTransFinished;\n query_interface.trans_to_XY([lon, lat, alt]);\n });\n }\n\n /**\n * 批量转换 经纬度转平面\n * @param value [lon,lat,alt,lon,lat,alt,...]\n * @returns\n */\n batchTransToXy(value: any) {\n return new Promise((resolve) => {\n const query_interface = StampAPI.LibAx.query_interface(\n StampUtil.getLibax()\n );\n const OnTransFinished = function (data: any) {\n query_interface.OnTransFinished = undefined;\n if (data && data[\"results\"]) {\n resolve(data[\"results\"]);\n } else {\n resolve(data);\n }\n };\n query_interface.OnTransFinished = OnTransFinished;\n query_interface.trans_to_XY(value);\n });\n }\n\n /**\n * 批量转换 平面转经纬度\n * @param value [x,y,z,x,y,z,...]\n * @returns\n */\n batchTransToSphr(value: any) {\n return new Promise((resolve) => {\n const query_interface = StampAPI.LibAx.query_interface(\n StampUtil.getLibax()\n );\n const OnTransFinished = function (data: any) {\n query_interface.OnTransFinished = undefined;\n if (data && data[\"results\"]) {\n resolve(data[\"results\"]);\n } else {\n resolve(data);\n }\n };\n query_interface.OnTransFinished = OnTransFinished;\n query_interface.trans_to_sphr(value);\n });\n }\n // 屏幕转经纬度\n screenToLoc(leftPx: number, topPx: number) {\n return new Promise((resolve: any) => {\n const globe_observer_interface =\n StampUtil.getLibax().globe_observer_interface;\n const coord =\n StampUtil.getLibax().player.webRtcController.coordinateConverter.normalizeAndQuantizeUnsigned(\n leftPx,\n topPx\n );\n globe_observer_interface.OnPickFinished = function (data: any) {\n globe_observer_interface.OnPickFinished = undefined;\n resolve(data);\n };\n globe_observer_interface.pick(coord.x, coord.y, 4095);\n });\n }\n // 经纬度转屏幕\n locToScreen(data: any) {\n return new Promise((resolve: any) => {\n const globe_observer_interface =\n StampUtil.getLibax().globe_observer_interface;\n const pos_guid = StampUtil.createGuid();\n const params = [1, pos_guid];\n params.push(data.Longitude);\n params.push(data.Latitude);\n params.push(data.Altitude);\n\n globe_observer_interface.OnToScreen = function (data: any) {\n if (data.positions == undefined || data.positions.length <= 0) {\n return;\n }\n const len = data.positions.length;\n for (let i = 0; i < len; ++i) {\n if (pos_guid == data.positions[i].guid) {\n const pos =\n StampUtil.getLibax().player.streaming.onScreenKeyboardHelper.unquantizeAndDenormalizeUnsigned(\n data.positions[i].x,\n data.positions[i].y\n );\n resolve(pos);\n }\n }\n };\n globe_observer_interface.get_screen_pose(params);\n });\n }\n /**\n * 初始化空间参考文件\n * @param spatialFilePath\n * @returns\n */\n async initDatum(spatialFilePath: any) {\n return new Promise((resolve) => {\n const query_interface = StampAPI.LibAx.query_interface(\n StampUtil.getLibax()\n );\n const OnTransFinished = function (data: any) {\n query_interface.OnTransFinished = undefined;\n resolve(data);\n };\n query_interface.OnTransFinished = OnTransFinished;\n query_interface.init_datum(spatialFilePath);\n });\n }\n\n /**\n * 根据两个点的经纬度坐标和中心位置信息,计算相对坐标\n * @param lon 经度\n * @param lat 纬度\n * @param alt 高程\n * @param heading 朝向\n * @param tilt 俯仰\n * @param roll 旋转\n * @param scaleX 缩放X\n * @param scaleY 缩放Y\n * @param scaleZ 缩放Z\n * @param linePoints 线段的起终点坐标\n * @returns\n */\n transformSphrericalToCartesion(\n lon: any,\n lat: any,\n alt: any,\n heading: any,\n tilt: any,\n roll: any,\n scaleX: any,\n scaleY: any,\n scaleZ: any,\n linePoints: any\n ) {\n return new Promise((resolve) => {\n const geometry_algorithm_interface =\n StampUtil.getLibax().geometry_algorithm_interface;\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = function (\n res: any\n ) {\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = () => {};\n if (res.result == \"success\") {\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = function (\n data: any\n ) {\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = () => {};\n resolve(data);\n };\n geometry_algorithm_interface.transform_sphrerical_to_cartesion(\n linePoints\n );\n }\n };\n geometry_algorithm_interface.set_pose(\n lon,\n lat,\n alt,\n heading,\n tilt,\n roll,\n scaleX,\n scaleY,\n scaleZ\n );\n });\n }\n\n /**\n * 根据两个点的相对坐标和偏移后的中心位置信息,计算出经纬度坐标\n * @param lon 经度\n * @param lat 纬度\n * @param alt 高程\n * @param heading 朝向\n * @param tilt 俯仰\n * @param roll 旋转\n * @param scaleX 缩放X\n * @param scaleY 缩放Y\n * @param scaleZ 缩放Z\n * @param linePoints 线段的起终点相对坐标\n * @returns\n */\n transformCartesionToSphrerical(\n lon: any,\n lat: any,\n alt: any,\n heading: any,\n tilt: any,\n roll: any,\n scaleX: any,\n scaleY: any,\n scaleZ: any,\n linePoints: any\n ) {\n return new Promise((resolve) => {\n const geometry_algorithm_interface =\n StampUtil.getLibax().geometry_algorithm_interface;\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = function (\n res: any\n ) {\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = () => {};\n if (res.result == \"success\") {\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = function (\n data: any\n ) {\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = () => {};\n resolve(data);\n };\n geometry_algorithm_interface.transform_cartesion_to_sphrerical(\n linePoints\n );\n }\n };\n geometry_algorithm_interface.set_pose(\n lon,\n lat,\n alt,\n heading,\n tilt,\n roll,\n scaleX,\n scaleY,\n scaleZ\n );\n });\n }\n //#endregion\n\n //#region 飞行路径\n\n /**\n * 获取运动物体列表\n * @returns\n */\n getDynamicList() {\n return new Promise((resolve) => {\n const dynamic_system_interface =\n StampUtil.getLibax().dynamic_system_interface;\n if (dynamic_system_interface.dynamic_list == undefined) {\n dynamic_system_interface.OnDynamicListLoaded = function (data: any) {\n dynamic_system_interface.OnDynamicListLoaded = undefined;\n dynamic_system_interface.dynamic_list = data;\n resolve(data);\n };\n dynamic_system_interface.apply_dynamic_list();\n } else {\n const data = dynamic_system_interface.dynamic_list;\n resolve(data);\n }\n });\n }\n\n /**\n * 获取路径列表\n * @returns\n */\n getTrackList() {\n return new Promise((resolve) => {\n const track_interface = StampUtil.getLibax().track_interface;\n track_interface.OnTrackListLoaded = function (data: any) {\n track_interface.OnTrackListLoaded = undefined;\n resolve(data);\n };\n track_interface.apply_track_list();\n });\n }\n\n /**\n * 创建路径\n * @param name\n * @returns\n */\n createTrack(name = \"路径\", params: any) {\n return new Promise((resolve, reject) => {\n const track_interface = StampUtil.getLibax().track_interface;\n track_interface.OnTrackLoaded = function (data: any) {\n track_interface.OnTrackLoaded = undefined;\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n shape_creator_interface.OnShapeCreated = undefined;\n shape_creator_interface.clear();\n const pointsArr = [];\n data.stations[0].Yaw = Number(params.yaw);\n data.stations[0].Pitch = Number(params.pitch);\n data.stations[0].FlyHeight = Number(params.height);\n if (data.stations[0].Children.length < 3) {\n reject(\"飞行点不能少于三个\");\n return;\n }\n for (let i = 0; i < data.stations[0].Children.length; i++) {\n pointsArr.push(data.stations[0].Children[i].Longitude);\n pointsArr.push(data.stations[0].Children[i].Latitude);\n pointsArr.push(data.stations[0].Children[i].Altitude);\n data.stations[0].Children[i].FlyHeight = Number(params.height);\n data.stations[0].Children[i].Tilt = Number(params.yaw);\n data.stations[0].Children[i].Heading = Number(params.pitch);\n data.stations[0].Children[i].Speed = Number(params.speed);\n }\n const points = pointsArr.join(\",\");\n const guid = data.guid;\n StampUtil.createTrackFromJson(guid, data);\n resolve({ points, guid });\n };\n track_interface.create_track(name);\n });\n }\n\n createTrackFromJson(trackId: string, trackJson: any, isFlyTrack = true) {\n return new Promise((resolve) => {\n const track_interface = StampUtil.getLibax().track_interface;\n track_interface.OnTrackLoaded = function (data: any) {\n track_interface.OnTrackLoaded = undefined;\n track_interface.commit_changes_track(data.guid, isFlyTrack); //千万记得要commit,不然无法生成路径\n resolve(data);\n };\n track_interface.load_track(trackId, JSON.stringify(trackJson));\n });\n }\n\n /**\n * 加载路径\n * @param id 路径guid\n */\n loadTrack(id: string) {\n const track_interface = StampUtil.getLibax().track_interface;\n // track_interface.OnTrackLoaded = function (data: any) {\n //\n // };\n track_interface.load_track(id);\n }\n\n /**\n * 卸载路径(内存)\n * @param id 路径guid\n */\n unloadTrack(id: string) {\n const track_interface = StampUtil.getLibax().track_interface;\n track_interface.unload_track(id);\n }\n\n /**\n * 删除路径(硬盘:暂未用到)\n * @param trackId\n */\n deleteTrack(trackId: string) {\n const track_interface = StampUtil.getLibax().track_interface;\n track_interface.delete_track(trackId);\n }\n\n /**\n * 开始飞行\n * @param trackId 路径GUID\n * @param dynamicId 运动物体GUID\n * @param observerType 人称视角:1:第一人称,3:第三人称,4:自由模式\n */\n playTrack(\n trackId: string,\n dynamicId: string,\n observerType = 3,\n callback: any\n ) {\n const dynamic_system_interface =\n StampUtil.getLibax().dynamic_system_interface;\n dynamic_system_interface.OnLoadDynamicObject = function (data: any) {\n dynamic_system_interface.OnLoadDynamicObject = undefined;\n const track_interface = StampUtil.getLibax().track_interface;\n track_interface.OnTrackFinished = function (data: any) {\n dynamic_system_interface.unload_dynamic_object(data.bind);\n typeof callback == \"function\" && callback(trackId);\n };\n track_interface.play_track(trackId, data.guid, observerType, false);\n };\n dynamic_system_interface.load_dynamic_object(dynamicId);\n }\n\n /**\n * 飞行过程中修改视角模式\n * @param guid 路径guid\n * @param type 1:第一人称 3:第三人称 4:自由视角模式\n */\n setTrackFollowType(guid: string, type: number) {\n const track_interface = StampAPI.getLibax().dynamic_system_interface;\n track_interface.set_main_track(guid, type);\n }\n\n /**\n * 暂停飞行\n * @param trackId 路径GUID\n */\n pauseTrack(trackId: string) {\n const track_interface = StampUtil.getLibax().track_interface;\n track_interface.pause_track(trackId);\n }\n\n /**\n * 继续飞行\n * @param trackId 路径GUID\n */\n resumeTrack(trackId: string) {\n const track_interface = StampUtil.getLibax().track_interface;\n track_interface.resume_track(trackId);\n }\n\n /**\n * 停止飞行\n * @param trackId 路径GUID\n */\n stopTrack(trackId: string) {\n const track_interface = StampUtil.getLibax().track_interface;\n track_interface.stop_track(trackId);\n }\n\n showTrack(trackId: string, visible: boolean) {\n const track_interface = StampUtil.getLibax().track_interface;\n typeof track_interface.set_track_visible == \"function\" &&\n track_interface.set_track_visible(trackId, visible);\n }\n\n /**\n * 跟随track\n */\n initFollowTrack(options: any) {\n const track_interface = StampUtil.getLibax().track_interface;\n track_interface.init_follow_track(\n options.guid,\n options.heading,\n options.tilt,\n options.range_scale,\n options.time\n );\n }\n\n /**\n * 飞行视频录制\n */\n videoRecorder(trackId: any, name: string) {\n return new Promise(async (resolve) => {\n let isSuccess = false;\n const video_recorder_control = StampAPI.LibAx.video_recorder_control(\n StampUtil.getLibax()\n );\n const stamp_frame = StampUtil.getLibax().stamp_frame;\n video_recorder_control.OnBeginCaptureFinished = function (data: any) {\n if (data.result == \"success\") {\n const total_frame_count = parseInt(data.totalFrameCount);\n let curr_frame = 1;\n stamp_frame.OnDownloadFinished = function () {\n if (curr_frame < total_frame_count) {\n video_recorder_control.capture_frame(\n curr_frame / total_frame_count\n );\n curr_frame++;\n } else {\n isSuccess = true;\n video_recorder_control.end_capture();\n }\n };\n }\n };\n video_recorder_control.OnEndCaptureFinished = function (data: any) {\n const arrayBuffer = new ArrayBuffer(data.length);\n const bufTmp = new Uint8ClampedArray(arrayBuffer);\n bufTmp.set(data);\n const dv = new DataView(arrayBuffer);\n let offset = 0;\n dv.getUint32(offset, true); //获取长度\n offset += 4;\n const imageBuf = bufTmp.slice(offset).buffer;\n const fileName = StampUtil.saveFile(imageBuf, name);\n resolve(isSuccess);\n };\n const track_id = trackId; // track guid\n const rootPath = (await StampUtil.getRootPath()) as any; //rootPath.root_path +\n const video_path = rootPath.root_path + name; // 保存路径,如果是服务器路径会保存到数据服务器C:\\\\test.h264\n const nResolution = 0; // 视频分辨率, 0 = 1080P, 1= 720P, 2 = DVD, 3 = SVGA, 4 = VGA\n const nFramePerSecond = 30; // 帧率\n const waite_time = -1; // 下载最长等待时间,默认60秒,负数时不重新设置\n const save_local = true; // 是否本地路径,服务器路径设为false\n video_recorder_control.begin_capture(\n track_id,\n video_path,\n nResolution,\n nFramePerSecond,\n waite_time,\n save_local\n );\n });\n }\n /**\n * 停止录制\n */\n endCapture() {\n const video_recorder_control = StampAPI.LibAx.video_recorder_control(\n StampUtil.getLibax()\n );\n video_recorder_control.end_capture();\n }\n\n /**\n * 视点漫游\n * @param viewpoints\n * @param index\n * @param callback\n * @returns\n */\n playViewPointRoam(roamObj: any) {\n roamObj.viewPointIndex = 0;\n roamObj.isPause = false;\n roamObj.isStop = false;\n this.flytoViewPointRoam(roamObj);\n }\n\n flytoViewPointRoam(roamObj: any) {\n if (roamObj.timeoutVal) {\n clearTimeout(roamObj.timeoutVal);\n roamObj.timeoutVal = null;\n }\n if (roamObj.viewPointIndex == undefined) {\n roamObj.viewPointIndex = 0;\n }\n const viewpoints = roamObj.points;\n let index = roamObj.viewPointIndex;\n if (index >= viewpoints.length) {\n typeof roamObj.callbackFinished == \"function\" &&\n roamObj.callbackFinished();\n return;\n }\n if (roamObj.isPause || roamObj.isStop) {\n //暂停\n return;\n }\n StampUtil.flytoLookat(\n viewpoints[index].longitude,\n viewpoints[index].latitude,\n viewpoints[index].altitude,\n viewpoints[index].heading,\n viewpoints[index].tilt,\n viewpoints[index].roll,\n 0,\n viewpoints[index].flyTime\n );\n roamObj.viewPointIndex++;\n roamObj.timeoutVal = setTimeout(() => {\n roamObj.timeoutVal = null;\n index = roamObj.viewPointIndex;\n if (index >= viewpoints.length) {\n typeof roamObj.callbackFinished == \"function\" &&\n roamObj.callbackFinished();\n return;\n }\n if (roamObj.isPause || roamObj.isStop) {\n //暂停\n return;\n }\n StampUtil.flytoViewPointRoam(roamObj);\n }, (viewpoints[index].flyTime + viewpoints[index].intervalTime) * 1000);\n }\n\n pauseViewPointRoam(roamObj: any) {\n roamObj.isPause = true;\n if (roamObj.timeoutVal) {\n clearTimeout(roamObj.timeoutVal);\n roamObj.timeoutVal = null;\n }\n }\n\n resumeViewPointRoam(roamObj: any) {\n roamObj.isPause = false;\n this.flytoViewPointRoam(roamObj);\n }\n\n stopViewPointRoam(roamObj: any) {\n roamObj.isPause = false;\n roamObj.viewPointIndex = 0;\n roamObj.isStop = true;\n if (roamObj.timeoutVal) {\n clearTimeout(roamObj.timeoutVal);\n roamObj.timeoutVal = null;\n }\n }\n //#endregion\n\n //#region 瓦片配色\n /**\n * 获取layer数\n * @param guid 图层guid\n * @returns\n */\n getSubLayerNums(guid: any) {\n return new Promise((resolve) => {\n const vector_tile_layer_interface =\n StampAPI.LibAx.vector_tile_layer_interface(StampUtil.getLibax());\n const params = [guid];\n vector_tile_layer_interface.OnRespondGet = function (data: any) {\n vector_tile_layer_interface.OnRespondGet = undefined;\n resolve(data);\n };\n vector_tile_layer_interface.get_sub_layer_num(params);\n });\n }\n\n getSubLayer(guid: any, index = 0) {\n return new Promise((resolve) => {\n const vector_tile_layer_interface =\n StampAPI.LibAx.vector_tile_layer_interface(StampUtil.getLibax());\n const params = [guid, index];\n vector_tile_layer_interface.OnRespondGet = function (data: any) {\n vector_tile_layer_interface.OnRespondGet = undefined;\n resolve(data);\n };\n vector_tile_layer_interface.get_sub_layers(params);\n });\n }\n\n setSubLayers(guid: any, count = 1) {\n const vector_tile_layer_interface =\n StampAPI.LibAx.vector_tile_layer_interface(StampUtil.getLibax());\n const params = [guid, count];\n vector_tile_layer_interface.set_sub_layers(params);\n }\n\n setSubLayerVisible(guid: any, index = 0, bShow: boolean, lib = 1) {\n let stamp_frame = null;\n if (lib == 0) {\n stamp_frame = StampAPI.lib_ax1;\n } else if (lib == 1) {\n stamp_frame = StampAPI.lib_ax;\n } else if (lib == 2) {\n stamp_frame = StampAPI.lib_ax2;\n }\n const vector_tile_layer_interface =\n StampAPI.LibAx.vector_tile_layer_interface(stamp_frame);\n const params = [guid, index, bShow];\n vector_tile_layer_interface.set_sub_layer_visible(params);\n }\n\n /**\n * 获取class数\n * @param guid 图层guid\n * @returns\n */\n getClassNums(guid: any, layerInd = 0) {\n return new Promise((resolve) => {\n const vector_tile_layer_interface =\n StampAPI.LibAx.vector_tile_layer_interface(StampUtil.getLibax());\n const params = [guid];\n vector_tile_layer_interface.OnRespondGet = function (data: any) {\n vector_tile_layer_interface.OnRespondGet = undefined;\n resolve(data);\n };\n vector_tile_layer_interface.get_class_nums(params);\n });\n }\n\n /**\n * 插入class\n * @param guid 图层guid\n * @param index 类索引\n * @param count 类数量\n * @returns\n */\n insertClass(guid: any, index = -1, count = 1) {\n const vector_tile_layer_interface =\n StampAPI.LibAx.vector_tile_layer_interface(StampUtil.getLibax());\n const params = [guid, index, count];\n vector_tile_layer_interface.insert_class(params);\n }\n\n /**\n * 移除class\n * @param guid 图层guid\n * @param index 类索引\n * @param count 类数量\n * @returns\n */\n removeClass(guid: any, index = 0, count = 1) {\n const vector_tile_layer_interface =\n StampAPI.LibAx.vector_tile_layer_interface(StampUtil.getLibax());\n const params = [guid, index, count];\n vector_tile_layer_interface.remove_class(params);\n }\n\n /**\n * 获取矢量瓦片数据类型\n * @param guid 图层guid\n * @returns\n */\n getDataType = function (guid: any) {\n return new Promise((resolve) => {\n const vector_tile_layer_interface =\n StampAPI.LibAx.vector_tile_layer_interface(StampUtil.getLibax());\n\n const params = [guid];\n vector_tile_layer_interface.OnRespondGet = function (data: any) {\n vector_tile_layer_interface.OnRespondGet = undefined;\n resolve(data);\n };\n vector_tile_layer_interface.get_data_type(params);\n });\n };\n\n /**\n * 获取矢量瓦片图层样式文件路径\n * @param guid 图层guid\n * @returns\n */\n async getMapFile(guid: any) {\n return new Promise((resolve) => {\n const vector_tile_layer_interface =\n StampAPI.LibAx.vector_tile_layer_interface(StampUtil.getLibax());\n\n const params = [guid];\n vector_tile_layer_interface.OnRespondGet = function (data: any) {\n vector_tile_layer_interface.OnRespondGet = undefined;\n resolve(data);\n };\n vector_tile_layer_interface.get_map_file(params);\n });\n }\n\n /**\n * 保存矢量瓦片图层样式文件\n * @param guid 图层guid\n * @param file 样式文件路径\n * @returns\n */\n saveMap(guid: any, file = \"\") {\n return new Promise((resolve) => {\n const vector_tile_layer_interface =\n StampAPI.LibAx.vector_tile_layer_interface(StampUtil.getLibax());\n const params = [guid, file, 0]; // 0 代表不使用filedownload服务, 1代表使用\n vector_tile_layer_interface.OnRespondGet = function (data: any) {\n vector_tile_layer_interface.OnRespondGet = undefined;\n resolve(data.upload_file_paths);\n };\n vector_tile_layer_interface.save_map(params);\n });\n }\n\n getClientFile(path: string) {\n return new Promise((resolve) => {\n const vector_tile_layer_interface =\n StampAPI.LibAx.vector_tile_layer_interface(StampUtil.getLibax());\n vector_tile_layer_interface.OnRespondGet = function (data: any) {\n vector_tile_layer_interface.OnRespondGet = undefined;\n resolve(data);\n };\n vector_tile_layer_interface.get_ms_upload_file(path);\n });\n }\n\n /**\n * 刷新样式\n * @param guid 图层guid\n * @returns\n */\n refreshClasses(guid: any) {\n const ms_class_obj_interface = StampAPI.LibAx.ms_class_obj_interface(\n StampUtil.getLibax()\n );\n const params = [guid];\n ms_class_obj_interface.refresh(params);\n }\n\n /**\n * 设置样式\n * @param params 样式参数(注意有固定顺序)\n * @returns\n */\n setStyle(params: any) {\n const ms_class_obj_interface = StampAPI.LibAx.ms_class_obj_interface(\n StampUtil.getLibax()\n );\n ms_class_obj_interface.set_style(params);\n }\n\n /**\n * 批量修改样式\n * @param params 样式参数\n */\n batchSetClassesAndRefresh(params: any) {\n const ms_class_obj_interface = StampAPI.LibAx.ms_class_obj_interface(\n StampUtil.getLibax()\n );\n ms_class_obj_interface.batch_set_classes_and_refresh(params);\n }\n\n /**\n * 获取样式\n * @param guid 图层guid\n * @param index 类索引\n * @returns\n */\n async getStyle(guid: any, index = 0) {\n return new Promise((resolve) => {\n const ms_class_obj_interface = StampAPI.LibAx.ms_class_obj_interface(\n StampUtil.getLibax()\n );\n\n const params = [guid, index];\n ms_class_obj_interface.OnRespondGet = function (data: any) {\n ms_class_obj_interface.OnRespondGet = undefined;\n resolve(data);\n };\n ms_class_obj_interface.get_style(params);\n });\n }\n\n /**\n * 设置样式类表达式\n * @param guid 图层guid\n * @param index 类索引\n * @param expression 表达式\n * @returns\n */\n setExpression(guid: any, index = 0, expression = \"\") {\n const ms_class_obj_interface = StampAPI.LibAx.ms_class_obj_interface(\n StampUtil.getLibax()\n );\n const params = [guid, index, expression];\n ms_class_obj_interface.set_expression(params);\n }\n\n /**\n * 获取样式类表达式\n * @param guid 图层guid\n * @param index 类索引\n * @returns\n */\n async getExpression(guid: any, index = 0) {\n return new Promise((resolve) => {\n const ms_class_obj_interface = StampAPI.LibAx.ms_class_obj_interface(\n StampUtil.getLibax()\n );\n\n const params = [guid, index];\n ms_class_obj_interface.OnRespondGet = function (data: any) {\n ms_class_obj_interface.OnRespondGet = undefined;\n resolve(data);\n };\n ms_class_obj_interface.get_expression(params);\n });\n }\n\n /**\n * 获取样式类标注样式数量\n * @param guid 图层guid\n * @param index 类索引\n * @returns\n */\n async getLabelNums(guid: any, index = 0) {\n return new Promise((resolve) => {\n const ms_class_obj_interface = StampAPI.LibAx.ms_class_obj_interface(\n StampUtil.getLibax()\n );\n\n const params = [guid, index];\n ms_class_obj_interface.OnRespondGet = function (data: any) {\n ms_class_obj_interface.OnRespondGet = undefined;\n resolve(data);\n };\n ms_class_obj_interface.get_label_nums(params);\n });\n }\n\n /**\n * 获取样式类某个标注样式\n * @param guid 图层guid\n * @param index 类索引\n * @param subInd 标注样式索引\n * @returns\n */\n async getLabel(guid: any, index = 0, subInd = 0) {\n return new Promise((resolve) => {\n const ms_class_obj_interface = StampAPI.LibAx.ms_class_obj_interface(\n StampUtil.getLibax()\n );\n\n const params = [guid, index, subInd];\n ms_class_obj_interface.OnRespondGet = function (data: any) {\n ms_class_obj_interface.OnRespondGet = undefined;\n resolve(data);\n };\n ms_class_obj_interface.get_label(params);\n });\n }\n\n /**\n * 新增样式类标注样式\n * @param params 样式参数(注意有固定顺序)\n * @returns\n */\n addLabel(params: any) {\n const ms_class_obj_interface = StampAPI.LibAx.ms_class_obj_interface(\n StampUtil.getLibax()\n );\n ms_class_obj_interface.add_label(params);\n }\n\n //#endregion\n\n //#region 楼块配色\n /**\n * 获取矢量楼块图层样式\n * @param guid 图层guid\n * @returns\n */\n async getTileblockStyle(guid: any) {\n return new Promise((resolve) => {\n const tile_block_style_interface =\n StampAPI.LibAx.tile_block_style_interface(StampUtil.getLibax());\n\n const params = [guid];\n tile_block_style_interface.OnRespondGet = function (data: any) {\n tile_block_style_interface.OnRespondGet = undefined;\n resolve(data);\n };\n tile_block_style_interface.get_tileblock_style(params);\n });\n }\n\n /**\n * 设置矢量楼块图层样式\n * @param params 样式参数(注意有固定顺序)\n * @returns\n */\n setTileblockStyle(params: any) {\n const tile_block_style_interface =\n StampAPI.LibAx.tile_block_style_interface(StampUtil.getLibax());\n tile_block_style_interface.set_tileblock_style(params);\n }\n\n /**\n * 清除矢量楼块图层样式字段值\n * @param guid 图层guid\n * @returns\n */\n clearFieldValueProperty(guid: any) {\n const tile_block_style_interface =\n StampAPI.LibAx.tile_block_style_interface(StampUtil.getLibax());\n\n const params = [guid];\n tile_block_style_interface.clear_field_value_property(params);\n }\n\n /**\n * 保存矢量楼块图层样式\n * @param guid 图层guid\n * @param file 样式文件路径\n * @returns\n */\n saveStyle(guid: any, file = \"\") {\n return new Promise((resolve) => {\n const tile_block_style_interface =\n StampAPI.LibAx.tile_block_style_interface(StampUtil.getLibax());\n tile_block_style_interface.OnRespondGet = function (data: any) {\n resolve(data);\n };\n const params = [guid, file, 0];\n tile_block_style_interface.save_style(params);\n });\n }\n\n /**\n * 刷新矢量楼块图层样式\n * @param guid\n */\n refreshTileBlockStyle(guid: string) {\n const params = [guid];\n StampUtil.getLibax().tile_block_style_interface.refresh_style(params);\n }\n //#endregion\n\n //#region 查询模块\n /**\n * 属性查询\n * 属性查询pick的全集是0xfff\n 去mapserver的话是0x7ff\n #define SE_INTERSECT_NONE 0x0000\n #define SE_INTERSECT_TERRAIN 0x0001\n #define SE_INTERSECT_ELEMENT 0x0002\n #define SE_INTERSECT_BUILDING 0x0004\n #define SE_INTERSECT_BLOCK 0x0008\n #define SE_INTERSECT_MATCH_MODEL 0x0010\n #define SE_INTERSECT_POI 0x0020\n #define SE_INTERSECT_VECTOR 0x0040\n #define SE_INTERSECT_ANNOTATION 0x0080\n #define SE_INTERSECT_BILLBOARD 0x0100\n #define SE_INTERSECT_POINTCLOUD 0x0200\n #define SE_INTERSECT_VECTORTILE 0x0400\n #define SE_INTERSECT_ARCGISMAPSERVER 0x0800\n * \n * @returns\n */\n pickQueryEx(pickDataType = 2047, callbackSuccess: any, callbackCancel: any) {\n if (!StampAPI.isLayerInit) {\n //如果未初始化图层,则需要先初始化图层\n StampUtil.getLayerData();\n }\n StampUtil.clearHighlightObj();\n const query_interface = StampUtil.getLibax().query_interface;\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampUtil.getLibax()\n );\n let position: any = null;\n query_interface.OnPickObject = function (data: any) {\n StampUtil.clearHighlightObj();\n if (!data.guid) {\n if (position) {\n StampUtil.screenToLoc(position.x, position.y).then((res: any) => {\n position = {\n x: res.lon,\n y: res.lat,\n z: res.alt,\n };\n typeof callbackSuccess == \"function\" &&\n callbackSuccess(position, true);\n });\n }\n } else {\n typeof callbackSuccess == \"function\" && callbackSuccess(data);\n }\n };\n query_interface.OnPickObjectEx = async function (data: any) {\n StampUtil.clearHighlightObj();\n if (data.length > 0) {\n for (let i = 0; i < data.length; i++) {\n if (!data[i].is_bim) {\n //矢量瓦片图层查询修改了key的结果,这里前端兼容处理了下\n if (\n data[i].key &&\n data[i].key &&\n data[i].key.Json &&\n data[i].key.Json.Result &&\n data[i].key.Json.Result.Record\n ) {\n let record = data[i].key.Json.Result.Record;\n if (Array.isArray(record)) {\n record = record[0];\n }\n data[i].key = record;\n }\n if (data[i].query_result) {\n StampUtil.setElementVisible(data[i].highlight, false);\n StampUtil.highlightGuidArr.push(data[i].highlight); //方便后续清除高亮\n }\n } else {\n const layer_guid = data[i].parent_layer;\n const keys = data[i].highlight;\n\n const is_flash = true;\n layer_manager_interface.set_bim_lock(layer_guid, true);\n layer_manager_interface.set_bim_highlight(\n layer_guid,\n keys,\n true,\n 0xffff0000,\n is_flash\n );\n layer_manager_interface.set_bim_lock(layer_guid, false);\n StampUtil.highlightGuidArr.push(layer_guid + \"|\" + keys); //方便后续清除高亮\n }\n }\n } else {\n if (position) {\n await StampUtil.screenToLoc(position.x, position.y).then(\n (res: any) => {\n position = {\n x: res.lon,\n y: res.lat,\n z: res.alt,\n };\n }\n );\n typeof callbackSuccess == \"function\" &&\n callbackSuccess(position, true);\n return;\n }\n }\n typeof callbackSuccess == \"function\" && callbackSuccess(data);\n };\n query_interface.pick_object_ex(pickDataType);\n const earth =\n StampUtil.getLibax().player.webRtcController.videoPlayer.videoElement;\n earth.onclick = (e: any) => {\n position = {\n x: e.x,\n y: e.y,\n };\n };\n earth.oncontextmenu = () => {\n earth.oncontextmenu = null;\n query_interface.OnPickObject = undefined;\n query_interface.OnPickObjectEx = undefined;\n query_interface.finish_pick();\n typeof callbackCancel == \"function\" && callbackCancel();\n StampUtil.setMouseCursor();\n };\n }\n\n /**\n * 属性查询\n * @returns\n */\n pickQueryEx1(callbackSuccess: any, callbackCancel: any) {\n if (!StampAPI.isLayerInit) {\n //如果未初始化图层,则需要先初始化图层\n StampUtil.getLayerData();\n }\n StampUtil.clearHighlightObj1();\n const query_interface = StampAPI.lib_ax.query_interface;\n query_interface.OnPickObject = function (data: any) {\n StampUtil.clearHighlightObj1();\n typeof callbackSuccess == \"function\" && callbackSuccess(data);\n };\n query_interface.OnPickObjectEx = function (data: any) {\n StampUtil.clearHighlightObj1();\n typeof callbackSuccess == \"function\" && callbackSuccess(data);\n if (data.length > 0) {\n StampUtil.showHighlightObj1(data[0].highlight);\n }\n };\n query_interface.pick_object_ex(4095);\n const earth =\n StampAPI.lib_ax.player.webRtcController.videoPlayer.videoElement;\n earth.oncontextmenu = () => {\n earth.oncontextmenu = null;\n query_interface.OnPickObject = undefined;\n query_interface.OnPickObjectEx = undefined;\n query_interface.finish_pick();\n typeof callbackCancel == \"function\" && callbackCancel();\n StampUtil.setMouseCursor();\n };\n }\n\n /**\n * 清除高亮\n */\n clearHighlightObj1() {\n try {\n if (StampUtil.highlightGuid) {\n const element_interface = StampAPI.lib_ax.element_interface;\n // element_interface.highlight_element([StampUtil.highlightGuid, 0]); //取消高亮\n element_interface.delete_element(StampUtil.highlightGuid); //清除结果数据\n StampUtil.highlightGuid = \"\";\n }\n } catch (ex) {}\n }\n\n /**\n * 高亮pick对象\n */\n showHighlightObj1(guid: string) {\n StampUtil.highlightGuid = guid;\n if (StampUtil.highlightGuid) {\n const element_interface = StampAPI.lib_ax.element_interface;\n element_interface.highlight_element([StampUtil.highlightGuid, 1]); //高亮\n }\n }\n\n /**\n * 根据线生成缓冲面\n */\n createBuffer(data: any, bufferPolygonParams: any = false) {\n return new Promise((resolve) => {\n const geometry_algorithm_interface =\n StampUtil.getLibax().geometry_algorithm_interface;\n const is_element = false;\n const toptype = data.toptype || 0;\n const num = 36;\n const bufferDir = data.bufferType || 0;\n const v_points = [] as any;\n const shadow = data.shadow || 0;\n const byPolygon = data.byPolygon || 0; //0是线 1是面\n for (let i = 0; i < data.Points.length; ++i) {\n v_points.push({\n x: data.Points[i].x,\n y: data.Points[i].y,\n z: data.Points[i].z,\n });\n }\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = (\n _data: any\n ) => {\n const points = [] as any;\n if (_data != undefined && _data.Polygon != undefined) {\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = undefined;\n for (let i = 0; i < _data.Polygon.length; i++) {\n points.push({\n x: _data.Polygon[i][0],\n y: _data.Polygon[i][1],\n z: _data.Polygon[i][2],\n });\n }\n if (!bufferPolygonParams) {\n //不生成缓冲面\n resolve({ points });\n } else {\n //生成缓冲面\n const params = {\n guid: bufferPolygonParams[\"guid\"] || StampUtil.createGuid(),\n points: points,\n action: \"add\",\n shadow: bufferPolygonParams[\"shadow\"] || shadow,\n linewidth: bufferPolygonParams[\"linewidth\"] || 1,\n linecolor: bufferPolygonParams[\"linecolor\"] || \"#ffff0000\",\n fillcolor: bufferPolygonParams[\"fillcolor\"] || \"#2500ff00\",\n selectable:\n bufferPolygonParams.selectable == undefined\n ? true\n : bufferPolygonParams.selectable,\n editable:\n bufferPolygonParams.editable == undefined\n ? true\n : bufferPolygonParams.editable,\n } as any;\n for (const itemKey in bufferPolygonParams) {\n params[itemKey] = bufferPolygonParams[itemKey];\n }\n StampUtil.createElementPolygonParams(params).then((res) => {\n resolve(res);\n });\n }\n }\n };\n\n if (!byPolygon) {\n geometry_algorithm_interface.create_polygon_buffer_from_polyline(\n is_element,\n v_points,\n data.radius,\n toptype,\n num,\n bufferDir\n );\n } else {\n geometry_algorithm_interface.create_polygon_buffer_from_polygon(\n is_element,\n v_points,\n data.radius,\n toptype,\n num,\n bufferDir\n );\n }\n });\n }\n\n /**\n * 关闭鼠标拾取状态\n */\n closePick() {\n const query_interface = StampUtil.getLibax().query_interface;\n query_interface.OnPickObject = undefined;\n query_interface.OnPickObjectEx = undefined;\n query_interface.finish_pick();\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n shape_creator_interface.OnShapeCreated = undefined;\n shape_creator_interface.clear();\n const earth =\n StampAPI.lib_ax.player.webRtcController.videoPlayer.videoElement;\n earth && (earth.oncontextmenu = null);\n }\n\n /**\n * 绘制点\n * @returns 返回拾取点坐标\n */\n createPoint(callbackCancel: any) {\n const earth =\n StampUtil.getLibax().player.webRtcController.videoPlayer.videoElement;\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n earth.oncontextmenu = () => {\n earth.oncontextmenu = null;\n shape_creator_interface.OnShapeCreated = undefined;\n shape_creator_interface.clear();\n typeof callbackCancel == \"function\" && callbackCancel();\n };\n StampUtil.clearShapeCreator();\n return new Promise((resolve) => {\n shape_creator_interface.OnShapeCreated = function (data: any) {\n shape_creator_interface.OnShapeCreated = undefined;\n shape_creator_interface.clear();\n earth.oncontextmenu = null;\n resolve(data);\n };\n shape_creator_interface.create_point();\n });\n }\n\n /**\n * 绘制圆\n * @returns 返回圆心半径等信息\n */\n createCircle() {\n StampUtil.clearShapeCreator();\n return new Promise((resolve) => {\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n shape_creator_interface.OnShapeCreated = function (data: any) {\n shape_creator_interface.OnShapeCreated = undefined;\n StampUtil.setMouseCursor(0);\n if (data.Radius == 0) {\n StampUtil.clearShapeCreator();\n }\n resolve(data);\n };\n shape_creator_interface.create_circle(0x99009900, 0xffff0000, 1);\n });\n }\n /**\n * 绘制线\n * @returns 返回线点串\n */\n createLine(callbackCancel: any) {\n const earth =\n StampUtil.getLibax().player.webRtcController.videoPlayer.videoElement;\n earth.oncontextmenu = () => {\n earth.oncontextmenu = null;\n typeof callbackCancel == \"function\" && callbackCancel();\n };\n StampUtil.clearShapeCreator();\n return new Promise((resolve) => {\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n shape_creator_interface.OnShapeCreated = function (data: any) {\n earth.oncontextmenu = null;\n StampUtil.setMouseCursor(0);\n resolve(data);\n };\n shape_creator_interface.create_line();\n });\n }\n\n /**\n * 绘制多段线\n * @returns 返回线点串\n */\n createPolyline(\n params = {\n lineWidth: 1,\n lineColor: 0xccff0000,\n },\n callbackCancel: any = null\n ) {\n const earth =\n StampUtil.getLibax().player.webRtcController.videoPlayer.videoElement;\n earth.oncontextmenu = () => {\n earth.oncontextmenu = null;\n typeof callbackCancel == \"function\" && callbackCancel();\n };\n StampUtil.clearShapeCreator();\n return new Promise((resolve) => {\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n shape_creator_interface.OnShapeCreated = function (data: any) {\n earth.oncontextmenu = null;\n StampUtil.setMouseCursor(0);\n resolve(data);\n };\n shape_creator_interface.create_polyline(\n params.lineWidth,\n params.lineColor\n );\n });\n }\n\n /**\n * 绘制多边形\n * @returns 返回多边形点串\n */\n createPolygon(\n params = {\n fillcolor: 0xcc009900, //填充色\n linecolor: 0xffff0000, //线颜色\n shadow: 5, //0正常/1贴地/5贴地贴模型\n }\n ) {\n StampUtil.clearShapeCreator();\n return new Promise((resolve) => {\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n shape_creator_interface.OnShapeCreated = function (data: any) {\n shape_creator_interface.OnShapeCreated = undefined;\n StampUtil.setMouseCursor(0);\n if (!data || !data.Points || data.Points.length < 3) {\n StampUtil.clearShapeCreator(); //清除\n }\n resolve(data);\n };\n shape_creator_interface.create_polygon(\n params.fillcolor,\n params.linecolor,\n params.shadow,\n 1\n );\n });\n }\n\n /**\n * 绘制矩形框\n * @returns 返回多边形点串\n */\n createRectangle(\n params = {\n fillcolor: 0xcc009900, //填充色\n linecolor: 0xffff0000, //线颜色\n linewidth: 1, //线宽\n }\n ) {\n StampUtil.clearShapeCreator();\n return new Promise((resolve) => {\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n shape_creator_interface.OnShapeCreated = function (data: any) {\n shape_creator_interface.OnShapeCreated = undefined;\n StampUtil.setMouseCursor(0);\n if (!data || !data.Points || data.Points.length < 3) {\n StampUtil.clearShapeCreator(); //清除\n }\n resolve(data);\n };\n shape_creator_interface.create_rectangle(\n params.fillcolor || 0xcc009900,\n params.linecolor || 0xffff0000,\n params.linewidth || 1\n );\n });\n }\n\n /**\n * 绘制扇形\n * @returns 返回扇形点串\n */\n createSector(\n params = {\n fov: 60,\n }\n ) {\n StampUtil.clearShapeCreator();\n return new Promise((resolve) => {\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n shape_creator_interface.OnShapeCreated = function (data: any) {\n shape_creator_interface.OnShapeCreated = undefined;\n StampUtil.setMouseCursor(0);\n if (!data || !data.Points || data.Points.length < 2) {\n StampUtil.clearShapeCreator(); //清除\n }\n resolve(data);\n };\n shape_creator_interface.create_sector(params.fov);\n });\n }\n\n /*\n 坐标查询\n */\n coordinateQuery(callback: any, callbackCancel: any) {\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n shape_creator_interface.OnShapeCreated = (data: any) => {\n typeof callback == \"function\" && callback(data);\n };\n shape_creator_interface.create_point();\n const earth =\n StampAPI.lib_ax.player.webRtcController.videoPlayer.videoElement;\n earth.oncontextmenu = () => {\n earth.oncontextmenu = null;\n StampUtil.closePick();\n typeof callbackCancel == \"function\" && callbackCancel();\n };\n }\n\n double_params_pack_data(descriptor: any, message_format_id: any) {\n const raw = new StampAPI.raw_buffer(descriptor, message_format_id);\n for (let i = 2; i < descriptor.length; i++) {\n raw.writeFloat64(descriptor[i]);\n }\n\n return raw.ValidData();\n }\n\n /**\n * 清除高亮\n */\n clearHighlightObj() {\n try {\n if (StampUtil.highlightGuidArr.length > 0) {\n const element_interface = StampUtil.getLibax().element_interface;\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampUtil.getLibax()\n );\n\n for (let i = 0; i < StampUtil.highlightGuidArr.length; i++) {\n const index = StampUtil.highlightGuidArr[i].indexOf(\"|\");\n if (index < 0) {\n element_interface.highlight_element([\n StampUtil.highlightGuidArr[i],\n 0,\n ]); //取消高亮\n // element_interface.delete_element(StampUtil.highlightGuidArr[i]); //清除结果数据\n } else {\n const index = StampUtil.highlightGuidArr[i].indexOf(\"|\");\n const layer_guid = StampUtil.highlightGuidArr[i].substring(\n 0,\n index\n );\n const keys = StampUtil.highlightGuidArr[i].substring(\n index + 1,\n StampUtil.highlightGuidArr[i].length\n );\n layer_manager_interface.set_bim_lock(layer_guid, true);\n layer_manager_interface.set_bim_highlight(\n layer_guid,\n keys,\n false,\n 0xffff0000,\n true\n );\n layer_manager_interface.set_bim_lock(layer_guid, false);\n }\n }\n StampUtil.highlightGuidArr = [];\n }\n } catch (ex) {}\n }\n\n clearHighlightObjEx() {\n try {\n if (StampUtil.highlightGuidArr.length > 0) {\n const element_interface = StampUtil.getLibax().element_interface;\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampUtil.getLibax()\n );\n\n for (let i = 0; i < StampUtil.highlightGuidArr.length; i++) {\n const index = StampUtil.highlightGuidArr[i].indexOf(\"|\");\n if (index < 0) {\n element_interface.highlight_element([\n StampUtil.highlightGuidArr[i],\n 0,\n ]); //取消高亮\n element_interface.delete_element(StampUtil.highlightGuidArr[i]); //清除结果数据\n } else {\n const index = StampUtil.highlightGuidArr[i].indexOf(\"|\");\n const layer_guid = StampUtil.highlightGuidArr[i].substring(\n 0,\n index\n );\n const keys = StampUtil.highlightGuidArr[i].substring(\n index + 1,\n StampUtil.highlightGuidArr[i].length\n );\n layer_manager_interface.set_bim_lock(layer_guid, true);\n layer_manager_interface.set_bim_highlight(\n layer_guid,\n keys,\n false,\n 0xffff0000,\n true\n );\n layer_manager_interface.set_bim_lock(layer_guid, false);\n }\n }\n StampUtil.highlightGuidArr = [];\n }\n } catch (ex) {}\n }\n\n /**\n * 停止高亮\n */\n stopHighlightObj() {\n try {\n if (StampUtil.highlightGuidArr.length > 0) {\n const element_interface = StampUtil.getLibax().element_interface;\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampUtil.getLibax()\n );\n\n for (let i = 0; i < StampUtil.highlightGuidArr.length; i++) {\n const index = StampUtil.highlightGuidArr[i].indexOf(\"|\");\n if (index < 0) {\n element_interface.highlight_element([\n StampUtil.highlightGuidArr[i],\n 0,\n ]); //取消高亮\n StampUtil.setElementVisible(StampUtil.highlightGuidArr[i], false);\n } else {\n const layer_guid = StampUtil.highlightGuidArr[i].substring(\n 0,\n index\n );\n const keys = StampUtil.highlightGuidArr[i].substring(\n index + 1,\n StampUtil.highlightGuidArr[i].length\n );\n layer_manager_interface.set_bim_lock(layer_guid, true);\n layer_manager_interface.set_bim_highlight(\n layer_guid,\n keys,\n false,\n 0xffff0000,\n true\n );\n layer_manager_interface.set_bim_lock(layer_guid, false);\n }\n }\n }\n } catch (ex) {}\n }\n\n /**\n * 高亮pick对象\n */\n showHighlightObj(guid: string) {\n if (StampUtil.highlightGuidArr.indexOf(guid) == -1) {\n StampUtil.highlightGuidArr.push(guid);\n }\n\n try {\n if (StampUtil.highlightGuidArr.length > 0) {\n const element_interface = StampUtil.getLibax().element_interface;\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampUtil.getLibax()\n );\n for (let i = 0; i < StampUtil.highlightGuidArr.length; i++) {\n if (StampUtil.highlightGuidArr[i] == guid) {\n const index = StampUtil.highlightGuidArr[i].indexOf(\"|\");\n\n if (index < 0) {\n StampUtil.setElementVisible(StampUtil.highlightGuidArr[i], true);\n element_interface.highlight_element([\n StampUtil.highlightGuidArr[i],\n 1,\n ]); //高亮\n } else {\n const layer_guid = StampUtil.highlightGuidArr[i].substring(\n 0,\n index\n );\n const keys = StampUtil.highlightGuidArr[i].substring(\n index + 1,\n StampUtil.highlightGuidArr[i].length\n );\n layer_manager_interface.set_bim_lock(layer_guid, true);\n layer_manager_interface.set_bim_highlight(\n layer_guid,\n keys,\n true,\n 0xffff0000,\n true\n );\n layer_manager_interface.set_bim_lock(layer_guid, false);\n }\n }\n }\n }\n } catch (ex) {}\n }\n\n /**\n * 高亮pick对象\n */\n showHighlightObj2(guid: string) {\n const element_interface = StampUtil.getLibax().element_interface;\n element_interface.highlight_element([guid, 1]); //高亮\n }\n\n // /**\n // * 停止高亮\n // */\n // stopHighlightObj2(guid: string) {\n // element_interface.highlight_element([guid, 0]); //取消高亮\n // }\n\n /**\n * (以当前姿态和距离)飞行定位对象\n * @param guid\n */\n flytoObj(guid: string) {\n StampUtil.getLibax().element_interface.FlyToByGuidCommand(guid);\n }\n /**\n * 高亮pick对象\n */\n showHighlightBySearch(\n url: string,\n layerid: string,\n seid: string,\n sename: string\n ) {\n return new Promise((resolve) => {\n const query_interface = StampUtil.getLibax().query_interface;\n query_interface.OnPickObjectEx = function (data: any) {\n query_interface.OnPickObjectEx = undefined;\n const len = data.length;\n if (len > 0) {\n StampUtil.showHighlightObj(data[0].highlight);\n }\n resolve(data);\n };\n query_interface.search_by_filter(layerid, sename, seid, url);\n });\n }\n /*\n * 批量高亮\n */\n showHighlightBySearchBat(\n guid: string,\n key: string,\n color: number,\n isFlash = true,\n isClearLast = true\n ) {\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampUtil.getLibax()\n );\n const highlightColor = color || parseInt(\"0xFFFF0000\");\n\n layer_manager_interface.show_highlight_by_search(\n guid,\n key,\n highlightColor,\n isFlash,\n isClearLast\n );\n }\n\n /**\n * 停止批量高亮\n * @param guid 图层guid\n */\n clearHighlight = function (guid: string) {\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampUtil.getLibax()\n );\n layer_manager_interface.clear_highlight(guid);\n };\n\n //#endregion\n\n //#region 图层相关接口\n /**\n * @params 1取lib_ax 0取lib_ax1\n * 获取图层列表\n */\n getLayerData(lib = 1) {\n return new Promise((resolve) => {\n let stamp_frame;\n if (lib == 1) {\n stamp_frame = StampUtil.getLibax().stamp_frame;\n } else if (lib == 0) {\n stamp_frame = StampAPI.lib_ax1.stamp_frame;\n } else if (lib == 2) {\n stamp_frame = StampAPI.lib_ax2.stamp_frame;\n }\n stamp_frame.init_layer_control = async function (jsonData: any) {\n if (jsonData.sub_layers) {\n jsonData.sub_layers = StampUtil.filterLayerData(jsonData.sub_layers);\n }\n //jsonData为图层树JSON对象\n const returnType = (await StampUtil.setLayerSearchReturnType(\n jsonData.sub_layers\n )) as any;\n if (returnType && returnType.length > 0) {\n const query_interface = StampUtil.getLibax().query_interface;\n query_interface.OnSetSuccess = function (res: any) {\n query_interface.OnSetSuccess = undefined;\n };\n query_interface.SetParamReturnTypeBatch(returnType);\n }\n StampUtil.layerData = jsonData.sub_layers;\n StampAPI.isLayerInit = true;\n resolve(jsonData);\n };\n stamp_frame.GetLayersCommand();\n });\n }\n filterLayerData(layerArr: any) {\n if (layerArr.length <= 0) {\n return [];\n }\n const resLayerArr: any = [];\n for (let i = 0; i < layerArr.length; i++) {\n if (\n layerArr[i] &&\n (layerArr[i].rtti == STAMP_RTTI.SE_RTTI_PROJECT_LAYER ||\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_FOLDER_LAYER)\n ) {\n //工程或文件夹\n const tmpArr = this.filterLayerData(layerArr[i].sub_layers);\n layerArr[i].sub_layers = tmpArr;\n resLayerArr.push(layerArr[i]);\n } else if (layerArr[i].is_show_layer != \"false\") {\n //图层,显示在界面上\n resLayerArr.push(layerArr[i]);\n }\n }\n return resLayerArr;\n }\n updateLayerData(layerArr: any, layer: any) {\n for (let i = 0; i < layerArr.length; i++) {\n if (layerArr[i].sub_layers && layerArr[i].sub_layers.length > 0) {\n this.updateLayerData(layerArr[i].sub_layers, layer);\n } else {\n if (layerArr[i].guid == layer.guid) {\n layerArr[i] = layer;\n }\n }\n }\n }\n /**\n * 设置查询返回数据类型:4为json\n * @param layerArr 图层数组\n */\n async setLayerSearchReturnType(layerArr: any) {\n let returnType: Array<any> = [];\n for (let i = 0; i < layerArr.length; i++) {\n if (layerArr[i].sub_layers && layerArr[i].sub_layers.length > 0) {\n const tmpReturnType = (await StampUtil.setLayerSearchReturnType(\n layerArr[i].sub_layers\n )) as any;\n if (tmpReturnType && tmpReturnType.length > 0) {\n returnType = returnType.concat(tmpReturnType);\n }\n } else {\n if (\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_MODEL_LOD_LAYER ||\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_BIM_LAYER ||\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_BUILDING_LAYER ||\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_MATCH_MODEL_LAYER ||\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_VECTOR_LAYER ||\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_UE_MODEL_LAYER ||\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_PIPELINE_LAYER ||\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_OBLIQUE_PHOTO_LAYER\n ) {\n if (layerArr[i].rtti == STAMP_RTTI.SE_RTTI_VECTOR_LAYER) {\n const layerType = (await StampUtil.getDataType(\n layerArr[i].guid\n )) as any;\n if (layerType.data_type == \"Point\") {\n returnType.push(layerArr[i].guid, 1);\n continue;\n }\n }\n returnType.push(layerArr[i].guid, 4);\n }\n }\n }\n return returnType;\n }\n\n /**\n * 获取DEM图层id集合\n * @param layerArr\n * @returns\n */\n getDemLayerids(layerArr: any) {\n let demArr = [] as any;\n for (let i = 0; i < layerArr.length; i++) {\n if (layerArr[i].sub_layers && layerArr[i].sub_layers.length > 0) {\n const demids = StampUtil.getDemLayerids(layerArr[i].sub_layers) as any;\n demArr = demArr.concat(demids);\n } else {\n if (\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_DEM_LAYER &&\n layerArr[i].visible\n ) {\n demArr.push(layerArr[i].guid);\n }\n }\n }\n return demArr;\n }\n\n /**\n * 获取DEM图层对象集合\n * @param layerArr\n * @returns\n */\n getDemLayers(layerArr: any) {\n let demArr = [] as any;\n for (let i = 0; i < layerArr.length; i++) {\n if (layerArr[i].sub_layers && layerArr[i].sub_layers.length > 0) {\n const demArrTmp = StampUtil.getDemLayers(layerArr[i].sub_layers) as any;\n demArr = demArr.concat(demArrTmp);\n } else {\n if (\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_DEM_LAYER &&\n layerArr[i].visible\n ) {\n demArr.push(layerArr[i]);\n }\n }\n }\n return demArr;\n }\n\n getVectorLayers(layerArr: any) {\n let demArr = [] as any;\n for (let i = 0; i < layerArr.length; i++) {\n if (\n layerArr[i].rtti &&\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_VECTOR_TILE_LAYER\n ) {\n let flag = false;\n if (layerArr[i].sub_layers && layerArr[i].sub_layers.length > 0) {\n for (let j = 0; j < layerArr[i].sub_layers.length; j++) {\n if (layerArr[i].sub_layers[j].visible) {\n flag = true;\n break;\n }\n }\n } else {\n flag = layerArr[i].visible;\n }\n if (flag) {\n demArr.push(layerArr[i]);\n }\n } else if (layerArr[i].sub_layers && layerArr[i].sub_layers.length > 0) {\n const demArrTmp = StampUtil.getVectorLayers(\n layerArr[i].sub_layers\n ) as any;\n demArr = demArr.concat(demArrTmp);\n }\n }\n return demArr;\n }\n\n /**\n * 图层数据的显示隐藏\n * @param {*} guid 图层的guid,上面获取图层列表的接口里面取到的guid\n * @param {*} bShow true/false 显示/隐藏\n */\n setLayerVisible(guid: string, bShow: boolean, lib = 1) {\n let stamp_frame;\n if (lib == 1) {\n stamp_frame = StampUtil.getLibax().stamp_frame;\n } else if (lib == 0) {\n stamp_frame = StampAPI.lib_ax1.stamp_frame;\n } else if (lib == 2) {\n stamp_frame = StampAPI.lib_ax2.stamp_frame;\n }\n stamp_frame?.ChangeVisibilityByGuidCommand(guid, bShow);\n }\n\n /**\n * 绘制图像的显示和隐藏\n * @param node\n * @param isVisible\n */\n setElementVisible(guid: string, isVisible: boolean) {\n for (let i = 0; i < this.webUIItems.length; i++) {\n if (\n this.webUIItems[i].guid == guid &&\n this.webUIItems[i].type == STAMP_RTTI.SE_RTTI_ELEMENT_ICON_WEBUI\n ) {\n //webui隐藏有问题,先用删除重建替代\n if (isVisible) {\n this.webUIItems[i].isdelete &&\n this.createIconWebUI(this.webUIItems[i]);\n this.webUIItems[i].isdelete = false;\n } else {\n this.removeWebUI(this.webUIItems[i].parentGuid);\n this.webUIItems[i].isdelete = true;\n }\n return;\n }\n }\n const element_interface = StampUtil.getLibax().element_interface;\n element_interface.visible_element([guid, Number(isVisible)]);\n }\n /**\n * 图层数据的定位\n * @param {*} guid 图层的guid,上面获取图层列表的接口里面取到的guid\n */\n flytoLayer(guid: string, lib = 1) {\n let stamp_frame;\n if (lib == 1) {\n stamp_frame = StampUtil.getLibax().stamp_frame;\n } else if (lib == 0) {\n stamp_frame = StampAPI.lib_ax1.stamp_frame;\n } else if (lib == 2) {\n stamp_frame = StampAPI.lib_ax2.stamp_frame;\n }\n const layer = this.getLayerByGuid(this.layerData, guid);\n if (layer) {\n const viewpointStr = layer.view_point;\n if (viewpointStr) {\n const longitude = viewpointStr.split(\",\")[0];\n const latitude = viewpointStr.split(\",\")[1];\n const altitude = viewpointStr.split(\",\")[2];\n const heading = viewpointStr.split(\",\")[3];\n const tilt = viewpointStr.split(\",\")[4];\n const roll = viewpointStr.split(\",\")[5];\n this.flytoLookat(\n longitude,\n latitude,\n altitude,\n heading,\n tilt,\n roll,\n 0,\n 3\n );\n return;\n }\n }\n stamp_frame.FlyToByLayerGuidCommand(guid);\n }\n\n /**\n * 根据guid获取图层对象\n * @param layerArr\n * @param guid\n * @returns\n */\n getLayerByGuid(layerArr: any, guid: string) {\n let retValue = null as any;\n for (let i = 0; i < layerArr.length; i++) {\n if (layerArr[i].guid == guid) {\n return layerArr[i];\n }\n if (\n layerArr[i].sub_layers &&\n layerArr[i].sub_layers.length > 0 &&\n layerArr[i].rtti !== 114\n ) {\n retValue = StampUtil.getLayerByGuid(layerArr[i].sub_layers, guid);\n if (retValue) {\n return retValue;\n }\n }\n }\n return retValue;\n }\n\n /**\n * 创建临时图层\n * @param options\n */\n createTempLayer(options: any) {\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampAPI.lib_ax\n );\n const stamp_frame = StampAPI.LibAx.stamp_frame(StampAPI.lib_ax);\n layer_manager_interface.OnCreateFinished = function (data: any) {\n stamp_frame.ChangeVisibilityByGuidCommand(data.guid, 1);\n };\n layer_manager_interface.create_layer(options);\n }\n\n getCheckLayers(layerArr: any) {\n let returnArr: Array<any> = [];\n for (let i = 0; i < layerArr.length; i++) {\n if (\n layerArr[i].sub_layers &&\n layerArr[i].sub_layers.length > 0 &&\n layerArr[i].rtti !== 114\n ) {\n const tmpLayerArr = StampUtil.getCheckLayers(layerArr[i].sub_layers);\n if (tmpLayerArr && tmpLayerArr.length > 0) {\n returnArr = returnArr.concat(tmpLayerArr);\n }\n } else {\n if (layerArr[i].visible) {\n returnArr.push(layerArr[i].guid);\n }\n }\n }\n return returnArr;\n }\n\n setLayerVisibleStatus(layerArr: Array<any>, checkedLayers: Array<string>) {\n for (let i = 0; i < layerArr.length; i++) {\n if (layerArr[i].sub_layers && layerArr[i].sub_layers.length > 0) {\n StampUtil.setLayerVisibleStatus(layerArr[i].sub_layers, checkedLayers);\n } else {\n StampUtil.setLayerVisible(\n layerArr[i].src_guid,\n checkedLayers.indexOf(layerArr[i].src_guid) != -1\n );\n }\n }\n }\n\n createVectorTileLayer(params: any) {\n return new Promise((resolve) => {\n const element_interface = StampUtil.getLibax().element_interface;\n const layer_manager_interface =\n StampUtil.getLibax().layer_manager_interface;\n layer_manager_interface.OnCreateFinished = (data: any) => {\n element_interface.visible_element([data.guid, 1]);\n resolve(data.guid);\n };\n const obj = {} as any;\n //common\n obj.guid = params.guid;\n obj.name = params.name;\n obj.rtti = STAMP_RTTI.SE_RTTI_VECTOR_TILE_LAYER;\n obj.north = params.north;\n obj.south = params.south;\n obj.east = params.east;\n obj.west = params.west;\n obj.min = params.min;\n obj.max = params.max;\n obj.httpLink = params.httpLink;\n\n obj.gisLink = params.gisLink;\n obj.minLevel = params.minLevel; ////界面配置\n obj.maxLevel = params.maxLevel; ////界面配置\n obj.priority = 1; //界面配置\n obj.outFormat = \"PBF\";\n obj.mapfile = params.mapfile;\n obj.geometryType = params.type; //\"Line\";//\"Polygon\";\n obj.ShadowType = params.ShadowType; //\"Terrain\"////界面配置\n layer_manager_interface.create_layer(obj);\n });\n }\n\n createModelLodLayer(params: any) {\n return new Promise((resolve) => {\n const element_interface = StampUtil.getLibax().element_interface;\n const layer_manager_interface =\n StampUtil.getLibax().layer_manager_interface;\n layer_manager_interface.OnCreateFinished = (data: any) => {\n // layer_manager_interface.refresh_layer(data.guid);\n element_interface.visible_element([data.guid, 1]);\n resolve(data.guid);\n };\n const obj = {} as any;\n //common\n obj.guid = params.guid;\n obj.name = params.name;\n obj.rtti = STAMP_RTTI.SE_RTTI_MODEL_LOD_LAYER;\n obj.north = params.north;\n obj.south = params.south;\n obj.east = params.east;\n obj.west = params.west;\n obj.min = params.min;\n obj.max = params.max;\n obj.httpLink = params.httpLink;\n\n //model lod\n obj.gisLink = params.gisLink;\n obj.isUnderground = params.isUnderground;\n obj.minHeight = params.minHeight; //the same as Height in data.data,when <Height>1</Height>, minHeight = 0; when <Height>1,21</Height>, minHeight = 1\n obj.maxHeight = params.maxHeight; //the same as Height in data.data\n obj.minLevel = params.minLevel;\n obj.maxLevel = params.maxLevel;\n obj.dataType = params.dataType;\n obj.origin = params.origin;\n obj.altitudeOffset = params.altitudeOffset;\n layer_manager_interface.create_layer(obj);\n });\n }\n\n updateLayer(guid: any) {\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampUtil.getLibax()\n );\n layer_manager_interface.refresh_layer(guid);\n }\n\n /**\n * 【倾斜图层】设置图层是否是地面模型\n * @param guid 【倾斜图层】GUID\n * @param isGround 0:非地面模型 1:地面模型\n */\n setLayerIsGround(guid: any, isGround: any) {\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampUtil.getLibax()\n );\n layer_manager_interface.set_play_is_ground([guid, isGround]);\n }\n\n /**\n * 获取图层优先级\n * @param guid 图层guid\n * @returns\n */\n getLayerPriority(guid: any) {\n return new Promise((resolve) => {\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampUtil.getLibax()\n );\n layer_manager_interface.OnGetLayerPriority = function (data: any) {\n resolve(data);\n };\n layer_manager_interface.get_layer_priority(guid);\n });\n }\n\n /**\n * 设置图层优先级\n * @param guid 图层guid\n * @param priority 优先级:0/1/2/3/4/5/6/7/8/9/10等等\n */\n setLayerPriority(guid: any, priority: any) {\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampUtil.getLibax()\n );\n const params = [guid, priority];\n layer_manager_interface.set_layer_priority(params);\n }\n //#endregion\n\n //#region 量算分析接口\n /**\n * 转换映射:量算结果中返回的measureType对应中文名\n * @param {*} type 量算类型枚举值\n */\n commandTypeToName(type: number) {\n switch (type) {\n case 0:\n return \"水平距离\";\n case 1:\n return \"垂直距离\";\n case 2:\n return \"地表距离\";\n case 3:\n return \"空间距离\";\n case 4:\n return \"水平面积\";\n case 5:\n return \"空间面积\";\n case 6:\n return \"垂直面积\";\n case 7:\n return \"平面角度\";\n default:\n return \"测量结果\";\n }\n }\n\n /**\n * 转换映射:量算结果中返回的单位unit对应中文名\n * @param {*} unit 单位unit枚举值\n */\n measureUnitTypeToName(unit: number) {\n switch (unit) {\n case 0:\n return \"米\";\n case 1:\n return \"千米\";\n case 2:\n return \"平方米\";\n case 3:\n return \"平方千米\";\n case 4:\n return \"分钟\";\n case 5:\n return \"°\";\n default:\n return \"\";\n }\n }\n\n /**\n * 量算:水平距离\n */\n measureHorizontalDist(fontSize = 16, fontColor = 0xffffffff) {\n // this.clearMeasure();\n return new Promise((resolve) => {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Measure\n ); //获取量算分析的操作对象\n const measure_interface = StampAPI.LibAx.measure_interface(\n StampUtil.getLibax()\n );\n const fontInfo = [fontSize, fontSize, fontColor]; //文字字体大小,预留参数,暂未用到\n measure_interface.OnMeasureFinished = (data: any) => {\n data.measureType = this.commandTypeToName(data.measureType);\n data.unit = this.measureUnitTypeToName(data.unit);\n resolve(data);\n };\n measure_interface.measure(\n handler.CommandType.MeasureCommand_HorizontalDist,\n fontInfo\n ); //开启水平距离的量算操作\n });\n }\n\n /**\n * 量算:垂直距离\n */\n measureVerticalDist(fontSize = 16, fontColor = 0xffffffff) {\n this.clearMeasure();\n return new Promise((resolve) => {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Measure\n ); //获取量算分析的操作对象\n const measure_interface = StampAPI.LibAx.measure_interface(\n StampUtil.getLibax()\n );\n const fontInfo = [fontSize, fontSize, fontColor]; //文字字体大小,预留参数,暂未用到\n measure_interface.OnMeasureFinished = (data: any) => {\n //量算分析返回结果的回调事件\n data.measureType = this.commandTypeToName(data.measureType);\n data.unit = this.measureUnitTypeToName(data.unit);\n resolve(data);\n };\n measure_interface.measure(\n handler.CommandType.MeasureCommand_VerticalDist,\n fontInfo\n ); //开启垂直距离的量算操作\n });\n }\n\n /**\n * 量算:三角测量\n */\n measureSpatialRightAngle(fontSize = 16, fontColor = 0xffffffff) {\n this.clearMeasure();\n return new Promise((resolve) => {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Measure\n ); //获取量算分析的操作对象\n const measure_interface = StampAPI.LibAx.measure_interface(\n StampUtil.getLibax()\n );\n const fontInfo = [fontSize, fontSize, fontColor]; //文字字体大小,预留参数,暂未用到\n measure_interface.OnMeasureFinished = (data: any) => {\n //量算分析返回结果的回调事件\n data.measureType = this.commandTypeToName(data.measureType);\n data.unit = this.measureUnitTypeToName(data.unit);\n resolve(data);\n };\n measure_interface.measure(\n handler.CommandType.MeasureCommand_SpatialRightAngle,\n fontInfo\n ); //开启垂直距离的量算操作\n });\n }\n\n /**\n * 量算:地表距离\n */\n measureSurfaceDist(fontSize = 16, fontColor = 0xffffffff) {\n this.clearMeasure();\n return new Promise((resolve) => {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Measure\n ); //获取量算分析的操作对象\n const measure_interface = StampAPI.LibAx.measure_interface(\n StampUtil.getLibax()\n );\n const fontInfo = [fontSize, fontSize, fontColor]; //文字字体大小,预留参数,暂未用到\n measure_interface.OnMeasureFinished = (data: any) => {\n //量算分析返回结果的回调事件\n data.measureType = this.commandTypeToName(data.measureType);\n data.unit = this.measureUnitTypeToName(data.unit);\n resolve(data);\n };\n measure_interface.measure(\n handler.CommandType.MeasureCommand_SurfaceDist,\n fontInfo\n );\n });\n }\n\n /**\n * 量算:空间距离\n */\n measureSpaceDist(fontSize = 16, fontColor = 0xffffffff) {\n const self = this;\n this.clearMeasure();\n return new Promise((resolve) => {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Measure\n ); //获取量算分析的操作对象\n const measure_interface = StampAPI.LibAx.measure_interface(\n StampUtil.getLibax()\n );\n const fontInfo = [fontSize, fontSize, fontColor]; //文字字体大小,预留参数,暂未用到\n measure_interface.OnMeasureFinished = function (data: any) {\n //量算分析返回结果的回调事件\n data.measureType = self.commandTypeToName(data.measureType);\n data.unit = self.measureUnitTypeToName(data.unit);\n resolve(data);\n }.bind(this);\n measure_interface.measure(\n handler.CommandType.MeasureCommand_SpaceDist,\n fontInfo\n );\n });\n }\n\n /**\n * 量算:水平面积\n */\n measureHorizontalProjectionArea(fontSize = 16, fontColor = 0xffffffff) {\n const self = this;\n this.clearMeasure();\n return new Promise((resolve) => {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Measure\n ); //获取量算分析的操作对象\n const measure_interface = StampAPI.LibAx.measure_interface(\n StampUtil.getLibax()\n );\n const fontInfo = [fontSize, fontSize, fontColor]; //文字字体大小,预留参数,暂未用到\n measure_interface.OnMeasureFinished = function (data: any) {\n //量算分析返回结果的回调事件\n data.measureType = self.commandTypeToName(data.measureType);\n data.unit = self.measureUnitTypeToName(data.unit);\n resolve(data);\n }.bind(this);\n measure_interface.measure(\n handler.CommandType.MeasureCommand_HorizontalProjectionArea,\n fontInfo\n );\n });\n }\n\n /**\n * 量算:空间面积\n */\n measureSpaceArea(fontSize = 16, fontColor = 0xffffffff) {\n const self = this;\n this.clearMeasure();\n return new Promise((resolve) => {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Measure\n ); //获取量算分析的操作对象\n const measure_interface = StampAPI.LibAx.measure_interface(\n StampUtil.getLibax()\n );\n const fontInfo = [fontSize, fontSize, fontColor]; //文字字体大小,预留参数,暂未用到\n measure_interface.OnMeasureFinished = function (data: any) {\n //量算分析返回结果的回调事件\n data.measureType = self.commandTypeToName(data.measureType);\n data.unit = self.measureUnitTypeToName(data.unit);\n resolve(data);\n }.bind(this);\n measure_interface.measure(\n handler.CommandType.MeasureCommand_SpaceArea,\n fontInfo\n );\n });\n }\n\n /**\n * 量算:立面面积(垂直面积)\n */\n measureVerticalArea(fontSize = 16, fontColor = 0xffffffff) {\n const self = this;\n this.clearMeasure();\n return new Promise((resolve) => {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Measure\n ); //获取量算分析的操作对象\n const measure_interface = StampAPI.LibAx.measure_interface(\n StampUtil.getLibax()\n );\n const fontInfo = [fontSize, fontSize, fontColor]; //文字字体大小,预留参数,暂未用到\n measure_interface.OnMeasureFinished = function (data: any) {\n //量算分析返回结果的回调事件\n data.measureType = self.commandTypeToName(data.measureType);\n data.unit = self.measureUnitTypeToName(data.unit);\n resolve(data);\n }.bind(this);\n measure_interface.measure(\n handler.CommandType.MeasureCommand_VerticalArea,\n fontInfo\n );\n });\n }\n\n /**\n * 量算:地表面积----比较特殊,不知道为啥放在分析接口里面,清除也要调分析接口的清除\n */\n analysisSurfaceArea(fontSize = 16, fontColor = 0xffffffff) {\n this.clearMeasure();\n return new Promise((resolve) => {\n const analysis_interface = StampAPI.LibAx.analysis_interface(\n StampUtil.getLibax()\n );\n const fontInfo = [fontSize, fontSize, fontColor]; //文字字体大小,预留参数,暂未用到\n analysis_interface.OnPixelStreamingSurfaceArea = function (data: any) {\n //量算分析返回结果的回调事件\n const result = {\n measureType: \"地表面积\",\n result: data.terrainSurfaceArea,\n unit: \"平方米\",\n };\n resolve(result);\n }.bind(this);\n analysis_interface.analysisSurfaceArea(fontInfo);\n });\n }\n\n /**\n * 量算:平面角度\n */\n measurePlaneAngle(fontSize = 16, fontColor = 0xffffffff) {\n const self = this;\n this.clearMeasure();\n return new Promise((resolve) => {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Measure\n ); //获取量算分析的操作对象\n const measure_interface = StampAPI.LibAx.measure_interface(\n StampUtil.getLibax()\n );\n const fontInfo = [fontSize, fontSize, fontColor]; //文字字体大小,预留参数,暂未用到\n measure_interface.OnMeasureFinished = function (data: any) {\n //量算分析返回结果的回调事件\n data.measureType = self.commandTypeToName(data.measureType);\n data.unit = self.measureUnitTypeToName(data.unit);\n resolve(data);\n }.bind(this);\n measure_interface.measure(\n handler.CommandType.MeasureCommand_PlaneAngle,\n fontInfo\n );\n });\n }\n\n /**\n * 清除所有量算辅助线信息\n */\n clearMeasure() {\n const measure_interface = StampUtil.getLibax().measure_interface;\n measure_interface.clear();\n StampUtil.clearAnalysisResult();\n }\n /**\n * 只清除量算\n */\n clearOnlyMeasure() {\n const measure_interface = StampUtil.getLibax().measure_interface;\n measure_interface.clear();\n }\n\n //#endregion\n\n //#region 空间分析\n /**\n * 全球等高线\n * @param stride 等高线间隔(米)\n * @param lineColor 线颜色\n */\n setGlobalContour(stride = 10, lineColor = 0xffffff00) {\n const environment_interface = StampUtil.getLibax().environment_interface;\n environment_interface.set_global_contour_param(stride, lineColor);\n environment_interface.set_global_terrain_project_type(0); //0代表等高线\n environment_interface.set_global_terrain_project(true);\n }\n\n /**\n * 全球坡度图\n */\n setGlobalSlope(\n gradeColor: Array<any> = [\n { grade: 0.0, color: 0x00ff00 },\n { grade: 41.0, color: 0xffff00 },\n { grade: 82.0, color: 0xff0000 },\n ]\n ) {\n const environment_interface = StampUtil.getLibax().environment_interface;\n environment_interface.set_global_slope_param(90, gradeColor);\n environment_interface.set_global_terrain_project_type(1); //1代表坡度图\n environment_interface.set_global_terrain_project(true);\n }\n\n /**\n * 全球汇水分析\n */\n setGlobalSlopeDirection(arrowColor = 0xccffff00) {\n const environment_interface = StampUtil.getLibax().environment_interface;\n environment_interface.set_global_slope_direction_param(arrowColor);\n environment_interface.set_global_terrain_project_type(2); //2代表汇水分析\n environment_interface.set_global_terrain_project(true);\n }\n\n /**\n * 关闭全球分析效果\n */\n cancelGlobalEffect() {\n const environment_interface = StampUtil.getLibax().environment_interface;\n environment_interface.set_global_terrain_project(false);\n }\n /**\n * 地形路径\n */\n bestPath(\n params: any = {\n interval: 2,\n climbLimited: 20,\n descentLimited: 20,\n points: [],\n linecolor: \"#ffff0000\",\n layerids: \"\",\n }\n ) {\n return new Promise(async (resolve) => {\n //标注起点和终点\n const startIcon = (await StampUtil.createIconParams({\n Text: \"起点\",\n points: [params.points[0]],\n })) as any;\n const endIcon = (await StampUtil.createIconParams({\n Text: \"终点\",\n points: [params.points[1]],\n })) as any;\n StampUtil.bestPathIconList.push(startIcon);\n StampUtil.bestPathIconList.push(endIcon);\n const analysis_interface = StampUtil.getLibax().analysis_interface;\n analysis_interface.OnBestPath = async function (data: any) {\n if (data && data.bestline) {\n //目前缺少点串\n StampUtil.createElementLineParams({\n action: \"modify\", //修改\n guid: data.bestline,\n linewidth: 1,\n linecolor: params.linecolor, //修改颜色\n });\n }\n resolve(data);\n };\n //最安全下山路线\n //最优路径接口\n analysis_interface.best_path(\n params.climbLimited,\n params.descentLimited,\n params.interval,\n 1,\n params.points,\n params.layerids\n );\n });\n }\n\n //#region 等高线\n /**\n * 等高线分析\n */\n analysisContourPolygon(params: any) {\n return new Promise((resolve) => {\n const analysis_interface = StampUtil.getLibax().analysis_interface;\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n const element_interface = StampUtil.getLibax().element_interface;\n analysis_interface.OnCreateContourPolygon = function (data: any) {\n shape_creator_interface.clear();\n const userdataObj = {\n type: STAMP_RTTI.SE_RTTI_ELEMENT_CONTOUR_POLYGON,\n name: \"contour\",\n guid: data.guid,\n Stride: params.Stride,\n Color: params.Color,\n lableDes: params.lableDes,\n InfoColor: params.InfoColor,\n fontWidth: 12,\n fontHeight: 12,\n lableBaseHeight: 1,\n };\n element_interface.modify_element(userdataObj);\n StampUtil.contourLineElementGuid = data.guid;\n resolve(data);\n };\n analysis_interface.OnContourProcessFinish = function (data: any) {\n // 返回等高线信息\n // StampUtil.createContourIcon(\n // params.lableDes,\n // params.lablesColor,\n // data.Contour\n // );\n };\n const points = [] as any; // 范围,不赋值会自动调用多边形构建工具\n analysis_interface.createContourPolygon(points);\n });\n }\n\n /**\n * 创建等高线标注对象\n * @param lableDes\n * @param lablesColor\n * @param contour\n * @returns\n */\n async createContourIcon(lableDes: any, lablesColor: any, contour: any) {\n StampUtil.clearContourPointIcon(); //删除之前标会对象contourPointIconsGuid\n if (contour.length == 0) {\n return;\n }\n\n const heightArr = [];\n for (let i = 0; i < contour.length; i++) {\n const linePoints = contour[i];\n for (let j = 0; j < linePoints.length; j++) {\n //获取所有的高度\n const v_pos = linePoints[j];\n const v_height = v_pos.Z.toFixed(2);\n if (heightArr.indexOf(v_height) == -1) {\n heightArr.push(v_height);\n }\n }\n }\n //排序\n heightArr.sort(function (a, b) {\n if (parseFloat(a) > parseFloat(b)) {\n return -1;\n } else if (parseFloat(a) < parseFloat(b)) {\n return 1;\n } else {\n return 0;\n }\n });\n\n for (let i = 0; i < contour.length; i++) {\n const linePoints = contour[i];\n //获取所有的高度\n const v_pos = linePoints[0];\n const v_height = v_pos.Z.toFixed(2);\n\n for (let j = 0; j < heightArr.length; j = j + lableDes) {\n if (v_height == heightArr[j]) {\n //传入标注颜色,标注线经纬度\n const params = {\n points: [\n {\n x: v_pos.X,\n y: v_pos.Y,\n z: v_pos.Z,\n },\n ],\n Text: Number(v_height).toString(),\n TextColor: parseInt(lablesColor),\n action: \"add\",\n };\n const obj = (await StampUtil.createIconParams(params)) as any;\n StampUtil.contourPointIconsGuid.push(obj.guid); //保存创建的标绘guid方便后续删除\n break;\n }\n }\n }\n }\n\n /**\n * 清除等高线标注\n */\n clearContourPointIcon() {\n for (let i = 0; i < StampUtil.contourPointIconsGuid.length; i++) {\n StampUtil.deleteAnalysisRes(StampUtil.contourPointIconsGuid[i].guid);\n }\n StampUtil.contourPointIconsGuid = [];\n }\n\n /**\n * 清除等高线和标注结果\n */\n clearContourResult() {\n StampUtil.clearContourPointIcon();\n if (StampUtil.contourLineElementGuid) {\n StampUtil.deleteAnalysisRes(StampUtil.contourLineElementGuid);\n StampUtil.contourLineElementGuid = \"\";\n }\n }\n\n //#endregion\n\n /**\n * 淹没分析\n */\n analysisSubmerge(\n submergeParams = {\n type: 0, //淹没分析类型:0:点源淹没;1:流域淹没分析;2:面域淹没分析\n bottomHeight: 10, //水底高程\n waterDeep: 5, //水深\n frequency: 10, //升高频率:10次/秒\n perHeight: 0.1, //每次上升高度: 0.1米/次\n showSide: true, //显示侧面\n radius: 10, //缓冲半径:流域分析和面域分析中用到\n }\n ) {\n return new Promise((resolve) => {\n switch (submergeParams.type) {\n case 0: {\n StampUtil.analysisSubmergePoint(submergeParams).then((res) => {\n resolve(res);\n });\n break;\n }\n case 1: {\n StampUtil.analysisSubmergePolyline(submergeParams).then((res) => {\n resolve(res);\n });\n break;\n }\n case 2: {\n StampUtil.analysisSubmergePolygon(submergeParams).then((res) => {\n resolve(res);\n });\n break;\n }\n default: {\n break;\n }\n }\n });\n }\n\n /**\n * 淹没分析:点源淹没\n * @param submergeParams\n */\n analysisSubmergePoint(submergeParams: any) {\n return new Promise((resolve) => {\n StampUtil.clearAnalysisResult();\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n shape_creator_interface.OnShapeCreated = (data: any) => {\n StampUtil.onShapeCreatedSubmerge(data, submergeParams).then(\n (res: any) => {\n res.points = data;\n resolve(res);\n }\n );\n };\n const fillcolor = 0xcc0b4b41;\n const linecolor = 0xccff0000;\n shape_creator_interface.create_circle(fillcolor, linecolor);\n });\n }\n\n /**\n * 淹没分析:流域淹没分析\n * @param submergeParams\n */\n async analysisSubmergePolyline(submergeParams: any) {\n return new Promise((resolve) => {\n StampUtil.clearAnalysisResult();\n StampUtil.createPolyline(\n {\n lineWidth: 2,\n lineColor: 0xccff0000,\n },\n null\n ).then((data: any) => {\n StampUtil.onShapeCreatedSubmerge(data, submergeParams).then(\n (res: any) => {\n res.points = data.Points;\n resolve(res);\n }\n );\n });\n });\n }\n\n /**\n * 淹没分析:面域淹没分析\n * @param submergeParams\n */\n analysisSubmergePolygon(submergeParams: any) {\n return new Promise((resolve) => {\n StampUtil.clearAnalysisResult();\n StampUtil.createPolygon().then((data: any) => {\n StampUtil.getLibax().shape_creator_interface.clear();\n StampUtil.onShapeCreatedSubmerge(data, submergeParams).then(\n (res: any) => {\n res.points = data.Points;\n resolve(res);\n }\n );\n });\n });\n }\n\n /**\n * 淹没分析:绘制完成事件\n * @param data\n * @param submergeParams\n */\n onShapeCreatedSubmerge(data: any, submergeParams: any) {\n return new Promise((resolve) => {\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n shape_creator_interface.clear();\n shape_creator_interface.OnShapeCreated = undefined;\n const geometry_algorithm_interface =\n StampUtil.getLibax().geometry_algorithm_interface;\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = (\n data: any\n ) => {\n StampUtil.onGeometryAlgorithmFinished(data, submergeParams);\n };\n const points = [] as any;\n let radius = submergeParams.radius;\n switch (submergeParams.type) {\n case 0: {\n const is_element = false;\n const step = 24;\n const param = [\n is_element,\n step,\n data.Radius,\n data.Longitude,\n data.Latitude,\n submergeParams.bottomHeight,\n ];\n geometry_algorithm_interface.create_polygon_from_circle(param);\n\n points.push(data.Longitude, data.Latitude, data.Altitude);\n radius = data.Radius;\n break;\n }\n case 1: {\n const is_element = false;\n const toptype = 1;\n const num = 36;\n const bufferDir = 0;\n const v_points = [] as any;\n for (let i = 0, len = data.Points.length; i < len; ++i) {\n v_points.push({\n x: data.Points[i].X,\n y: data.Points[i].Y,\n z: submergeParams.bottomHeight,\n });\n points.push(data.Points[i].X);\n points.push(data.Points[i].Y);\n points.push(data.Points[i].Z);\n }\n geometry_algorithm_interface.create_polygon_buffer_from_polyline(\n is_element,\n v_points,\n submergeParams.radius,\n toptype,\n num,\n bufferDir\n );\n break;\n }\n case 2: {\n const is_element = false;\n const coordUnit = 1;\n const v_points = [] as any;\n for (let i = 0, len = data.Points.length; i < len; ++i) {\n v_points.push({\n x: data.Points[i].X,\n y: data.Points[i].Y,\n z: submergeParams.bottomHeight,\n });\n points.push(data.Points[i].X);\n points.push(data.Points[i].Y);\n points.push(data.Points[i].Z);\n }\n if (data.Points.length > 0) {\n points.push(data.Points[0].X);\n points.push(data.Points[0].Y);\n points.push(data.Points[0].Z);\n }\n geometry_algorithm_interface.create_parallel_polygon(\n is_element,\n v_points,\n 0,\n coordUnit\n );\n break;\n }\n default: {\n break;\n }\n }\n const param = [] as any;\n StampUtil.getLayerData().then((res: any) => {\n const demArr = StampUtil.getDemLayerids(res.sub_layers);\n param.push(submergeParams.type == 0);\n param.push(submergeParams.bottomHeight + submergeParams.waterDeep);\n param.push(radius);\n param.push(true);\n param.push(demArr.join(\",\"));\n param.push(points);\n StampUtil.analysisSubmergeMission(param).then((result) => {\n resolve(result);\n });\n });\n });\n }\n\n /**\n * 淹没分析获取结果淹没面积\n * @param param\n * @returns\n */\n analysisSubmergeMission(param: any) {\n return new Promise((resolve) => {\n const analysis_interface = StampUtil.getLibax().analysis_interface;\n analysis_interface.OnSubMergingResult = (data: any) => {\n analysis_interface.clear();\n analysis_interface.OnSubMergingResult = undefined;\n resolve(data);\n };\n analysis_interface.analysisSubmerging(param);\n });\n }\n change_flow = function (guid: string, isFlow: boolean) {\n if (guid !== \"\") {\n const v_param = {\n guid: guid,\n enableFlow: isFlow,\n textureUrl:\n window.location.origin +\n window.location.pathname +\n \"images/flow/flow.jpg\",\n };\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampUtil.getLibax()\n );\n layer_manager_interface.change_block_flow(v_param);\n }\n };\n /**\n * 淹没分析:生成多边形完成事件\n * @param data\n * @param submergeParams\n */\n onGeometryAlgorithmFinished(data: any, submergeParams: any) {\n const geometry_algorithm_interface =\n StampUtil.getLibax().geometry_algorithm_interface;\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = undefined;\n if (data != undefined && data.Polygon != undefined) {\n const len = data.Polygon.length;\n const coordinates = [];\n for (let i = 0; i < len; ++i) {\n for (let j = 0; j < 2; ++j) {\n coordinates.push(data.Polygon[i][j]);\n }\n coordinates.push(submergeParams.bottomHeight);\n }\n\n if (coordinates.length >= 9) {\n StampUtil.createSubmergePolygonParams(coordinates, submergeParams);\n }\n }\n }\n\n /**\n * 淹没分析:创建多边形淹没体\n * @param coordinates\n * @param submergeParams\n */\n createSubmergePolygonParams(coordinates: any, submergeParams: any) {\n debugger;\n const speed = submergeParams.perHeight * submergeParams.frequency;\n const times = submergeParams.waterDeep / speed;\n const userdataObj = {} as any;\n userdataObj.type = 415;\n userdataObj.name = \"submerge\";\n userdataObj.guid = StampUtil.createGuid();\n userdataObj.selectable = 0;\n userdataObj.editable = 0;\n userdataObj.parent = 0;\n userdataObj.fillcolor = \"#FF0B4B41\";\n userdataObj.watercolor = \"#FF095889\";\n userdataObj.action = \"add\";\n userdataObj.ShowSide = submergeParams.showSide;\n userdataObj.Wave = 100;\n userdataObj.BottomHeight = submergeParams.bottomHeight;\n userdataObj.TopHeight =\n submergeParams.bottomHeight + submergeParams.waterDeep;\n userdataObj.Time = times;\n let params = [userdataObj];\n params = params.concat(coordinates);\n\n StampUtil.submergePolygon = userdataObj;\n const element_interface = StampUtil.getLibax().element_interface;\n element_interface.OldOnAdded = element_interface.OnAdded;\n element_interface.OnAdded = () => {\n element_interface.OnAdded = element_interface.OldOnAdded;\n };\n element_interface.create_polygon_params(params);\n if (StampUtil.submergePolygon) {\n const analysis_interface = StampUtil.getLibax().analysis_interface;\n analysis_interface.analysisDynamicSubmerging([\n StampUtil.submergePolygon.guid,\n ]);\n }\n }\n /**\n * 临山天际线分析用坐标和半径创建圆后返回点串信息\n */\n analysisLsSkyline(params: any) {\n return new Promise((resolve: any) => {\n const geometry_algorithm_interface =\n StampUtil.getLibax().geometry_algorithm_interface;\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = (\n data: any\n ) => {\n resolve(data);\n };\n\n const is_element = false;\n const step = 36;\n const Radius = params.radius;\n const Longitude = params.points[0].x;\n const Latitude = params.points[0].y;\n const alt = params.points[0].z;\n const param = [is_element, step, Radius, Longitude, Latitude, alt];\n geometry_algorithm_interface.create_polygon_from_circle(param);\n });\n }\n /**\n *\n * @param params\n * @returns\n */\n getPolygonFromCircle(\n params: any = {\n radius: 1,\n center: { x: 0, y: 0, z: 0 },\n step: 36,\n }\n ) {\n return new Promise((resolve: any) => {\n const geometry_algorithm_interface =\n StampUtil.getLibax().geometry_algorithm_interface;\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = (\n data: any\n ) => {\n resolve(data);\n };\n const is_element = false;\n const step = params.step || 36;\n const Radius = params.radius || 1;\n const Longitude = params.center.x;\n const Latitude = params.center.y;\n const alt = params.center.z;\n const param = [is_element, step, Radius, Longitude, Latitude, alt];\n geometry_algorithm_interface.create_polygon_from_circle(param);\n });\n }\n /**\n * 剖切分析\n * @param vertical\n * @param types\n * @param poly\n * @param callBack\n */\n clipScene(\n vertical: number,\n types: number,\n poly: Array<any>,\n center: any = null,\n heading: any = null,\n axis: any = null,\n callBack: Function = () => {}\n ) {\n const measure_interface = StampAPI.LibAx.measure_interface(\n StampUtil.getLibax()\n );\n measure_interface.clipScene(!vertical, types, poly, center, heading, axis); //vertical, types, poly, center, heading, axis\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Measure\n );\n handler.interface.oldOnMeasureFinished =\n handler.interface.OnMeasureFinished;\n handler.interface.OnMeasureFinished = (data: any) => {\n handler.interface.OnMeasureFinished =\n handler.interface.oldOnMeasureFinished;\n StampUtil.clearMeasure();\n typeof callBack == \"function\" && callBack();\n };\n }\n\n /**\n * 获取当前剖切参数\n * @returns\n */\n getClipScenePose() {\n return new Promise((resolve) => {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Measure\n );\n handler.interface.oldOnMeasureFinished =\n handler.interface.OnMeasureFinished;\n handler.interface.OnMeasureFinished = (data: any) => {\n handler.interface.OnMeasureFinished =\n handler.interface.oldOnMeasureFinished;\n resolve(data);\n };\n handler.interface.MeasureGetClipScenePose();\n });\n }\n\n /**\n * 定向剖切\n */\n fixedClipScene() {\n const measure_interface = StampAPI.LibAx.measure_interface(\n StampUtil.getLibax()\n );\n const vertical = false;\n const types = 31;\n const thres = -15;\n const line = [] as any;\n const poly = undefined;\n measure_interface.fixedClipScene(vertical, types, thres, line, poly);\n }\n //获取日照时间\n async calculateSunriseAndSunset(params: any) {\n return new Promise((resolve: any) => {\n const geometry_algorithm_interface =\n StampAPI.LibAx.geometry_algorithm_interface(StampUtil.getLibax());\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = function (\n data: any\n ) {\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = undefined;\n resolve(data);\n };\n geometry_algorithm_interface.calculate_sunrise_and_sunset(...params);\n });\n }\n\n calcDate(time: number) {\n const hour = Math.floor(time);\n const minute = Math.floor((time - hour) * 60);\n const second = Math.floor(((time - hour) * 60 - minute) * 60);\n return {\n hour,\n minute,\n second,\n };\n }\n\n /**\n * 设置白天时长\n * @param sunrise 计算得到的朝霞时间\n * @param sunset 计算得到的晚霞时间\n */\n setDayDuration(sunrise: number, sunset: number) {\n const sun_rise = this.calcDate(sunrise);\n const sun_set = this.calcDate(sunset);\n\n StampUtil.getLibax().environment_interface.set_day_duration([\n sun_rise.hour,\n sun_set.hour,\n sun_rise.minute,\n sun_set.minute,\n ]);\n }\n\n setDayTime(\n year: number,\n month: number,\n day: number,\n lon: number,\n lat: number,\n sunriseHour: number,\n sunsetHour: number\n ) {\n return new Promise((resolve) => {\n const timeArr = [] as any;\n //计算场景经纬度当前时间的日照时长\n StampUtil.calculateSunriseAndSunset([year, month, day, lon, lat]).then(\n (res: any) => {\n //设置白天日照时长\n StampUtil.setDayDuration(res.Sunrise, res.Sunset);\n\n const sunRise = StampUtil.calcDate(res.Sunrise);\n const sunSet = StampUtil.calcDate(res.Sunset);\n const sunRiseHourTmp = Math.floor(\n parseFloat(sunriseHour.toString()) / 2\n ); //朝霞小时部分\n const sunRiseMinuteTmp =\n ((parseFloat(sunriseHour.toString()) / 2) % 1) * 60; //朝霞分钟部分\n const sunSetHourTmp = Math.floor(\n parseFloat(sunsetHour.toString()) / 2\n );\n const sunSetMinuteTmp =\n ((parseFloat(sunsetHour.toString()) / 2) % 1) * 60;\n let dateTime = new Date(\n year,\n month - 1,\n day,\n sunRise.hour - sunRiseHourTmp, //白天-1\n sunRise.minute - sunRiseMinuteTmp,\n sunRise.second\n );\n timeArr.push(StampUtil.formatDateTime(dateTime)); //朝霞开始时间\n dateTime = new Date(\n year,\n month - 1,\n day,\n sunRise.hour + sunRiseHourTmp,\n sunRise.minute + sunRiseMinuteTmp,\n sunRise.second\n );\n timeArr.push(StampUtil.formatDateTime(dateTime)); //白天开始时间\n dateTime = new Date(\n year,\n month - 1,\n day,\n sunSet.hour - sunSetHourTmp,\n sunSet.minute - sunSetMinuteTmp,\n sunSet.second\n );\n timeArr.push(StampUtil.formatDateTime(dateTime)); //晚霞开始时间\n dateTime = new Date(\n year,\n month - 1,\n day,\n sunSet.hour + sunSetHourTmp,\n sunSet.minute + sunSetMinuteTmp,\n sunSet.second\n );\n timeArr.push(StampUtil.formatDateTime(dateTime)); //夜晚开始时间\n resolve(timeArr);\n }\n );\n });\n }\n\n /**\n * 日照分析\n * @param param\n * @returns\n */\n measureInsolation(param: any) {\n return new Promise((resolve: any) => {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Measure\n );\n const measure_interface = StampAPI.LibAx.measure_interface(\n StampUtil.getLibax()\n );\n handler.interface.oldOnMeasureFinished =\n handler.interface.OnMeasureFinished;\n handler.interface.OnMeasureFinished = async (data: any) => {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Measure\n );\n handler.interface.OnMeasureFinished =\n handler.interface.oldOnMeasureFinished;\n let result = parseInt(data.result);\n if (data.measureType == 9) {\n result = data.result * 60;\n }\n data.result = Math.round(result);\n let point = null;\n if (data.points.length >= 2) {\n //手绘,取第二个点\n point = data.points[1];\n } else if (param.length >= 16 && param[15].length >= 6) {\n //参数化,取第二个点\n point = {\n x: param[15][3],\n y: param[15][4],\n z: param[15][5],\n };\n }\n if (point) {\n const textIcon = (await StampUtil.createIconParams({\n Text: `日照时长:${data.result}分钟`,\n points: [point],\n FontSize: 16,\n })) as any;\n StampUtil.insolationIconList.push(textIcon);\n }\n resolve(data);\n };\n measure_interface.insolation(param);\n });\n }\n /**\n * 坡度图\n * @param param\n * @returns\n */\n analysisSlopePolygon(param: any) {\n const analysis_interface = StampUtil.getLibax().analysis_interface; //获取分析功能接口\n return new Promise((resolve: any) => {\n // analysis_interface.OnAnalysisFinished = undefined;\n //清除上一次的分析结果\n StampUtil.clearAnalysisResult();\n analysis_interface.OnCreateSlopePolygon = function (data: any) {\n console.log(data);\n StampUtil.getLibax().shape_creator_interface.clear();\n const userdataObj = {} as any;\n userdataObj.type = 284;\n userdataObj.name = \"slope\";\n userdataObj.guid = data.guid;\n userdataObj.Transparent = 200;\n userdataObj.Grade = param;\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n element_interface.modify_element(userdataObj);\n resolve(data.guid);\n };\n const points = [\n /*{ x: 117.17361607737925, y: 34.25653553875457, z: 0 },\n { x: 117.1735770088304, y: 34.255618880659824, z: 0 },\n { x: 117.17512731369878, y: 34.25558015878003, z: 0 },\n { x: 117.17493294215454, y: 34.25650302330519, z: 0 }*/\n ] as any; // 范围,不赋值会自动调用多边形构建工具\n analysis_interface.createSlopePolygon(points);\n });\n }\n /**\n * 汇水分析\n * @param colorTrans\n * @param trans\n * @returns\n */\n analysisSlopeDirectionPolygon(colorTrans: string) {\n const analysis_interface = StampAPI.LibAx.analysis_interface(\n StampUtil.getLibax()\n ); //获取分析功能接口\n StampUtil.clearAnalysisResult();\n return new Promise((resolve: any) => {\n analysis_interface.OnCreateSlopeDirectionPolygon = function (data: any) {\n const shape_creator_interface = StampAPI.LibAx.shape_creator_interface(\n StampUtil.getLibax()\n );\n shape_creator_interface.clear();\n const userdataObj = {} as any;\n userdataObj.type = 568;\n userdataObj.name = \"slope_direction\";\n userdataObj.guid = data.guid;\n userdataObj.linecolor = colorTrans;\n userdataObj.linewidth = 1.0;\n userdataObj.fillcolor = colorTrans;\n userdataObj.arrowcolor = colorTrans;\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n element_interface.modify_element(userdataObj);\n resolve(data.guid);\n };\n const points = [\n /*{ x: 117.17361607737925, y: 34.25653553875457, z: 0 },\n { x: 117.1735770088304, y: 34.255618880659824, z: 0 },\n { x: 117.17512731369878, y: 34.25558015878003, z: 0 },\n { x: 117.17493294215454, y: 34.25650302330519, z: 0 }*/\n ] as any; // 范围,不赋值会自动调用多边形构建工具\n analysis_interface.createSlopeDirectionPolygon(points);\n });\n }\n /**\n * 热力图\n * @param dataHeat\n */\n analysisHeatMapPolygon(dataHeat: any) {\n const analysis_interface = StampUtil.getLibax().analysis_interface; //获取分析功能接口\n return new Promise((resolve: any) => {\n analysis_interface.OnCreateHeatMapPolygon = function (data: any) {\n const userdataObj = {} as any;\n userdataObj.type = dataHeat.is3D\n ? STAMP_RTTI.SE_RTTI_ELEMENT_HEAT_MAP_3D\n : STAMP_RTTI.SE_RTTI_ELEMENT_HEAT_MAP_POLYGON; //; //\n userdataObj.name = dataHeat.name;\n userdataObj.guid = data.guid;\n userdataObj.Radius = dataHeat.radius;\n userdataObj.Density = 200;\n userdataObj.Altitude = 0.03;\n userdataObj.Weight = 100;\n userdataObj.AltitudeType = 1;\n userdataObj.DataPath = dataHeat.DataPath;\n userdataObj.PtData = dataHeat.Points;\n userdataObj.size = 0;\n userdataObj.Grade = dataHeat.Grade;\n StampUtil.getLibax().element_interface.modify_element(userdataObj);\n resolve(data.guid);\n };\n analysis_interface.createHeatMapPolygon(dataHeat.is3D);\n });\n }\n\n /**\n * 显示淹没水体侧面\n * @param bShow\n */\n showSubmergeSide(bShow: boolean) {\n if (StampUtil.submergePolygon) {\n const element_interface = StampUtil.getLibax().element_interface;\n element_interface.OldOnAdded = element_interface.OnAdded;\n element_interface.OnAdded = () => {};\n StampUtil.submergePolygon.ShowSide = bShow;\n StampUtil.submergePolygon.action = \"modify\"; //modify参数类似\n const params = [StampUtil.submergePolygon];\n element_interface.modify_element(params);\n }\n }\n\n /**\n * 通视分析:OK\n */\n analysisLineSight(\n params = {\n startHeight: 1.8,\n endHeight: 0,\n localServiceType: 3,\n layers: \"\",\n points: [] as Array<any>,\n } as any,\n callbackLine: any = null\n ) {\n return new Promise((resolve) => {\n StampUtil.clearAnalysisResult();\n const startHeight = params.startHeight || 1.8; //起始点高度(人眼高度)\n const endHeight = params.endHeight || 0.0; //结束点高度\n const localServiceType = params.localServiceType || 3; //1:onlyService通过服务分析; 2:onlyLocal通过本地加载数据分析; 3:localService通过本地加载数据和服务共同分析\n const layers = params.layers || \"\";\n const points = params.points || [];\n const paramsObj: Array<any> = [\n startHeight,\n endHeight,\n localServiceType,\n layers,\n ];\n if (points.length > 0) {\n const pointsArr: Array<number> = [];\n for (let i = 0; i < points.length; i++) {\n pointsArr.push(points[i].x, points[i].y, points[i].z);\n }\n paramsObj.push(pointsArr);\n }\n const analysis_interface = StampAPI.LibAx.analysis_interface(\n StampUtil.getLibax()\n );\n analysis_interface.OnAnalysisFinished = function (data: any) {\n analysis_interface.OnAnalysisFinished = undefined;\n analysis_interface.OnFaild = undefined;\n resolve(data);\n };\n analysis_interface.OnFaild = function (data: any) {\n analysis_interface.OnAnalysisFinished = undefined;\n analysis_interface.OnFaild = undefined;\n };\n analysis_interface.OnPixelStreamingLineSight = function (data: any) {\n const pointArr = data.coords;\n const points = [];\n for (let i = 0; i < pointArr.length; i += 3) {\n points.push({\n x: pointArr[i],\n y: pointArr[i + 1],\n z: pointArr[i + 2],\n });\n }\n StampUtil.createLineSightIcon(points);\n typeof callbackLine == \"function\" &&\n callbackLine([points[0], points[points.length - 1]]);\n };\n analysis_interface.analysisLineSight(paramsObj);\n });\n }\n\n async createLineSightIcon(points: Array<any>) {\n if (StampUtil.lineSightIconList.length == 0) {\n const startIcon = (await StampUtil.createIconParams({\n Text: \"起点\",\n points: [points[0]],\n FontSize: 16,\n })) as any;\n StampUtil.lineSightIconList.push(startIcon);\n }\n const index = StampUtil.lineSightIconList.length;\n const endIcon = (await StampUtil.createIconParams({\n Text: \"终点\" + index,\n points: [points[2]],\n FontSize: 16,\n })) as any;\n StampUtil.lineSightIconList.push(endIcon);\n }\n\n /**\n * 通视分析:显示高度\n */\n showLineSightHeight() {\n const analysis_interface = StampUtil.getLibax().analysis_interface;\n analysis_interface.createLineSightHeightLimit();\n }\n\n /**\n * 可视域分析:OK\n */\n analysisViewShed(\n params = {\n fov: 53,\n height: 1.8,\n shadowColor: 0xffff0000,\n noShadowColor: 0xff00ff00,\n bShowAssitantCone: false,\n Longitude: Number.MAX_VALUE,\n Latitude: Number.MAX_VALUE,\n Altitude: Number.MAX_VALUE,\n Heading: Number.MAX_VALUE,\n Tilt: Number.MAX_VALUE,\n Roll: Number.MAX_VALUE,\n Radius: Number.MAX_VALUE,\n }\n ) {\n return new Promise(async (resolve) => {\n const fov = params.fov || 53; //视域角度(度)\n const height = params.height || 1.8; //起始点高度(人眼高度:米)\n const shadowColor = params.shadowColor || 0xffff0000; //不可见区域颜色:16进制,前两位是透明度,后面6位是颜色值\n const noShadowColor = params.noShadowColor || 0xff00ff00; //可见区域颜色:16进制,前两位是透明度,后面6位是颜色值\n const bShowAssitantCone = params.bShowAssitantCone || false;\n const paramsObj = [\n fov,\n height,\n shadowColor,\n noShadowColor,\n bShowAssitantCone,\n params.Longitude,\n params.Latitude,\n params.Altitude,\n params.Heading,\n params.Tilt,\n params.Roll,\n params.Radius,\n ];\n const analysis_interface = StampAPI.LibAx.analysis_interface(\n StampUtil.getLibax()\n );\n analysis_interface.OnAnalysisFinished = function (data: any) {\n analysis_interface.OnAnalysisFinished = undefined;\n analysis_interface.OnFaild = undefined;\n resolve(data);\n };\n analysis_interface.analysisViewShed(paramsObj);\n });\n }\n\n /**\n * 获取运动物体列表\n * @returns\n */\n getDynamicViewedList() {\n return new Promise((resolve) => {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType\n .StampType_DynamicSystemInterface\n );\n\n handler.interface.apply_dynamic_list();\n handler.interface.OldOnDynamicListLoaded =\n handler.interface.OnDynamicListLoaded;\n handler.interface.OnDynamicListLoaded = function (dynamicList: any) {\n handler.interface.OnDynamicListLoaded =\n handler.interface.OldOnDynamicListLoaded;\n resolve(dynamicList);\n };\n });\n }\n\n /**\n * 动态视域分析:OK\n */\n analysisDynamicViewShed(\n params = {\n dynamicGuid: \"\",\n hFov: 120,\n vFov: 120,\n radius: 100,\n shadowColor: 0xffff0000,\n noShadowColor: 0xff00ff00,\n pathHeight: 0,\n modelHeight: 1.5,\n speed: 1.0,\n bShowAssitantCone: false,\n },\n callback: any\n ) {\n return new Promise((resolve) => {\n const dynamicGuid = params.dynamicGuid;\n const hFov = params.hFov || 120; //水平视域角度(度)\n const vFov = params.vFov || 120; //垂直视域角度(度)\n const radius = params.radius || 100; //视域半径(米)\n const shadowColor = params.shadowColor || 0xffff0000; //不可见区域颜色:16进制,前两位是透明度,后面6位是颜色值\n const noShadowColor = params.noShadowColor || 0xff00ff00; //可见区域颜色:16进制,前两位是透明度,后面6位是颜色值\n const pathHeight = params.pathHeight || 0; //路径高度(大于0表示在空中飞行)\n const modelHeight = params.modelHeight || 1.5; //模型高度(人眼高度:米)\n const speed = params.speed || 1.0; //移动速度(米/秒)\n const bShowAssitantCone = params.bShowAssitantCone || false;\n const play_immediate = false;\n const paramsObj = [\n dynamicGuid,\n hFov,\n vFov,\n radius,\n shadowColor,\n noShadowColor,\n pathHeight,\n modelHeight,\n speed,\n bShowAssitantCone,\n play_immediate, //是否立即播放\n false,\n ];\n StampUtil.getLibax().analysis_interface.analysisDynamicViewShed(\n paramsObj\n );\n const handlerTrackInterface = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_TrackInterface\n );\n StampUtil.getLibax().analysis_interface.OnCreateViewShedFinish =\n function (data1: any) {\n if (typeof callback == \"function\") {\n callback();\n }\n };\n const oldTrackFinished = handlerTrackInterface.interface.OnTrackFinished;\n handlerTrackInterface.interface.OnCreateViewShedFinish = function (\n data: any\n ) {\n handlerTrackInterface.interface.OnTrackFinished = oldTrackFinished;\n const dynamic_system_interface =\n StampAPI.LibAx.dynamic_system_interface(StampUtil.getLibax());\n dynamic_system_interface.unload_dynamic_object(data.bind); //移除运动对象\n resolve(data);\n };\n });\n }\n analysisDynamicViewShedPlay() {\n return new Promise((resolve) => {\n StampUtil.getLibax().analysis_interface.analysisDynamicViewShedPlay();\n const handlerTrackInterface = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_TrackInterface\n );\n\n const oldTrackFinished = handlerTrackInterface.interface.OnTrackFinished;\n handlerTrackInterface.interface.OnTrackFinished = function (data: any) {\n handlerTrackInterface.interface.OnTrackFinished = oldTrackFinished;\n const dynamic_system_interface =\n StampAPI.LibAx.dynamic_system_interface(StampUtil.getLibax());\n dynamic_system_interface.unload_dynamic_object(data.bind);\n resolve(data);\n };\n });\n }\n analysisDynamicViewShedPause() {\n StampUtil.getLibax().analysis_interface.analysisDynamicViewShedPause();\n }\n\n analysisDynamicViewShedResume() {\n StampUtil.getLibax().analysis_interface.analysisDynamicViewShedResume();\n }\n\n analysisDynamicViewShedStop() {\n StampUtil.getLibax().analysis_interface.analysisDynamicViewShedStop();\n }\n\n /**\n * 开敞度分析\n * @param params 传参\n * {\n * height: 1.8,\n * radius: 50,\n * frameColor,\n * fillColor,\n * precision,\n * renderMode,\n * visibleMode\n * }\n * @returns\n */\n analysisViewDome(params: any) {\n return new Promise((resolve: any) => {\n const analysis_interface = StampUtil.getLibax().analysis_interface;\n const height = params.height || 1.8; //人视点距地高度\n const radius = params.radius || 50; //观察半径\n const frameColor = params.frameColor || 0xcc00ff00; //线框色\n const fillColor = params.fillColor || 0xccff0000; //填充色\n const precision = params.precision || 2; //精度(0:低精度;1:中精度;2:高精度)\n const renderMode = params.renderMode == undefined ? 0 : params.renderMode; //渲染模式(0:线框;1:填充;2:线框 + 填充)\n const visibleMode =\n params.visibleMode == undefined ? 0 : params.visibleMode; //0:输出可视部分;1:输出不可视部分\n StampUtil.createPoint(() => {\n resolve(null);\n }).then((res: any) => {\n analysis_interface.analysisViewDome([\n 0, //0:外面传入点;1:内部绘制点\n res.Longitude,\n res.Latitude,\n res.Altitude,\n height,\n radius,\n frameColor,\n fillColor,\n precision,\n renderMode,\n visibleMode,\n ]);\n resolve(res);\n });\n });\n }\n /**\n * 挖填方分析:OK\n */\n analysisClipTerrain(\n params = {\n alt: 5, //开挖高程:基准高程 - 开挖深度\n layerids: [],\n addModel: false,\n sideTexturePath: \"\",\n bottomTexturePath: \"\",\n }\n ) {\n this.clearTerrainResult();\n return new Promise((resolve) => {\n StampUtil.createPolygon().then((data: any) => {\n StampUtil.getLibax().shape_creator_interface.clear();\n if (data.Points == undefined || data.Points.length < 3) {\n return;\n }\n const terrain_manager_interface =\n StampAPI.LibAx.terrain_manager_interface(StampUtil.getLibax());\n const pointsArr = [] as any;\n const points = [];\n for (let i = 0; i < data.Points.length; i++) {\n points.push({\n x: data.Points[i].X,\n y: data.Points[i].Y,\n z: params.alt,\n });\n }\n pointsArr.push(points);\n const polygon = pointsArr;\n terrain_manager_interface.clip_terrain_by_polygon(polygon);\n const addModel = params.addModel;\n if (addModel) {\n //添加辅助模型\n StampUtil.addClipModel({\n points: points,\n useDom: false,\n sideTexturePath: params.sideTexturePath,\n bottomTexturePath: params.bottomTexturePath,\n }).then((res: any) => {\n resolve({\n modelGuid: res.guid,\n pointsArr,\n });\n });\n } else {\n resolve({\n modelGuid: \"\",\n pointsArr,\n });\n }\n });\n });\n }\n\n /**\n * 沿路开挖\n */\n analysisExcavationRoad(\n params = {\n alt: 5,\n layerids: [],\n addModel: false,\n data: [] as any,\n sideTexturePath: \"\",\n bottomTexturePath: \"\",\n }\n ) {\n this.clearTerrainResult();\n return new Promise((resolve) => {\n const terrain_manager_interface =\n StampAPI.LibAx.terrain_manager_interface(StampUtil.getLibax());\n const pointsArr = [] as any;\n const points = [];\n for (let i = 0; i < params.data.length - 1; i++) {\n points.push({\n x: params.data[i].x,\n y: params.data[i].y,\n z: params.alt,\n });\n }\n pointsArr.push(points);\n const polygon = pointsArr;\n terrain_manager_interface.clip_terrain_by_polygon(polygon);\n const addModel = params.addModel;\n if (addModel) {\n //添加辅助模型\n StampUtil.addClipModel({\n points: points,\n useDom: false,\n sideTexturePath: params.sideTexturePath,\n bottomTexturePath: params.bottomTexturePath,\n }).then((res: any) => {\n resolve({\n modelGuid: res.guid,\n pointsArr,\n });\n });\n } else {\n resolve({\n modelGuid: \"\",\n pointsArr,\n });\n }\n });\n }\n\n /**\n * 增加辅助模型(开挖接口修改暂时不用了)\n * @param points 点串\n * @param useDom 是否采用DOM贴图(true:地形平整;false:开挖生成辅助模型)\n * @returns\n */\n addClipModel(\n params: any = {\n points: [],\n useDom: false,\n sideTexturePath: \"\",\n bottomTexturePath: \"\",\n }\n ) {\n return new Promise((resolve) => {\n const terrain_manager_interface =\n StampAPI.LibAx.terrain_manager_interface(StampUtil.getLibax());\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push({\n x: params.points[i].x,\n y: params.points[i].y,\n z: params.points[i].z,\n });\n }\n const thickness = 0.4;\n const level_max = 11;\n const name = \"ClipModel\";\n const flat_bottom = true;\n const use_dom = params.useDom;\n const url =\n window.location.origin + window.location.pathname + \"images/analysis/\";\n if (!params.sideTexturePath) {\n params.sideTexturePath = url + \"profile.jpg\";\n }\n if (!params.bottomTexturePath) {\n params.bottomTexturePath = url + \"bottom.jpg\";\n }\n terrain_manager_interface.OnTerrainManagerResult = function (data: any) {\n resolve(data);\n terrain_manager_interface.OnTerrainManagerResult = undefined;\n };\n terrain_manager_interface.generate_clip_model(\n pointsArr,\n name,\n params.sideTexturePath,\n params.bottomTexturePath,\n thickness,\n level_max,\n flat_bottom,\n use_dom\n );\n });\n }\n /**\n *矢量面开挖\n */\n clipByPoints(\n params = {\n points: [] as any,\n layerids: \"\",\n alt: 0, //开挖绝对高程\n // addModel: false,\n sideTexturePath: \"\",\n bottomTexturePath: \"\",\n }\n ) {\n return new Promise((resolve) => {\n const terrain_manager_interface =\n StampUtil.getLibax().terrain_manager_interface;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n const points = [];\n for (let j = 0; j < params.points[i].length; j++) {\n points.push({\n x: params.points[i][j].x,\n y: params.points[i][j].y,\n z: params.alt,\n });\n }\n pointsArr.push(points);\n }\n terrain_manager_interface.clip_terrain_by_polygon(pointsArr);\n resolve(pointsArr);\n });\n }\n //批量获取高程\n getBatchAltitude(points: any, layerids: any = []) {\n return new Promise(async (resolve) => {\n const measure_interface = StampUtil.getLibax().measure_interface;\n const layers = layerids ? layerids.join(\",\") : \"\";\n measure_interface.OnMeasureFinished = function (data: any) {\n resolve(data?.points);\n };\n measure_interface.getBatchAltitude([layers, points]);\n });\n }\n\n /**\n * 批量创建部件\n * @param\n * @returns\n */\n createBatch(params: any) {\n return new Promise((resolve: any) => {\n const element_interface = StampUtil.getLibax().element_interface;\n element_interface.create_batch(params);\n for (let i = 0; i < params.length; i++) {\n element_interface.userdataArr.push(params[i][0]);\n }\n element_interface.OnAdded = (treeData: any) => {\n element_interface.OnAdded = undefined;\n resolve(treeData);\n };\n });\n }\n /**\n * 清除地形开挖结果\n */\n clearTerrainResult() {\n const terrain_manager_interface = StampAPI.LibAx.terrain_manager_interface(\n StampUtil.getLibax()\n );\n terrain_manager_interface.clear();\n }\n\n /**\n * 地形平整\n */\n terrainSmooth(alt = 0) {\n return new Promise((resolve) => {\n StampUtil.createPolygon().then((data: any) => {\n StampUtil.getLibax().shape_creator_interface.clear();\n if (data.Points == undefined || data.Points.length < 3) {\n resolve(\"至少绘制3个点\");\n return;\n }\n\n const terrain_manager_interface =\n StampUtil.getLibax().terrain_manager_interface;\n const pointsArr = [];\n const points = [];\n for (let i = 0; i < data.Points.length; i++) {\n points.push({\n x: data.Points[i].X,\n y: data.Points[i].Y,\n z: alt,\n });\n }\n pointsArr.push(points);\n const polygon = pointsArr;\n const b_use_dom = true;\n const url =\n window.location.origin +\n window.location.pathname +\n \"images/analysis/\";\n const sideTexturePath = url + \"profile.jpg\";\n const bottomTexturePath = url + \"bottom.jpg\";\n terrain_manager_interface.clip_terrain_by_polygon(\n polygon,\n true, //需要填充内容\n sideTexturePath, //侧面纹理路径url\n bottomTexturePath, //底部纹理路径url\n Number(alt), //平整高程\n b_use_dom //\n );\n\n resolve(data);\n });\n });\n }\n /*\n *显示地形\n */\n terrainSmoothByPoints(points: Array<Array<any>>, alts: Array<number>) {\n const terrain_manager_interface = StampAPI.LibAx.terrain_manager_interface(\n StampUtil.getLibax()\n );\n const pointsArr = [];\n for (let i = 0; i < points.length; i++) {\n const item = points[i];\n const _points = [];\n for (let j = 0; j < item.length; j++) {\n _points.push({\n x: item[j].x,\n y: item[j].y,\n z: alts.length > i ? alts[i] : alts[alts.length - 1],\n });\n }\n pointsArr.push(_points);\n }\n const polygon = pointsArr;\n const b_use_dom = true;\n terrain_manager_interface.clip_terrain_by_polygon(\n polygon,\n true, //是否填充辅助模型(侧壁和底部)\n \"\",\n \"\",\n alts,\n b_use_dom //辅助模型是否使用影像纹理\n );\n }\n\n /**\n * 光影控制\n * @param year\n * @param month\n * @param day\n * @param hour\n * @param minute\n * @param second\n * @param timeDiffer 时差多少小时\n */\n analysisShinning(\n year: number,\n month: number,\n day: number,\n hour: number,\n minute: number,\n second: number,\n timeDiffer = 0,\n isRealSolarTime = false\n ) {\n let dateTime;\n if (isRealSolarTime) {\n dateTime = new Date(\n year,\n month - 1,\n day,\n hour + timeDiffer,\n minute,\n second\n );\n } else {\n dateTime = new Date(year, month - 1, day, hour, minute, second);\n }\n\n StampUtil.getLibax().environment_interface.set_sun_data_time([\n dateTime.getFullYear(),\n dateTime.getMonth() + 1,\n dateTime.getDate(),\n dateTime.getHours(),\n dateTime.getMinutes(),\n dateTime.getSeconds(),\n isRealSolarTime,\n ]);\n }\n\n /**\n *退红线分析\n */\n analysisRedLine(\n params = {\n distance: 5,\n color: 0xfffffb00,\n points: [] as any,\n toptype: 1,\n direction: 0,\n }\n ) {\n return new Promise((resolve) => {\n const distance = params.distance || 5;\n const color = params.color || 0xfffffb00;\n const points = params.points || [];\n const toptype = params.toptype || 1;\n const direction = params.direction || 0;\n let paramsObj = [];\n if (params.points && params.points.length) {\n const coordinates = [];\n for (let i = 0; i < points.length; i++) {\n coordinates.push(points[i].x, points[i].y, points[i].z);\n }\n paramsObj = [distance, color, toptype, direction, coordinates];\n } else {\n paramsObj = [distance, color, toptype, direction];\n }\n const analysis_interface = StampAPI.LibAx.analysis_interface(\n StampUtil.getLibax()\n );\n analysis_interface.OnAnalysisFinished = function (data: any) {\n analysis_interface.OnAnalysisFinished = undefined;\n analysis_interface.OnFaild = undefined;\n resolve(data);\n };\n StampUtil.getLibax().analysis_interface.analysisRedLine(paramsObj);\n });\n }\n /**\n *天际线\n */\n analysisSkyline() {\n const color = 0xffff0000;\n const widthType = 2;\n const params = [color, widthType];\n const analysis_interface = StampAPI.LibAx.analysis_interface(\n StampUtil.getLibax()\n );\n analysis_interface.analysisSkyline(params);\n }\n /**\n *立面分析\n */\n analysisVerticalFace(\n params = {\n verticalFaceHeight: 20,\n distance: 600,\n deep: 10,\n showDem: 0,\n points: [] as Array<any>,\n }\n ) {\n return new Promise((resolve) => {\n const verticalFaceHeight = params.verticalFaceHeight || 20;\n const distance = params.distance || 600;\n const deep = params.deep || 10;\n const showDem = params.showDem || 0;\n const points = params.points || [];\n const otherParams: any = {};\n if (points.length > 0) {\n otherParams.coordinates = [] as Array<any>;\n for (let i = 0; i < points.length; i++) {\n otherParams.coordinates.push(points[i].x, points[i].y, points[i].z);\n }\n }\n const paramsObj = [\n verticalFaceHeight,\n distance,\n deep,\n showDem,\n otherParams,\n ];\n const analysis_interface = StampAPI.LibAx.analysis_interface(\n StampUtil.getLibax()\n );\n analysis_interface.OnAnalysisFinished = function (data: any) {\n resolve(true);\n analysis_interface.OnAnalysisFinished = undefined;\n analysis_interface.OnFaild = undefined;\n };\n analysis_interface.analysisVerticalFace(paramsObj);\n });\n }\n /**\n *立面分析获取高度\n */\n getAnalysisVerticalFaceHeight() {\n return new Promise((resolve) => {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Measure\n );\n handler.interface.measure(\n handler.CommandType.MeasureCommand_VerticalDist,\n [8, 8]\n );\n const oldOnMeasureFinished = handler.interface.OnMeasureFinished;\n handler.interface.OnMeasureFinished = function (data: any) {\n handler.interface.OnMeasureFinished = oldOnMeasureFinished;\n StampUtil.clearAnalysisResult();\n resolve(data);\n };\n });\n }\n\n /**\n * 立面分析出图\n */\n analysisVerticalFaceExportImage() {\n return new Promise((resolve) => {\n const analysis_interface = StampUtil.getLibax().analysis_interface;\n analysis_interface.OnVerticalFaceImageSuccess = function (data: any) {\n const arrayBuffer = new ArrayBuffer(data.length);\n const bufTmp = new Uint8ClampedArray(arrayBuffer);\n bufTmp.set(data);\n const dv = new DataView(arrayBuffer);\n let offset = 0;\n dv.getUint32(offset, true); //获取width\n offset += 4;\n dv.getUint32(offset, true); //获取height\n offset += 4;\n const imageBuf = bufTmp.slice(offset);\n const fileName = StampUtil.savePng(imageBuf);\n resolve(fileName);\n };\n StampUtil.getRootPath().then((res: any) => {\n const param = res.root_path + \"temp\\\\skyline.png\";\n analysis_interface.analysisVerticalFaceExportImage(param);\n });\n });\n }\n /**\n * 保存图片\n * @param data\n */\n savePng(data: any) {\n // dada 表示要转换的字符串数据,type 表示要转换的数据格式\n const blob = new Blob([data], {\n type: \"application/octet-stream\",\n });\n // 根据 blob生成 url链接\n const objectURL = URL.createObjectURL(blob);\n\n // 创建一个 a 标签Tag\n const aTag = document.createElement(\"a\");\n // 设置文件的下载地址\n aTag.href = objectURL;\n // 设置保存后的文件名称\n aTag.download = \"立面分析.png\";\n // 给 a 标签添加点击事件\n aTag.click();\n // 释放一个之前已经存在的、通过调用 URL.createObjectURL() 创建的 URL 对象。\n // 当你结束使用某个 URL 对象之后,应该通过调用这个方法来让浏览器知道不用在内存中继续保留对这个文件的引用了。\n window.URL.revokeObjectURL(objectURL);\n return aTag.download;\n }\n\n /**\n * 文件下载\n * @param data 二进制数据流\n * @param fileName 文件名\n * @returns\n */\n saveFile(\n data: ArrayBuffer | Uint8Array | Uint8ClampedArray,\n fileName: string\n ) {\n const blob = new Blob([data], {\n type: \"application/octet-stream\",\n });\n // 根据 blob生成 url链接\n const objectURL = URL.createObjectURL(blob);\n\n // 创建一个 a 标签Tag\n const aTag = document.createElement(\"a\");\n // 设置文件的下载地址\n aTag.href = objectURL;\n // 设置保存后的文件名称\n aTag.download = fileName;\n // 给 a 标签添加点击事件\n aTag.click();\n // 释放一个之前已经存在的、通过调用 URL.createObjectURL() 创建的 URL 对象。\n // 当你结束使用某个 URL 对象之后,应该通过调用这个方法来让浏览器知道不用在内存中继续保留对这个文件的引用了。\n window.URL.revokeObjectURL(objectURL);\n return aTag.download;\n }\n\n /**\n * 获取白天时长\n * @returns\n */\n getDayDuration() {\n return new Promise((resolve) => {\n const environment_interface = StampUtil.getLibax().environment_interface;\n environment_interface.oldOnEnvironmentGet =\n environment_interface.OnEnvironmentGet; //暂时保存旧回调方法\n environment_interface.OnEnvironmentGet = function (data: any) {\n environment_interface.OnEnvironmentGet =\n environment_interface.oldOnEnvironmentGet; //成功后还原旧回调方法\n resolve(data);\n };\n environment_interface.get_day_duration();\n });\n }\n\n /**\n * 时间数字转时分秒\n * @param timeNum\n * @returns\n */\n getHMSTime(timeNum: number) {\n const hour = Math.floor(timeNum);\n const minute = Math.floor((timeNum - hour) * 60);\n const second = Math.floor(\n ((timeNum - hour) * 60 - Math.floor((timeNum - hour) * 60)) * 60\n );\n return {\n hour,\n minute,\n second,\n };\n }\n\n /**\n * 获取朝霞和晚霞时间\n * @returns\n */\n getRosyDawnAndEveningGlowTime(year: number, month: number, day: number) {\n return new Promise((resolve) => {\n const environment_interface = StampUtil.getLibax().environment_interface;\n environment_interface.oldOnEnvironmentGet =\n environment_interface.OnEnvironmentGet; //暂时保存旧回调方法\n environment_interface.OnEnvironmentGet = function (data: any) {\n environment_interface.OnEnvironmentGet =\n environment_interface.oldOnEnvironmentGet; //成功后还原旧回调方法\n const timeArr = [];\n let hms = StampUtil.getHMSTime(data.first_light_time);\n let dateTime = new Date(\n year,\n month - 1,\n day,\n hms.hour,\n hms.minute,\n hms.second\n );\n timeArr.push(StampUtil.formatDateTime(dateTime)); //朝霞开始时间\n hms = StampUtil.getHMSTime(data.rosy_dawn_time);\n dateTime = new Date(\n year,\n month - 1,\n day,\n hms.hour,\n hms.minute,\n hms.second\n );\n timeArr.push(StampUtil.formatDateTime(dateTime)); //白天开始时间\n hms = StampUtil.getHMSTime(data.evening_glow_time);\n dateTime = new Date(\n year,\n month - 1,\n day,\n hms.hour,\n hms.minute,\n hms.second\n );\n timeArr.push(StampUtil.formatDateTime(dateTime)); //晚霞开始时间\n hms = StampUtil.getHMSTime(data.twilight_time);\n dateTime = new Date(\n year,\n month - 1,\n day,\n hms.hour,\n hms.minute,\n hms.second\n );\n timeArr.push(StampUtil.formatDateTime(dateTime)); //夜晚开始时间\n resolve(timeArr);\n };\n environment_interface.get_rosy_dawn_and_evening_glow_time();\n });\n }\n\n /**\n * 碰撞分析:是否开启碰撞状态:OK\n */\n analysisIntersectMode(bOpen: boolean) {\n const params = [bOpen]; // 是否开启碰撞,值域: true/false\n StampUtil.getLibax().global_contro_interface.intersect_mode(params);\n }\n\n /**\n * 限高分析:OK\n */\n analysisHeightLimit(\n params = {\n height: 60,\n speed: 5,\n heightPolygonColor: 0x88ffdc89,\n buildingColor: 0x88ff0000,\n points: [] as any,\n }\n ) {\n return new Promise((resolve) => {\n const height = params.height || 60; //限高高度\n const speed = params.speed || 5; //上升速度 单位:米/秒\n const heightPolygonColor = params.heightPolygonColor || 0x88ffdc89; //限高面颜色\n const buildingColor = params.buildingColor || 0x88ff0000; //超高建筑颜色\n const points = params.points || [];\n const coordinates = [];\n for (let i = 0; i < points.length; i++) {\n coordinates.push(points[i].x, points[i].y, points[i].z);\n }\n const paramsObj = [\n height,\n speed,\n buildingColor,\n heightPolygonColor,\n coordinates,\n ];\n const analysis_interface = StampAPI.LibAx.analysis_interface(\n StampUtil.getLibax()\n );\n analysis_interface.OnAnalysisFinished = function (data: any) {\n analysis_interface.OnAnalysisFinished = undefined;\n analysis_interface.OnFaild = undefined;\n resolve(data);\n };\n StampUtil.getLibax().analysis_interface.analysisHeightLimit(paramsObj);\n });\n }\n\n /**\n * 按照搜索结果限高分析:未测试\n * @param params\n * @returns\n */\n analysisHeightLimitByModel(\n params = {\n layers: \"\", //图层guid,guid,guid\n searchUrl: \"\", //对象搜索URL\n height: 60,\n speed: 5,\n heightPolygonColor: 0x88ffdc89,\n buildingColor: 0x88ff0000,\n points: [] as any,\n }\n ) {\n this.clearAnalysisResult();\n return new Promise((resolve, reject) => {\n const analysis_interface = StampUtil.getLibax().analysis_interface;\n analysis_interface.OnAnalysisFinished = (data: any) => {\n analysis_interface.OnAnalysisFinished = undefined;\n analysis_interface.OnFaild = undefined;\n resolve(data);\n };\n analysis_interface.OnFaild = () => {\n analysis_interface.OnAnalysisFinished = undefined;\n analysis_interface.OnFaild = undefined;\n reject();\n };\n\n const layers = params.layers || \"\"; // 格式:\"guid,guid,guid\"\n const url = params.searchUrl || \"\"; // 搜索url\n const height = params.height || 0;\n const speed = params.speed || 5;\n const heightPolygonColor = params.heightPolygonColor || 0x88ffdc89;\n const buildingColor = params.buildingColor || 0x88ff0000;\n const coordinates = params.points || [];\n const paramObj = [\n layers,\n url,\n height,\n speed,\n heightPolygonColor,\n buildingColor,\n coordinates,\n ];\n analysis_interface.analysisHeightLimitByModel(paramObj);\n });\n }\n\n /**\n * 视野分析:定点观察\n */\n fixedPointObserve(height: number, callbackPose: any = null) {\n return new Promise((resolve) => {\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n const analysis_interface = StampUtil.getLibax().analysis_interface;\n shape_creator_interface.OnShapeCreated = (data: any) => {\n shape_creator_interface.clear();\n shape_creator_interface.OnShapeCreated = undefined;\n analysis_interface.OnAnalysisFinished = (res: any) => {\n analysis_interface.OnAnalysisFinished = undefined;\n resolve(res);\n };\n analysis_interface.analysisFixedPointObserve([\n data.Longitude,\n data.Latitude,\n data.Altitude,\n data.Heading,\n data.Tilt,\n data.Roll,\n ]);\n typeof callbackPose == \"function\" && callbackPose(data);\n };\n shape_creator_interface.create_pose([height]);\n });\n }\n\n /**\n * 视野分析:定点观察(参数化)\n * @param pose\n */\n fixedPointObserveParams(pose: any) {\n const analysis_interface = StampUtil.getLibax().analysis_interface;\n analysis_interface.OnAnalysisFinished = undefined;\n analysis_interface.analysisFixedPointObserve([\n pose.Longitude,\n pose.Latitude,\n pose.Altitude,\n pose.Heading,\n pose.Tilt,\n pose.Roll,\n ]);\n }\n\n /**\n * 关闭选择状态,回到浏览状态\n */\n closeSelectState() {\n const element_interface = StampUtil.getLibax().element_interface;\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Element\n );\n handler.interface.OnGetSelectSet = null;\n element_interface.ObjectEdit(handler.CommandType.ElementCommand_Browser);\n StampUtil.setMouseCursor();\n }\n\n setMouseCursor(isFlag = 0) {\n switch (isFlag) {\n case 1: //正常浏览,手爪松手状态\n StampUtil.getLibax().LibAx.Cursor.normal = \"url(cursor/1.cur),default\";\n StampUtil.getLibax().LibAx.Cursor.edit = \"crosshair\";\n StampUtil.getLibax().LibAx.Cursor.reset();\n break;\n case 2: //拖拽:鼠标按下,手爪握拳状态\n StampUtil.getLibax().LibAx.Cursor.normal = \"url(cursor/2.cur),default\";\n StampUtil.getLibax().LibAx.Cursor.update();\n break;\n case 3: //拾取:箭头\n StampUtil.getLibax().LibAx.Cursor.normal = \"default\";\n StampUtil.getLibax().LibAx.Cursor.update();\n break;\n case 4: //十字\n StampUtil.getLibax().LibAx.Cursor.set_edit();\n StampUtil.getLibax().LibAx.Cursor.update();\n break;\n case 5: //箭头\n StampUtil.getLibax().LibAx.Cursor.set_select();\n StampUtil.getLibax().LibAx.Cursor.update();\n break;\n default: //正常状态\n StampUtil.getLibax().LibAx.Cursor.normal = \"url(cursor/1.cur),default\";\n StampUtil.getLibax().LibAx.Cursor.edit = \"crosshair\";\n StampUtil.getLibax().LibAx.Cursor.reset();\n break;\n }\n }\n\n /**\n * 清除分析结果\n */\n clearAnalysisResult() {\n const analysis_interface = StampAPI.LibAx.analysis_interface(\n StampUtil.getLibax()\n );\n analysis_interface.clear();\n\n StampUtil.closeSelectState();\n\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n shape_creator_interface.clear();\n\n //清除淹没分析结果\n if (StampUtil.submergePolygon != null) {\n StampUtil.deleteAnalysisRes(StampUtil.submergePolygon.guid);\n StampUtil.submergePolygon = null;\n }\n\n //清除等高线\n StampUtil.clearContourResult();\n\n //清除最优路径信息\n if (StampUtil.bestPathIconList && StampUtil.bestPathIconList.length > 0) {\n for (let i = 0; i < StampUtil.bestPathIconList.length; i++) {\n StampUtil.deleteAnalysisRes(StampUtil.bestPathIconList[i].guid);\n }\n StampUtil.bestPathIconList = [];\n }\n //清除通视分析信息\n if (StampUtil.lineSightIconList && StampUtil.lineSightIconList.length > 0) {\n for (let i = 0; i < StampUtil.lineSightIconList.length; i++) {\n StampUtil.deleteAnalysisRes(StampUtil.lineSightIconList[i].guid);\n }\n StampUtil.lineSightIconList = [];\n }\n if (\n StampUtil.insolationIconList &&\n StampUtil.insolationIconList.length > 0\n ) {\n for (let i = 0; i < StampUtil.insolationIconList.length; i++) {\n StampUtil.deleteAnalysisRes(StampUtil.insolationIconList[i].guid);\n }\n StampUtil.insolationIconList = [];\n }\n }\n //#endregion\n\n //#region 海洋\n\n //#region oceanology海洋插件\n /**\n * 创建海洋效果\n * @param point 基准位置\n * @returns\n */\n createOceanology(point: any) {\n return new Promise((resolve) => {\n const param = [\n \"oceanology_infinite_ocean_test\",\n point.x,\n point.y,\n point.z,\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.create_oceanology_infinite_ocean(param);\n });\n }\n\n /**\n * 海洋参数统一设置\n * @param params\n */\n setOceanologySetting(params: any) {\n params.underwater && StampUtil.setOceanologyUnderwater(params.underwater);\n params.bubbles && StampUtil.setOceanologyBubbles(params.bubbles);\n params.quadTree && StampUtil.setOceanologyQuadTree(params.quadTree);\n params.shorelineWetness &&\n StampUtil.setOceanologyShorelineWetness(params.shorelineWetness);\n params.gerstnerWaves &&\n StampUtil.setOceanologyGerstnerWaves(params.gerstnerWaves);\n params.surfaceScattering &&\n StampUtil.setOceanologySurfaceScattering(params.surfaceScattering);\n params.caustics && StampUtil.setOceanologyCaustics(params.caustics);\n params.foam && StampUtil.setOceanologyFoam(params.foam);\n }\n\n /**\n * 海洋显示开关\n * @param guid 海洋唯一编码\n * @param visible 是否可见\n * @returns\n */\n setOceanologyVisible(visible: boolean) {\n return new Promise((resolve) => {\n const param = [\"oceanology_infinite_ocean_test\", visible];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.set_scene_actor_visible(param);\n });\n }\n\n /**\n * 移除海洋效果\n * @returns\n */\n removeOceanology() {\n return new Promise((resolve) => {\n const param = [\"oceanology_infinite_ocean_test\"];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.remove_scene_actor(param);\n });\n }\n\n /**\n * 海洋地下水体参数设置\n */\n setOceanologyUnderwater(params: any) {\n return new Promise((resolve) => {\n const param = [\n \"oceanology_infinite_ocean_test\", // string m_name;\n params.underwaterMode != undefined ? params.underwaterMode : 0, // uint8 m_underwater_mode; // Underwater0; Volumetric Fog1;\n params.atmosphereLighting != undefined\n ? params.atmosphereLighting\n : 25.0, // double m_atmosphere_lighting;\n params.bandOffset != undefined ? params.bandOffset : 0.5, // double m_band_offset;\n params.bandOpacity != undefined ? params.bandOpacity : 1.0, // double m_band_opacity;\n params.bandWidth != undefined ? params.bandWidth : 1.0, // double m_band_width;\n params.darknessFadeDepth != undefined ? params.darknessFadeDepth : 1.0, // double m_darkness_fade_depth;\n params.deepColorDistance != undefined ? params.deepColorDistance : 0.85, // double m_deep_color_distance;\n params.depthColorAbsorption != undefined\n ? params.depthColorAbsorption\n : 1.5, // double m_depth_color_absorption;\n params.distortionIntensity != undefined\n ? params.distortionIntensity\n : 0.05, // double m_distortion_intensity;\n params.distortionScale != undefined ? params.distortionScale : 0.5, // double m_distortion_scale;\n params.distortionSpeed != undefined ? params.distortionSpeed : 0.25, // double m_distortion_speed; // DistortionSpeed\n params.fogDensity != undefined ? params.fogDensity : 1.0, // double m_fog_density; // FogDensity\n params.sunPower != undefined ? params.sunPower : 6.0, // double m_sun_power; // SunPower\n params.underwaterLightDepth != undefined\n ? params.underwaterLightDepth\n : 50000.0, // double m_underwater_light_depth; //UnderwaterLightDepth\n params.underwaterNoLightDepth != undefined\n ? params.underwaterNoLightDepth\n : 100000.0, // double m_underwater_no_light_depth; // UnderwaterNoLightDepth\n params.vignetteDark != undefined ? params.vignetteDark : 1.5, // double m_vignette_dark; // VignetteDark\n params.vignetteDistortion != undefined\n ? params.vignetteDistortion\n : 0.05, // double m_vignette_distortion; // VignetteDistortion\n params.vignetteEdge != undefined ? params.vignetteEdge : 1.0, // double m_vignette_edge; // VignetteEdge\n params.waterLineColorIntensity != undefined\n ? params.waterLineColorIntensity\n : 4.0, // double m_water_line_color_intensity; // WaterLineColorIntensity\n params.waterLineDistanceFalloff != undefined\n ? params.waterLineDistanceFalloff\n : -0.015, // double m_water_line_distance_falloff; // WaterLineDistanceFalloff\n params.waterLineRefraction != undefined\n ? params.waterLineRefraction\n : 0.005, // double m_water_line_refraction; // WaterLineRefraction\n params.waterLineRefractionWidth != undefined\n ? params.waterLineRefractionWidth\n : 0.5, // double m_water_line_refraction_width; // WaterLineRefractionWidth\n params.wetAlpha != undefined ? params.wetAlpha : 0.2, // double m_wet_alpha; // Wet Alpha\n params.wetHardness != undefined ? params.wetHardness : 0.25, // double m_wet_hardness; // Wet Hardness\n params.wetLocation != undefined ? params.wetLocation : 0.0, // double m_wet_location; // Wet Location\n params.wetRadius != undefined ? params.wetRadius : 1.0, // double m_wet_radius; // Wet Radius\n params.exponentialFogColorHigh != undefined\n ? [\n params.exponentialFogColorHigh.r,\n params.exponentialFogColorHigh.g,\n params.exponentialFogColorHigh.b,\n params.exponentialFogColorHigh.a,\n ]\n : [0.002797, 0.015643, 0.035, 1.0], // FLinearColor m_exponential_fog_color_high; // ExponentialFogColorHigh\n params.exponentialFogColorLow != undefined\n ? [\n params.exponentialFogColorLow.r,\n params.exponentialFogColorLow.g,\n params.exponentialFogColorLow.b,\n params.exponentialFogColorLow.a,\n ]\n : [0.0, 0.035, 0.02553, 1.0], // FLinearColor m_exponential_fog_color_low; // ExponentialFogColorLow\n params.sceneColorDeep != undefined\n ? [\n params.sceneColorDeep.r,\n params.sceneColorDeep.g,\n params.sceneColorDeep.b,\n params.sceneColorDeep.a,\n ]\n : [0.138695, 1.0, 0.715861, 1.0], // FLinearColor m_scene_color_deep; // SceneColorDeep\n params.sceneColorShallow != undefined\n ? [\n params.sceneColorShallow.r,\n params.sceneColorShallow.g,\n params.sceneColorShallow.b,\n params.sceneColorShallow.a,\n ]\n : [1.0, 1.0, 1.0, 1.0], // FLinearColor m_scene_color_shallow; // SceneColorShallow\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.set_oceanology_underwater(param);\n });\n }\n\n /**\n * 裁剪海洋海浪效果\n * @param param 裁剪参数\n * {\n * type: 裁剪类型:0-保留内部,1-保留外部\n * pixelSize:分辨率\n * points: 裁剪多边形点串\n * }\n */\n setOceanologyCoastlinePolygonCutMask(param: any) {\n const rectPoints = [];\n if (param.points && param.points.length > 0) {\n for (let i = 0; i < param.points.length; i++) {\n rectPoints.push(param.points[i].x, param.points[i].y);\n }\n }\n const params = [\n \"surface_coastline_test\", //海洋名称唯一值\n param.type == undefined ? 0 : param.type, // 1 保留外部 0保留内部\n param.pixelSize || 1024, //分辨率\n rectPoints, //[117.17316249304416, 34.257038266973836, 117.17316251620466, 34.255235289663695, 117.17533387882213, 34.255235289663695, 117.17533390198260, 34.257038266973829] // 设置为空数组代表不裁切\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.set_oceanology_coastline_polygon_cut_mask(params);\n }\n\n /**\n * 设置气泡\n */\n setOceanologyBubbles(params: any) {\n return new Promise((resolve) => {\n const param = [\n \"oceanology_infinite_ocean_test\",\n params.enableBubbles != undefined ? params.enableBubbles : 0, // uint8 m_enable_bubbles; // Enable Bubbles 0 1 2(Disable;Enable;Enable On Interaction)\n params.bubbleSpawnCount != undefined ? params.bubbleSpawnCount : 1000, // int32 m_bubble_spawn_count; // Bubble Spawn Count\n params.bubbleSpeed != undefined ? params.bubbleSpeed : 1.0, // double m_bubble_speed; // Bubble Speed\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.set_oceanology_bubbles(param);\n });\n }\n\n /**\n * 设置四叉树\n */\n setOceanologyQuadTree(params: any) {\n return new Promise((resolve) => {\n const param = [\n \"oceanology_infinite_ocean_test\",\n params.tileSize != undefined ? params.tileSize : 2400.0, // float m_tile_size;\n params.extentInTiles != undefined\n ? [params.extentInTiles.x, params.extentInTiles.y]\n : [64, 64], // UE:: Math:: TIntVector2 < int32 > m_extent_in_tiles;\n params.tessellationFactor != undefined ? params.tessellationFactor : 6, // int32 m_tessellation_factor;\n params.lodScale != undefined ? params.lodScale : 1.0, // float m_lod_scale;\n params.forceUpdateCount != undefined ? params.forceUpdateCount : 10, // int32 m_force_update_count;\n params.checkForUpdateInterval != undefined\n ? params.checkForUpdateInterval\n : 0.0, // float m_check_for_update_interval;\n params.maxWaveHeightMultiplier != undefined\n ? params.maxWaveHeightMultiplier\n : 5000.0, // double m_max_wave_height_multiplier;\n params.useFarMesh != undefined ? params.useFarMesh : 1, // uint8 m_use_far_mesh;\n params.farDistanceMeshExtent != undefined\n ? params.farDistanceMeshExtent\n : 200000.0, // float m_far_distance_mesh_extent;\n params.farDistanceCenterMeshExtent != undefined\n ? params.farDistanceCenterMeshExtent\n : 1.0, // float m_far_distance_center_mesh_extent;\n params.farDistanceMeshHeightOffset != undefined\n ? params.farDistanceMeshHeightOffset\n : -10, // float m_far_distance_mesh_height_offset;\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.set_oceanology_quad_tree(param);\n });\n }\n\n /**\n * 设置海岸线湿度\n */\n setOceanologyShorelineWetness(params: any) {\n return new Promise((resolve) => {\n const param = [\n \"oceanology_infinite_ocean_test\",\n params.enableWetness != undefined ? params.enableWetness : 1, // uint8 m_enable_wetness;\n params.bandOpacity != undefined ? params.bandOpacity : 10.0, // double m_band_opacity;\n params.moistureMetallic != undefined ? params.moistureMetallic : 0.75, // double m_moisture_metallic;\n params.moistureRoughness != undefined ? params.moistureRoughness : 0.1, // double m_moisture_roughness;\n params.wetHardness != undefined ? params.wetHardness : -10.0, // double m_wet_hardness;\n params.wetLocation != undefined ? params.wetLocation : 0.0, // double m_wet_location;\n params.wetRadius != undefined ? params.wetRadius : 400.0, // double m_wet_radius;\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.set_oceanology_shoreline_wetness(param);\n });\n }\n\n /**\n * 设置格斯特纳波浪\n */\n setOceanologyGerstnerWaves(params: any) {\n return new Promise((resolve) => {\n const param = [\n \"oceanology_infinite_ocean_test\",\n params.summarize != undefined ? params.summarize : 1, // FString m_summarize; //Waves_4 Waves_8(默认) Waves_12 Waves_16 Waves_20\n params.size != undefined ? params.size : 8.0, // double m_size; // m\n params.overallLength != undefined ? params.overallLength : 1.0, // double m_overall_length;\n params.globalAmplitude != undefined ? params.globalAmplitude : 1.0, // double m_global_amplitude;\n params.globalSpeed != undefined ? params.globalSpeed : 1.0, // double m_global_speed;\n params.choppiness != undefined ? params.choppiness : 3.0, // double m_choppiness;\n params.globalWaveDirection != undefined\n ? params.globalWaveDirection\n : 1.0, // double m_global_wave_direction;\n\n // base offset\n params.amplitude != undefined ? params.amplitude : 80.0, //double m_amplitude;\n params.steepness != undefined ? params.steepness : 1.0, //double m_steepness;\n params.speed != undefined ? params.speed : 1500.0, //double m_Speed;\n params.waveLength != undefined ? params.waveLength : 16384.0, //double m_waveLength;\n params.direction != undefined ? params.direction : 0.4, //double m_direction;\n params.directionOffset != undefined ? params.directionOffset : 0.5, //double m_direction_offset;\n params.directionOffset2 != undefined ? params.directionOffset2 : 0.75, //double m_direction_offset2;\n\n // Σ1\n params.amplitude1 != undefined ? params.amplitude1 : 50.0, //double m_amplitude1;\n params.steepness1 != undefined ? params.steepness1 : 1.0, //double m_steepness1;\n params.speed1 != undefined ? params.speed1 : 1000.0, //double m_Speed1;\n params.waveLength1 != undefined ? params.waveLength1 : 8192.0, //double m_waveLength1;\n params.direction1 != undefined ? params.direction1 : 0.425, //double m_direction1;\n\n // Σ2\n params.amplitude2 != undefined ? params.amplitude2 : 20.0, //double m_amplitude2;\n params.steepness2 != undefined ? params.steepness2 : 1.0, //double m_steepness2;\n params.speed2 != undefined ? params.speed2 : 1000.0, //double m_Speed2;\n params.waveLength2 != undefined ? params.waveLength2 : 4096.0, //double m_waveLength2;\n params.direction2 != undefined ? params.direction2 : 0.45, //double m_direction2;\n\n // Σ3\n params.amplitude3 != undefined ? params.amplitude3 : 10.0, //double m_amplitude3;\n params.steepness3 != undefined ? params.steepness3 : 1.0, //double m_steepness3;\n params.speed3 != undefined ? params.speed3 : 500.0, //double m_Speed3;\n params.waveLength3 != undefined ? params.waveLength3 : 2048.0, //double m_waveLength3;\n params.direction3 != undefined ? params.direction3 : 0.475, //double m_direction3;\n\n // Σ4\n params.amplitude4 != undefined ? params.amplitude4 : 5.0, //double m_amplitude4;\n params.steepness4 != undefined ? params.steepness4 : 1.0, //double m_steepness4;\n params.speed4 != undefined ? params.speed4 : 250, //double m_Speed4;\n params.waveLength4 != undefined ? params.waveLength4 : 1024.0, //double m_waveLength4;\n params.direction4 != undefined ? params.direction4 : 0.5, //double m_direction4;\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.set_oceanology_gerstner_waves(param);\n });\n }\n\n /**\n * 设置表面闪射\n */\n setOceanologySurfaceScattering(params: any) {\n return new Promise((resolve) => {\n const param = [\n \"oceanology_infinite_ocean_test\",\n params.cameraVectorPower != undefined ? params.cameraVectorPower : 2.0, //double m_camera_vector_power; // CameraVectorPower\n params.fadeLengthScattering != undefined\n ? params.fadeLengthScattering\n : 600000.0, //double m_fade_length_scattering; // FadeLengthScattering\n params.fadeOffsetScattering != undefined\n ? params.fadeOffsetScattering\n : 1000.0, //double m_fade_offset_scattering; // FadeOffsetScattering\n params.phaseGHigh != undefined ? params.phaseGHigh : 0.4, //double m_phase_g_high; // PhaseGHigh;\n params.phaseGLow != undefined ? params.phaseGLow : 0.75, //double m_phase_g_low; // PhaseGLow\n params.scatterBoost != undefined ? params.scatterBoost : 10.0, //double m_scatter_boost; // ScatterBoost\n params.surfaceScatteringExponential != undefined\n ? params.surfaceScatteringExponential\n : 1.0, //double m_surface_scattering_exponential; // SurfaceScatteringExponential\n params.surfaceScatteringIntensity != undefined\n ? params.surfaceScatteringIntensity\n : 2.0, //double m_surface_scattering_intensity; //SurfaceScatteringIntensity\n params.surfaceScatteringPower != undefined\n ? params.surfaceScatteringPower\n : 5.0, //double m_surface_scattering_power; // SurfaceScatteringPower\n params.surfaceScatteringRefractMax != undefined\n ? params.surfaceScatteringRefractMax\n : 0.5, //double m_surface_scattering_refract_max; // SurfaceScatteringRefractMax;\n params.surfaceScatteringRefractMin != undefined\n ? params.surfaceScatteringRefractMin\n : 1.0, //double m_surface_scattering_refract_min; //SurfaceScatteringRefractMin\n params.topDownExp != undefined ? params.topDownExp : 2.0, //double m_top_down_exp; //TopDownExp\n params.waterFresnelExponenth != undefined\n ? params.waterFresnelExponenth\n : 20.0, //double m_water_fresnel_exponenth; // Water Fresnel Exponenth\n params.waterFresnelRoughness != undefined\n ? params.waterFresnelRoughness\n : 0.2, //double m_water_fresnel_roughness; // Water Fresnel Roughness\n params.waterFresnelSpecular != undefined\n ? params.waterFresnelSpecular\n : 0.225, //double m_water_fresnel_specular; // Water Fresnel Specular\n params.waterRoughness != undefined ? params.waterRoughness : 0.05, //double m_water_roughness;// Water Roughness\n params.waterSpecular != undefined ? params.waterSpecular : 0.1125, //double m_water_specular;// Water Specular\n params.absorption != undefined\n ? [\n params.absorption.r,\n params.absorption.g,\n params.absorption.b,\n params.absorption.a,\n ]\n : [19.999998, 30.0, 25.0, 25.0], //FLinearColor m_absorption; // Absorption\n params.absorptionFar != undefined\n ? [\n params.absorptionFar.r,\n params.absorptionFar.g,\n params.absorptionFar.b,\n params.absorptionFar.a,\n ]\n : [10.000002, 134.999985, 200.0, 35.0], //FLinearColor m_absorption_far;// Absorption Far\n params.scattering != undefined\n ? [\n params.scattering.r,\n params.scattering.g,\n params.scattering.b,\n params.scattering.a,\n ]\n : [0.003677, 0.124772, 0.223228, 1.0], //FLinearColor m_scattering; //Scattering\n params.scatteringFar != undefined\n ? [\n params.scatteringFar.r,\n params.scatteringFar.g,\n params.scatteringFar.b,\n params.scatteringFar.a,\n ]\n : [0.0, 0.25, 0.3, 0.05], //FLinearColor m_scattering_far; // Scattering Far\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.set_oceanology_surface_scattering(param);\n });\n }\n\n /**\n * 设置焦散\n */\n setOceanologyCaustics(params: any) {\n return new Promise((resolve) => {\n const param = [\n \"oceanology_infinite_ocean_test\",\n params.causticsBrightness != undefined\n ? params.causticsBrightness\n : 10.0, //double m_caustics_brightness; // CausticsBrightness\n params.causticsFadeInDistance != undefined\n ? params.causticsFadeInDistance\n : 1000.0, //double m_caustics_fade_in_distance; // CausticsFadeInDistance\n params.causticsScale != undefined ? params.causticsScale : 16.0, //double m_caustics_scale; // CausticsScale\n params.fadeDistance != undefined ? params.fadeDistance : 1.0, //double m_fade_distance; // FadeDistance\n params.lightParallax != undefined ? params.lightParallax : 1.0, //double m_light_parallax; //LightParallax\n params.multiplyRefraction != undefined\n ? params.multiplyRefraction\n : 1.333, //double m_multiply_refraction;// MultiplyRefraction\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.set_oceanology_caustics(param);\n });\n }\n\n /**\n * 设置泡沫\n */\n setOceanologyFoam(params: any) {\n return new Promise((resolve) => {\n const param = [\n \"oceanology_infinite_ocean_test\",\n params.foamDistortionIntensity != undefined\n ? params.foamDistortionIntensity\n : 30.0, //double m_foam_distortion_intensity; //FoamDistortionIntensity\n params.foamDistortionScale != undefined\n ? params.foamDistortionScale\n : 1.0, //double m_foam_distortion_scale; // FoamDistortionScale\n params.foamDistortionSpeed != undefined\n ? params.foamDistortionSpeed\n : 0.5, //double m_foam_distortion_speed; //FoamDistortionSpeed\n params.foamNormals != undefined ? params.foamNormals : 1.0, //double m_foam_normals; //FoamNormals\n params.UVBubbles != undefined ? params.UVBubbles : 2.0, //double m_uv_bubbles; // UVBubbles\n params.UVFoam != undefined ? params.UVFoam : 32.0, //double m_uv_foam; //UVFoam\n params.bubblesNormals != undefined ? params.bubblesNormals : 1.0, //double m_bubbles_normals; // BubblesNormals\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.set_oceanology_foam(param);\n });\n }\n //#endregion\n\n //#region FluildFlux插件的海洋\n /**\n * 创建FluildFlux海洋\n */\n createOceanologyFluidFlux(point: any) {\n return new Promise((resolve) => {\n const param = [\n \"oceanology_fluid_flux_test\",\n \"surface_coastline_test\",\n \"ocean_wave_test\",\n point.x,\n point.y,\n Number(point.m),\n Number(point.z),\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.create_oceanology_fluid_flux(param);\n });\n }\n\n /**\n * FluildFlux海洋参数统一设置\n * @param params\n */\n setOceanologyFluidFluxSetting(params: any) {\n params.coastlineDomain &&\n StampUtil.setOceanologyCoastlineDomain(params.coastlineDomain);\n params.coastline && StampUtil.setOceanologyCoastline(params.coastline);\n params.coastlineColorPreset &&\n StampUtil.setOceanologyCoastlineColorPreset(params.coastlineColorPreset);\n params.coastlineColorPresetData &&\n StampUtil.setOceanologyCoastlineColorPresetData(\n params.coastlineColorPresetData\n );\n params.oceanWaveShoreWater &&\n StampUtil.setOceanologyOceanWaveShoreWater(params.oceanWaveShoreWater);\n params.oceanWaveDistantWater &&\n StampUtil.setOceanologyOceanWaveDistantWater(\n params.oceanWaveDistantWater\n );\n }\n\n /**\n * 移除FluildFlux海洋\n */\n removeFluidFluxSceneActor() {\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.remove_scene_actor([\"oceanology_fluid_flux_test\"]);\n oceanology_interface.remove_scene_actor([\"surface_coastline_test\"]);\n oceanology_interface.remove_scene_actor([\"ocean_wave_test\"]);\n }\n\n /**\n * 设置coastline_domain\n */\n setOceanologyCoastlineDomain(params: any) {\n return new Promise((resolve) => {\n const param = [\n \"surface_coastline_test\",\n params.affectWorld != undefined && !params.affectWorld ? 0 : 1, //uint8 m_affect_world;\n params.areaResolution != undefined\n ? [params.areaResolution.x, params.areaResolution.y]\n : [512, 512], //UE:: Math:: TIntVector2 < int32 > m_area_resolution;\n params.areaWorldSize != undefined\n ? [params.areaWorldSize.x, params.areaWorldSize.y]\n : [2.56, 2.56], //FVector2D m_area_world_size;\n params.areaWorldPixelSize != undefined\n ? params.areaWorldPixelSize * 100\n : 500, //int32 m_area_world_pixel_size;\n params.areaWorldHeight != undefined\n ? params.areaWorldHeight * 100\n : 10000.0, //double m_area_world_height;\n params.coastlineMaxWidth != undefined\n ? params.coastlineMaxWidth * 100\n : 4000.0, //double m_coastline_max_width;\n params.distanceFieldFullPrecision != undefined\n ? params.distanceFieldFullPrecision\n : 1, //uint8 m_distance_field_full_precision;\n params.maxTileSize != undefined ? params.maxTileSize : 300, //int32 m_max_tile_size;\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.set_oceanology_coastline_domain(param);\n });\n }\n\n /**\n * 设置coastline\n */\n setOceanologyCoastline(params: any) {\n return new Promise((resolve) => {\n const param = [\n \"surface_coastline_test\",\n params.surfaceMeshMode != undefined ? params.surfaceMeshMode : 5, //uint8 m_surface_mesh_mode; 0 Invisible_ExternalMesh, 1 Domaian_GeneratedMesh 2 Domaian_SurfaceMesh 3 DomaianDivide_Instanced 4 InfiniteGrid_Instanced 5 InfiniteGrid_Niagara\n params.surfaceMeshDensity != undefined ? params.surfaceMeshDensity : 3, // 0 Plane_Custom 1 Plane_16*16 2 Plane_32*32 3 Plane_64*64 4 Plane_128*128 5 Plane_256*256 6 Plane_512*512 7 Plane_1024*1024\n params.coastlineDomainSize != undefined\n ? [\n params.coastlineDomainSize.x,\n params.coastlineDomainSize.y,\n params.coastlineDomainSize.z,\n ]\n : [256000.0, 256000.0, 10000.0], //FVector3d m_coastline_domain_size;\n params.infiniteGridLevelsOver != undefined\n ? params.infiniteGridLevelsOver\n : 5, //int32 m_infinite_grid_levels_over;\n params.infiniteGridLevelsUnder != undefined\n ? params.infiniteGridLevelsUnder\n : 2, //int32 m_infinite_grid_levels_under;\n params.infiniteGridMeshScale != undefined\n ? params.infiniteGridMeshScale\n : 14.0, //double m_infinite_grid_mesh_scale;\n params.infiniteGridBoundsScale != undefined\n ? params.infiniteGridBoundsScale\n : 100.0, //uint8 m_generate_edge_padding;\n params.underwaterVisibility != undefined\n ? params.underwaterVisibility\n : 0, // uint8 m_underwater_visibility 地下水体显示方式 0 AutomaticDection 1 AlwaysVisible 2 AlwaysInvisible 3 InsideContainer\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.set_oceanology_coastline(param);\n });\n }\n\n /**\n * 设置颜色预设资源\n */\n setOceanologyCoastlineColorPreset(params: any) {\n return new Promise((resolve) => {\n const param = [\n params.guid || \"surface_coastline_test\",\n params.type != undefined ? params.type : 1, //uint8 m_type; // 0 Base Color Preset默认值(CP_OceanBlue_01.CP_OceanBlue_01) 1 Shore Color Preset默认值(CP_ShoreGreen_05.CP_ShoreGreen_05) 2 Painter Color Preset默认值(CP_ShoreDirt_01.CP_ShoreDirt_01)\n `/Engine/FluidFlux/Surface/Templates/Color/${\n params.presetAssetName != undefined\n ? params.presetAssetName + \".\" + params.presetAssetName\n : \"CP_OceanBlue_01.CP_OceanBlue_01\"\n }`, //FString m_preset_asset_name; Engine/Content/FluidFlux/Surface/Templates/Color/目录下的资源\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.set_oceanology_coastline_color_preset(param);\n });\n }\n\n /**\n * 获取颜色资源参数值\n */\n getOceanologyCoastlineColorPresetData(assetName: string) {\n return new Promise((resolve) => {\n const param = [\n `/Engine/FluidFlux/Surface/Templates/Color/${\n assetName != undefined\n ? assetName + \".\" + assetName\n : \"CP_OceanBlue_01.CP_OceanBlue_01\"\n }`, // m_asset_name\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.get_oceanology_coastline_color_preset_data(param);\n });\n }\n\n /**\n * 设置颜色资源参数\n */\n setOceanologyCoastlineColorPresetData(params: any) {\n return new Promise((resolve) => {\n const param = [\n \"surface_coastline_test\",\n params.type != undefined ? params.type : 0, //uint8 m_type; // 0 Base Color Preset默认值(CP_OceanBlue_01.CP_OceanBlue_01) 1 Shore Color Preset默认值(CP_ShoreGreen_05.CP_ShoreGreen_05) 2 Painter Color Preset默认值(CP_ShoreDirt_01.CP_ShoreDirt_01)\n params.clarity != undefined ? params.clarity : 1.0, //double m_clarity;// \"Clarity\"\n params.scattering != undefined\n ? [\n params.scattering.r,\n params.scattering.g,\n params.scattering.b,\n params.scattering.a,\n ]\n : [0.6, 1.0, 1.0, 0.00003], //FLinearColor m_scattering;\n params.absorption != undefined\n ? [\n params.absorption.r,\n params.absorption.g,\n params.absorption.b,\n params.absorption.a,\n ]\n : [120.0, 250.0, 350.0, 4.0], //FLinearColor m_absorption;\n params.overlay != undefined\n ? [\n params.overlay.r,\n params.overlay.g,\n params.overlay.b,\n params.overlay.a,\n ]\n : [0.117708, 0.294268, 0.470833, 0.0], //FLinearColor m_overlay;\n params.behind != undefined\n ? [params.behind.r, params.behind.g, params.behind.b, params.behind.a]\n : [1.0, 1.2, 1.15, 0.65], //FLinearColor m_behind;\n params.phaseG != undefined ? params.phaseG : 0.0, //double m_phaseG; // \"PhaseG\"\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.set_oceanology_coastline_color_preset_data(param);\n });\n }\n\n /**\n * 设置wave_shore_water\n */\n setOceanologyOceanWaveShoreWater(params: any) {\n return new Promise((resolve) => {\n const param = [\n \"ocean_wave_test\",\n params.waveProfileSize != undefined\n ? params.waveProfileSize * 100\n : 500.0, //double m_wave_profile_size;\n params.waveMovementSpeed != undefined ? params.waveMovementSpeed : 0.29, //double m_wave_movement_speed;\n params.waveAnimationSpeed != undefined\n ? params.waveAnimationSpeed\n : 0.65, //double m_wave_animation_speed;\n params.waveProfileAreaWidth != undefined\n ? params.waveProfileAreaWidth\n : 0.5, //double m_wave_profile_area_width;\n params.waveProfileAreaBlend != undefined\n ? params.waveProfileAreaBlend\n : 4.0, //double m_wave_profile_area_blend;\n params.waveAnimationDistance != undefined\n ? params.waveAnimationDistance\n : 2.37, //double m_wave_animation_distance;\n params.shoreGroundPrediction != undefined\n ? params.shoreGroundPrediction\n : 250.0, //double m_shore_ground_prediction;\n params.shoreColorDistance != undefined\n ? params.shoreColorDistance\n : 20000.0, //double m_shore_color_distance;\n params.shoreColorHeight != undefined ? params.shoreColorHeight : 1600.0, //double m_shore_color_height;\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.set_oceanology_ocean_wave_shore_water(param);\n });\n }\n\n /**\n * 设置wave_distant_water\n */\n setOceanologyOceanWaveDistantWater(params: any) {\n return new Promise((resolve) => {\n const param = [\n \"ocean_wave_test\",\n params.oceanWaveLength != undefined\n ? params.oceanWaveLength * 100\n : 11500.0, //double m_ocean_wave_length;\n params.oceanWaveChoppiness != undefined\n ? params.oceanWaveChoppiness\n : 1.5, //double m_ocean_wave_choppiness;\n params.oceanWaveHeight != undefined\n ? params.oceanWaveHeight * 100\n : 230.0, //double m_ocean_wave_height;\n params.oceanWaveOffset != undefined ? params.oceanWaveOffset : 0.0, //double m_ocean_wave_offset;\n params.oceanWaveWindDirection != undefined\n ? [params.oceanWaveWindDirection.x, params.oceanWaveWindDirection.y]\n : [-150.0, 50], //FVector2D m_ocean_wave_wind_direction;\n params.oceanWaveWindPush != undefined\n ? params.oceanWaveWindPush\n : 0.003, //double m_ocean_wave_wind_push;\n params.oceanWaveAnimationSpeed != undefined\n ? params.oceanWaveAnimationSpeed\n : 0.25, //double m_ocean_wave_animation_speed;\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.set_oceanology_ocean_wave_distant_water(param);\n });\n }\n //#endregion\n\n //#region FluildFlux插件的淹没模拟\n /**\n * 淹没模拟\n * @param modifierName 水源名称(唯一 可以使用GUID)\n * @param simulationName 仿真名称(唯一 可以使用GUID)\n * @param surfaceName 水面名称(唯一 可以使用GUID)\n * @param waterLocation 水源位置\n * @param simulationLocation 仿真模拟矩形范围的中心点位置 : 注意水源\n */\n createOceanologySubmergedAnalysis(\n modifierName: string,\n simulationName: string,\n surfaceName: string,\n waterLocation: any,\n simulationLocation: any\n ) {\n return new Promise((resolve) => {\n const param = [\n modifierName, // 水源名称\n simulationName, // 仿真名称\n surfaceName, // 仿真引用的水面(该actor坐标必须与flux_simulation一样,下面直接会引用flux_simulation坐标)\n waterLocation.x,\n waterLocation.y,\n waterLocation.z, // 水源位置\n simulationLocation.x,\n simulationLocation.y,\n simulationLocation.z, // 仿真位置\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = async function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n // StampUtil.setFluxSimulationState(1);//1代表开始\n resolve(data);\n };\n oceanology_interface.create_oceanology_submerged_analysis(param);\n });\n }\n\n setOceanologySubmergedScale(modifierName: string, scale: any) {\n const param = [\n modifierName, // 水源名称\n scale.x,\n scale.y,\n scale.z, // 水源缩放\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.set_actor_scale(param);\n }\n\n setOceanologySubmergedRotate(modifierName: string, rotate: any) {\n const param = [\n modifierName, // 水源名称\n rotate.x,\n rotate.y,\n rotate.z, // 水源缩放\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.set_actor_rotation(param);\n }\n\n /**\n * FluildFlux淹没参数设置\n * @param params\n */\n async setOceanSubmergedSetting(\n modifierName: string,\n simulationName: string,\n params: any,\n selectParam: any = null\n ) {\n switch (selectParam) {\n case \"fluxModifierSource\":\n params.fluxModifierSource &&\n (await StampUtil.setFluxModifierSource(\n modifierName,\n params.fluxModifierSource\n ));\n break;\n case \"fluxSimulationPreview\":\n params.fluxSimulationPreview &&\n (await StampUtil.setFluxSimulationPreview(\n simulationName,\n params.fluxSimulationPreview\n ));\n break;\n case \"fluxSimulationTime\":\n params.fluxSimulationTime &&\n (await StampUtil.setFluxSimulationTime(\n simulationName,\n params.fluxSimulationTime\n ));\n break;\n case \"fluxSimulationDomain\":\n params.fluxSimulationDomain &&\n (await StampUtil.setFluxSimulationDomain(\n simulationName,\n params.fluxSimulationDomain\n ));\n break;\n case \"fluxSimulationPhysics\":\n params.fluxSimulationPhysics &&\n (await StampUtil.setFluxSimulationPhysics(\n simulationName,\n params.fluxSimulationPhysics\n ));\n break;\n case \"fluxSimulationFoam\":\n params.fluxSimulationFoam &&\n (await StampUtil.setFluxSimulationFoam(\n simulationName,\n params.fluxSimulationFoam\n ));\n break;\n case \"fluxSimulationWetmap\":\n params.fluxSimulationWetmap &&\n (await StampUtil.setFluxSimulationWetmap(\n simulationName,\n params.fluxSimulationWetmap\n ));\n break;\n default:\n params.fluxModifierSource &&\n (await StampUtil.setFluxModifierSource(\n modifierName,\n params.fluxModifierSource\n ));\n params.fluxSimulationPreview &&\n (await StampUtil.setFluxSimulationPreview(\n simulationName,\n params.fluxSimulationPreview\n ));\n params.fluxSimulationTime &&\n (await StampUtil.setFluxSimulationTime(\n simulationName,\n params.fluxSimulationTime\n ));\n params.fluxSimulationDomain &&\n (await StampUtil.setFluxSimulationDomain(\n simulationName,\n params.fluxSimulationDomain\n ));\n params.fluxSimulationPhysics &&\n (await StampUtil.setFluxSimulationPhysics(\n simulationName,\n params.fluxSimulationPhysics\n ));\n params.fluxSimulationFoam &&\n (await StampUtil.setFluxSimulationFoam(\n simulationName,\n params.fluxSimulationFoam\n ));\n params.fluxSimulationWetmap &&\n (await StampUtil.setFluxSimulationWetmap(\n simulationName,\n params.fluxSimulationWetmap\n ));\n break;\n }\n }\n\n /**\n * 清除淹没模拟\n */\n clearOceanologySubmerged(\n modifierName: string,\n simulationName: string,\n surfaceName: string\n ) {\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.remove_scene_actor([modifierName]);\n oceanology_interface.remove_scene_actor([simulationName]);\n oceanology_interface.remove_scene_actor([surfaceName]);\n }\n\n /**\n * 添加水源(额外添加水源-暂不用)\n */\n addFluxModifierSource(params: any) {\n return new Promise((resolve) => {\n const param = [\n \"flux_modifier_source2\", //FString m_actor_name;\n params.point.x,\n params.point.y,\n params.point.z, //vector_3d m_water_source_center;\n params.volume != undefined ? params.volume : 0.1, //double m_volume;\n params.velocity != undefined ? params.velocity : [0.0, 0.0], //FVector2D m_velocity;\n params.shape != undefined ? params.shape : 2, //uint8 m_shape; // Fill Circle Rect\n params.mode != undefined ? params.mode : 2, //uint8 m_mode; // Add Set Adjust\n params.edge != undefined ? params.edge : 12.0, //double m_edge;\n params.intensity != undefined ? params.intensity : 1.0, //double m_intensity;\n params.duration != undefined ? params.duration : -1.0, //double m_duration;\n params.sortPriority != undefined ? params.sortPriority : 1000, //int32 m_sort_priority;\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = async function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.add_flux_modifier_source(param);\n });\n }\n\n /**\n * 设置水源参数\n */\n setFluxModifierSource(modifierName: string, params: any) {\n return new Promise((resolve) => {\n const param = [\n modifierName, //\"flux_modifier_source\",//FString m_actor_name;\n params.volume != undefined ? params.volume : 0.1, //double m_volume;\n params.velocity != undefined\n ? [params.velocity.x, params.velocity.y]\n : [0.0, 0.0], //FVector2D m_velocity;\n params.shape != undefined ? params.shape : 2, //uint8 m_shape; // Fill Circle Rect\n params.mode != undefined ? params.mode : 2, //uint8 m_mode; // Add Set Adjust\n params.edge != undefined ? params.edge : 12.0, //double m_edge;\n params.intensity != undefined ? params.intensity : 1.0, //double m_intensity;\n params.duration != undefined ? params.duration : -1.0, //double m_duration;\n params.sortPriority != undefined ? params.sortPriority : 1000, //int32 m_sort_priority;\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = async function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n\n oceanology_interface.set_flux_modifier_source(param);\n });\n }\n\n /**\n * 设置水源重新仿真\n */\n setFluxModifierSourceRestartSimulation(modifierName: string) {\n const param = [modifierName];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.set_flux_modifier_source_restart_simulation(param);\n }\n\n /**\n * 设置仿真state\n * @param state [0:stop 1:start 2:reset]\n */\n setFluxSimulationState(simulationName: string, state: number) {\n return new Promise((resolve) => {\n const param = [\n simulationName, //\"flux_simulation\",\n state, // 0 stop 1 start 2 reset\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = async function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.set_flux_simulation_state(param);\n });\n }\n\n /**\n * 设置仿真preview\n */\n setFluxSimulationPreview(simulationName: string, params: any) {\n return new Promise((resolve) => {\n const param = [\n simulationName, // \"flux_simulation\",\n params.simulationPreviewDuration != undefined\n ? params.simulationPreviewDuration\n : 160.0, // double m_simulation_preview_duration;\n params.simulationPreviewFramerate != undefined\n ? params.simulationPreviewFramerate\n : 250, // double m_Simulation_preview_framerate;\n params.heightmapUpdateFrequency != undefined\n ? params.heightmapUpdateFrequency\n : 0.4, // double m_heightmap_update_frequency;\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = async function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.set_flux_simulation_preview(param);\n });\n }\n\n /**\n * 设置仿真time\n */\n setFluxSimulationTime(simulationName: string, params: any) {\n return new Promise((resolve) => {\n const param = [\n simulationName, // \"flux_simulation\",\n params.iterationsPerSecond != undefined\n ? params.iterationsPerSecond\n : 120, //int32 m_iterations_per_second; // \"IterationsPerSecond\"\n params.iterationsPerFrameMax != undefined\n ? params.iterationsPerFrameMax\n : 3, //int32 m_iterations_per_frame_max; // Iterations Per Frame Max\n params.maxIterationsAccumulatedMax != undefined\n ? params.maxIterationsAccumulatedMax\n : 4, //int32 m_max_iterations_accumulated_max; // MaxIterations Accumulated Max\n params.simulationDeltaTime != undefined\n ? params.simulationDeltaTime\n : 0.17, //double m_simulation_delta_time; // \"SimulationDeltaTime\"\n params.runtimeCaptureDelay != undefined\n ? params.runtimeCaptureDelay\n : 0.0, //double m_runtime_capture_delay; //Runtime Capture Delay\n params.simulationDuration != undefined\n ? params.simulationDuration\n : -1.0, //double m_simulation_duration; // Simulation Duration\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = async function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.set_flux_simulation_time(param);\n });\n }\n\n /**\n * 设置仿真domain\n */\n setFluxSimulationDomain(simulationName: string, params: any) {\n return new Promise((resolve) => {\n // var lonlatBox = {\n // minLon: 0,\n // maxLon: 0,\n // minLat: 0,\n // maxLat: 0\n // }\n // for (var i = 0; i < points.length; i++) {\n // lonlatBox.minLon = lonlatBox.minLon == 0 ? points[i].x : Math.min(lonlatBox.minLon, points[i].x);\n // lonlatBox.minLat = lonlatBox.minLat == 0 ? points[i].y : Math.min(lonlatBox.minLat, points[i].y);\n // lonlatBox.maxLon = lonlatBox.maxLon == 0 ? points[i].x : Math.max(lonlatBox.maxLon, points[i].x);\n // lonlatBox.maxLat = lonlatBox.maxLat == 0 ? points[i].y : Math.max(lonlatBox.maxLat, points[i].y);\n // }\n // var pointLeftTop = {\n // x: lonlatBox.minLon,\n // y: lonlatBox.minLat,\n // z: 0\n // }\n // var pointRightTop = {\n // x: lonlatBox.maxLon,\n // y: lonlatBox.minLat,\n // z: 0\n // }\n // var pointLeftBottom = {\n // x: lonlatBox.minLon,\n // y: lonlatBox.maxLat,\n // z: 0\n // }\n // var width = StampUtil.calcPointDistance(pointLeftTop, pointRightTop);\n // var height = StampUtil.calcPointDistance(pointLeftTop, pointLeftBottom);\n // var widthPix = Math.round(width * 100 / 2);\n // var heightPix = Math.round(height * 100 / 2);\n const param = [\n simulationName, //\"flux_simulation\",\n params.heightWetFloatPrecision != undefined\n ? params.heightWetFloatPrecision\n : 1, //uint8 m_height_wet_float_precision; // \"HeightWetFloatPrecision\" 0 false 1 true\n params.areaResolution != undefined\n ? [params.areaResolution.x, params.areaResolution.y]\n : [512, 512], //UE:: Math:: TIntVector2 < int32 > m_area_resolution;// \"AreaResolution\"\n params.areaWorldSize != undefined\n ? [params.areaWorldSize.x, params.areaWorldSize.y]\n : [204.8, 204.8], //FVector2D m_area_world_size; // \"AreaWorldSize(m)\" 仿真区域多少米宽高\n params.areaWorldBlend != undefined\n ? [\n params.areaWorldBlend.x,\n params.areaWorldBlend.y,\n params.areaWorldBlend.z,\n params.areaWorldBlend.m,\n ]\n : [0.0, 0.0, 0.0, 0.0], //UE:: Math:: TVector4 < float > m_area_world_blend;\n params.areaWorldPixelSize != undefined\n ? params.areaWorldPixelSize * 100\n : 40.0, //double m_area_world_pixel_size; //Area World Pixel Size\n params.areaWorldHeight != undefined\n ? params.areaWorldHeight * 100\n : 1250.0, //double m_area_world_height;\n params.referencePlane != undefined ? params.referencePlane : 0.25, //double m_reference_plane;\n params.slopeScale != undefined ? params.slopeScale : 35.0, //double m_slope_scale;\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n\n oceanology_interface.set_flux_simulation_domain(param);\n });\n }\n\n /**\n * 设置仿真physics\n */\n setFluxSimulationPhysics(simulationName: string, params: any) {\n return new Promise((resolve) => {\n const param = [\n simulationName, // \"flux_simulation\",\n params.gravity != undefined ? params.gravity : 9.807, //double m_gravity; // Gravity\n params.damping != undefined ? params.damping : 0.02, //double m_damping; // Damping\n params.friction != undefined ? params.friction : 0.0002, //double m_friction; //Friction\n params.velocityLimit != undefined ? params.velocityLimit : 10.0, //double m_velocity_limit; // Velocity Limit\n params.accelerationLimit != undefined ? params.accelerationLimit : 16.0, //double m_acceleration_limit;// Acceleration Limit\n params.fluidTransportLimit != undefined\n ? params.fluidTransportLimit\n : 500.0, //double m_fluid_transport_limit; //Fluid Transport Limit\n params.modifiersVelocityScale != undefined\n ? params.modifiersVelocityScale\n : 1.0, //double m_modifiers_velocity_scale; // Modifiers Velocity Scale\n params.overshootingBlend != undefined ? params.overshootingBlend : 0.3, //double m_overshooting_blend; // Overshooting Blend\n params.overshootingEdge != undefined ? params.overshootingEdge : 2.0, //double m_overshooting_edge; // Overshooting Edge\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.set_flux_simulation_physics(param);\n });\n }\n\n /**\n * 设置仿真foam\n */\n setFluxSimulationFoam(simulationName: string, params: any) {\n return new Promise((resolve) => {\n const param = [\n simulationName, // \"flux_simulation\",\n params.foamFadeSpeed != undefined ? params.foamFadeSpeed : 0.0015, //double m_foam_fade_speed;// Foam Fade Speed\n params.foamShallowDepth != undefined ? params.foamShallowDepth : 400.0, //double m_foam_shallow_depth;// Foam Shallow Depth\n params.foamShallowGenerate != undefined\n ? params.foamShallowGenerate\n : 0.1, //double m_foam_shallow_generate; // Foam Shallow Generate\n params.foamWaveGenerate != undefined ? params.foamWaveGenerate : 0.0, //double m_foam_wave_generate;// Foam Wave Generate\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.set_flux_simulation_foam(param);\n });\n }\n\n /**\n * 设置仿真wetmap\n */\n setFluxSimulationWetmap(simulationName: string, params: any) {\n return new Promise((resolve) => {\n const param = [\n simulationName, //\"flux_simulation\",\n params.wetmapDryingSpeed != undefined ? params.wetmapDryingSpeed : 0.1, //double m_wetmap_drying_speed;// Wetmap Drying Speed\n params.wetmapDryingDelay != undefined ? params.wetmapDryingDelay : 0.5, //double m_wetmap_drying_delay;// Wetmap Drying Delay\n params.evaporationHeight != undefined\n ? params.evaporationHeight\n : 0.001, //double m_evaporation_height;// Evaporation Height\n params.surfaceSmoothing != undefined ? params.surfaceSmoothing : 0.3, //double m_surface_smoothing;// Surface Smoothing\n ];\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.set_flux_simulation_wetmap(param);\n });\n }\n\n addWaterSourceDetect(param: any) {\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.add_water_source_detect(param);\n }\n\n getWaterSourceDetectState(param: any) {\n return new Promise((resolve) => {\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.get_water_source_detect_state(param);\n });\n }\n\n removeWaterSourceDetect(params: any) {\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n\n for (let i = 0; i < params.length; i++) {\n oceanology_interface.remove_scene_actor([params[i]]);\n }\n }\n\n addSufaceMeshGenerator(params: any) {\n return new Promise((resolve) => {\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.add_water_source_detect(params);\n });\n }\n\n getSubmergedAnalysisInfo(params: any) {\n return new Promise((resolve) => {\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.OnOceanology = function (data: any) {\n oceanology_interface.OnOceanology = function (data: any) {};\n resolve(data);\n };\n oceanology_interface.get_submerged_analysis_info(params);\n });\n }\n //#endregion\n\n // #region 赤潮模拟\n addFluxWorldBrush(param: any) {\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.add_flux_world_brush(param);\n }\n\n addFluxWorldPainter(point: any) {\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n\n const param = [1, \"flux_world_painter\", point];\n oceanology_interface.add_flux_world_painter(param);\n }\n\n setFluxWorldBrush = function (polygon: any, uOffset = 0, vOffset = 0) {\n const rectPoints = [];\n if (polygon && polygon.length > 0) {\n for (let i = 0; i < polygon.length; i++) {\n rectPoints.push(polygon[i].x, polygon[i].y);\n }\n }\n\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n\n const param = [\n \"flux_world_brush\", // 名字\n 1.0, // TargetValue 0-1代表强度值 // 这个用来模拟海浪赤潮(严重中等一般)\n 1.0, // BlendAdditive 0-1代表强度值\n 1.0, // ShapeHardness 0-1000代表画刷边缘淡化系数\n 1.0, // ShapeRoundness 0-1形状曲率 0 方形 1 圆形\n 0, // Canvas 0-2(BP_FluxColorPainter, BP_FluxCoastErase, BP_FluxWaveScale)\n rectPoints,\n uOffset,\n vOffset,\n ];\n\n oceanology_interface.set_flux_world_brush(param);\n };\n\n setFluxWorldPainter = function (width: number, height: number, size: number) {\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n const param = [\n \"flux_world_painter\", // 名字\n width, // AreaResolution 区域分辨率Int\n height, // AreaResolution 区域分辨率Int\n size, // AreaPixelSize 每个像素的大小 cm\n ];\n\n oceanology_interface.set_flux_world_painter(param);\n };\n\n setScenePainterActor() {\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n\n const param = [\"surface_coastline_test\", \"flux_world_painter\"];\n oceanology_interface.set_scene_painter_actor(param);\n }\n\n removePainterActor(param: any) {\n const oceanology_interface = StampAPI.LibAx.oceanology_interface(\n StampUtil.getLibax()\n );\n oceanology_interface.remove_scene_actor([\"flux_world_painter\"]);\n for (let i = 0; i < param.length; i++) {\n oceanology_interface.remove_scene_actor([param[i]]);\n }\n }\n\n // #endregion\n\n //#endregion\n\n //#region 视频模块\n /**\n * 获取GB28181摄像头列表\n */\n getCameraList(serverip: string) {\n return new Promise((resolve) => {\n const gb28181_camera_manager_interface =\n StampAPI.LibAx.gb28181_camera_manager_interface(StampUtil.getLibax());\n gb28181_camera_manager_interface.OnGB28181DeviceInfo = function (\n data: any\n ) {\n resolve(data);\n };\n const params = [serverip, \"Json\"];\n gb28181_camera_manager_interface.query_gb28181_device_info(params);\n });\n }\n\n /**\n * 创建摄像头对象\n * @param {*} params [摄像头依附对象GUID, 摄像头名称, RTSP服务路径, 摄像头mesh模型路径, 遮罩层路径, gb28181设备ID, gb28181服务路径, 协议类型, 摄像头索引数, 反投影开关(true/false),\n * 是否TCP协议(true/false), 坐标位置, 视域角度, 宽高比例, 旋转变换, 缩放变换, 偏移变换, 是否地下可见(false/true), 是否显示视锥体(false/true)]\n * // [parent_guid, name, rtsp_url, mesh_url, mask_url, gb28181_play_device_id, gb28181_server_url, protocol, camera_number, enable_camera_shot,\n * // use_tcp, location, fov, aspect, rotation, scale, offset, underground]\n * // params = [\"\", \"test_camera\", \"\", \"\", \"\", \"\", \"\", 0, 0, true, true, { x: 117.17524674654867, y: 34.25533320256773, z: 31.76893295580873 }, 45, 0.5, { x: 0, y: 0, z: 0 },\n * // \t{ x: 1, y: 1, z: 1 }, { x: 0, y: 0, z: 0 }, false, false];\n * @returns\n */\n createCamera(params: any) {\n return new Promise(async (resolve) => {\n const camera_interface = StampAPI.LibAx.camera_interface(StampAPI.lib_ax);\n camera_interface.OnCameraCreatedOrUpdate = function (data: any) {\n resolve(data);\n };\n const parentGuid = params.parentGuid || StampUtil.createGuid(); //父图层guid\n const elementId = params.guid || StampUtil.createGuid(); //摄像头对象guid\n const name = params.name || \"\"; //test_camera\n const rtsp_url = params.rtspUrl || \"\"; //RTSP服务路径\n const rootPath = (await StampUtil.getRootPath()) as any;\n const mesh_url = params.meshUrl || rootPath.root_path + \"res\\\\camera.x\"; //摄像头mesh模型路径\n let mask_url = params.maskUrl || rootPath.root_path + \"res\\\\mask.png\"; //\"E:\\\\SVN\\\\PRD\\\\ActiveX\\\\Stamp_64\\\\root\\\\res\\\\mask.png\"; //遮罩层路径\n if (mask_url == \"null\") {\n mask_url = rootPath.root_path + \"res\\\\mask.png\";\n }\n const gb28181_play_device_id = params.DeviceID || \"\"; //gb28181设备ID\n const gb28181_server_url = params.serviceUrl || \"\"; //gb28181服务路径\n const protocol = params.cameraType != 0 ? 1 : 0; //协议类型0:rtsp; 1:gb28181\n const camera_number = 0; //摄像头索引数\n const enable_camera_shot = params.enableCameraShot || false; //反投影开关\n const enable_media_stream = params.enableMediaStream || false; //是否播放窗口视频流\n const enable_scene_media_stream =\n params.enableCameraSceneMediaStream || false; //是否投射到场景视频流\n const use_tcp = params.useTcp || false; //是否TCP协议\n const pos = params.location || { x: 0, y: 0, z: 0 }; //坐标位置\n const fov = params.fov || 45; //视域角度\n const aspect = params.aspect || 4.0 / 3.0; //宽高比例\n const farPlane = params.farPlane || 10; //可视投影距离\n const rotation = params.rotation ||\n params.rotaion || { x: 90, y: 0, z: 0 }; //旋转变换\n const scale = params.scale || { x: 1, y: 1, z: 1 }; //缩放变换\n const offset = params.offset || { x: 0, y: 0, z: 0 }; //偏移变换\n const underground = false; //是否地下可见\n const enableFrustum =\n params.enableFrustum == undefined ? true : params.enableFrustum;\n const windowPosX = params.windowPosX || 0;\n const windowPosY = params.windowPosY || 0;\n const windowWidth = params.windowWidth || 0;\n const windowHeight = params.windowHeight || 0;\n const pointColor = params.pointColor || 0x55ffff00;\n const lineColor = params.lineColor || 0x55ff0000;\n const fillColor = params.fillColor || 0x1900ff00;\n const projectColor = params.projectColor || 0x3032ff32;\n const paramsObj = [\n parentGuid,\n elementId,\n name,\n rtsp_url,\n mesh_url,\n mask_url,\n gb28181_play_device_id,\n gb28181_server_url,\n protocol,\n camera_number,\n enable_camera_shot,\n enable_media_stream,\n enable_scene_media_stream,\n use_tcp,\n pos,\n fov,\n aspect,\n farPlane,\n rotation,\n scale,\n offset,\n underground,\n enableFrustum,\n windowPosX,\n windowPosY,\n windowWidth,\n windowHeight,\n pointColor,\n lineColor,\n fillColor,\n projectColor,\n ];\n camera_interface.create(paramsObj);\n });\n }\n getTerrainAltitude(lon: any, lat: any) {\n return new Promise((resolve) => {\n const measure_interface = StampAPI.LibAx.measure_interface(\n StampUtil.getLibax()\n );\n measure_interface.MeasureTerrainAltitude(lon, lat);\n measure_interface.OnMeasureFinished = function (data: any) {\n resolve(data.result);\n };\n });\n }\n\n /**\n * 更新摄像头信息\n * @param {*} params 摄像头参数数组:[摄像头GUID, 摄像头名称, RTSP服务路径, 摄像头mesh模型路径, 遮罩层路径, 经纬度坐标位置]\n * @returns\n */\n updateCamera(params: any) {\n if (params.guid) {\n StampUtil.deleteElement(params.guid);\n }\n return new Promise((resolve) => {\n // [guid, name, rtsp_url, mesh_url, mask_url, location]\n //params = [\"\", \"\", \"\", \"\", \"\", { x: 117.17524674654867, y: 34.25533320256773, z: 31.76893295580873 }];\n const camera_interface = StampAPI.LibAx.camera_interface(\n StampUtil.getLibax()\n );\n camera_interface.OnCameraCreatedOrUpdate = function (data: any) {\n resolve(data);\n };\n camera_interface.update(params);\n });\n }\n\n /**\n * 更新摄像头小窗口位置和大小\n * @param params\n * @returns\n */\n updateCameraWindow(\n params = {\n guid: \"\",\n windowPosX: 0,\n windowPosY: 0,\n windowWidth: 0,\n windowHeight: 0,\n }\n ) {\n return new Promise((resolve) => {\n const camera_interface = StampAPI.LibAx.camera_interface(\n StampUtil.getLibax()\n );\n camera_interface.OnCameraCreatedOrUpdate = function (data: any) {\n resolve(data);\n };\n const paramsArr = [\n params.guid,\n params.windowPosX,\n params.windowPosY,\n params.windowWidth,\n params.windowHeight,\n ];\n camera_interface.element_camera_update_window(paramsArr);\n });\n }\n\n /**\n * 设置摄像头小窗口可见性\n * @param cameraGuid 摄像头guid\n * @param visible 是否可见\n * @returns\n */\n setCameraWindowVisible(cameraGuid: string, visible: boolean) {\n return new Promise((resolve) => {\n const camera_interface = StampAPI.LibAx.camera_interface(\n StampUtil.getLibax()\n );\n camera_interface.OnCameraCreatedOrUpdate = function (data: any) {\n resolve(data);\n };\n const paramsArr = [cameraGuid, visible];\n camera_interface.element_camera_window_visible(paramsArr);\n });\n }\n /**\n * 视频截图\n * @param {*} params 摄像头guid\n * @returns\n */\n cameraScreenshot(params: any) {\n const value = [params.guid];\n return new Promise((resolve) => {\n const camera_interface = StampAPI.LibAx.camera_interface(\n StampUtil.getLibax()\n );\n camera_interface.OnCameraWindowScreenShot = function (data: any) {\n const arrayBuffer = new ArrayBuffer(data.length);\n const bufTmp = new Uint8ClampedArray(arrayBuffer);\n bufTmp.set(data);\n // const dv = new DataView(arrayBuffer);\n // let offset = 0;\n // dv.getUint32(offset, true); //获取width\n // offset += 4;\n // dv.getUint32(offset, true); //获取height\n // offset += 4;\n // const imageBuf = bufTmp.slice(offset);\n // resolve(imageBuf);\n resolve(bufTmp);\n };\n camera_interface.element_camera_window_screen_shot(value);\n });\n }\n\n setFov(guid: string, fov: number) {\n const params = [guid, fov];\n const camera_interface = StampAPI.LibAx.camera_interface(\n StampUtil.getLibax()\n );\n camera_interface.set_fov(params);\n }\n\n enableFrustum(guid: string, enable: boolean) {\n const params = [guid, enable];\n const camera_interface = StampAPI.LibAx.camera_interface(\n StampUtil.getLibax()\n );\n camera_interface.enable_frustum_visible(params);\n }\n\n /**\n * 开启窗口视频播放\n * @param guid\n * @param enable\n */\n enableMediaStream(guid: string, enable: boolean) {\n const params = [guid, enable];\n const camera_interface = StampAPI.LibAx.camera_interface(\n StampUtil.getLibax()\n );\n camera_interface.rtsp_connect_or_stop(params);\n }\n\n /**\n * 开启场景投影视频播放\n * @param guid\n * @param enable\n */\n enableSceneMediaStream(guid: string, enable: boolean) {\n const params = [guid, enable];\n const camera_interface = StampAPI.LibAx.camera_interface(\n StampUtil.getLibax()\n );\n camera_interface.enable_scene_media_stream(params);\n }\n\n /**\n * 关闭指定摄像头\n * @param layerGuid 摄像头图层guid\n * @param guid 摄像头guid\n * @returns\n */\n closeCamera(layerGuid: string, guid: string) {\n return new Promise((resolve) => {\n const camera_interface = StampAPI.LibAx.camera_interface(\n StampUtil.getLibax()\n );\n camera_interface.OnCameraCreatedOrUpdate = function (data: any) {\n resolve(data);\n };\n const params = [layerGuid, guid];\n camera_interface.destroy_camera(params);\n });\n }\n\n /**\n * 关闭所有摄像头\n * @param layerGuid 摄像头图层guid\n * @returns\n */\n closeCameraAll(layerGuid: string) {\n return new Promise((resolve) => {\n const camera_interface = StampAPI.LibAx.camera_interface(\n StampUtil.getLibax()\n );\n camera_interface.OnCameraCreatedOrUpdate = function (data: any) {\n resolve(data);\n };\n const params = [layerGuid];\n camera_interface.destroy_all(params);\n });\n }\n //#endregion\n\n //#region 标绘功能接口\n //#region 公共接口\n /**\n * 公共标绘:创建异步回调\n * @param userdataObj\n * @returns\n */\n createElement(userdataObj: any) {\n return new Promise((resolve: any) => {\n const element_interface = StampUtil.getLibax().element_interface;\n element_interface.OnAdded = (obj: any) => {\n element_interface.OnAdded = undefined;\n resolve(obj);\n };\n userdataObj.ShapeToolLineWidth = 2.0;\n userdataObj.ShapeToolLineColor = \"#ffff0000\";\n userdataObj.ShapeToolFillColor = \"#44009900\";\n console.log(userdataObj);\n element_interface.create_element(userdataObj);\n userdataObj.action = \"add\";\n StampUtil.addToUserDataArr(userdataObj);\n });\n }\n\n /**\n * 公共参数化:创建进入的回调函数\n * @param data\n * @returns\n */\n createElementParams(userData: any, data: any) {\n return new Promise((resolve: any) => {\n const element_interface = StampUtil.getLibax().element_interface;\n StampUtil.addToUserDataArr(userData); //添加到userdataArr,否则不进回调\n element_interface.OnAdded = (treeData: any) => {\n element_interface.OnAdded = undefined;\n if (treeData.area) {\n data.area = treeData.area;\n }\n if (treeData.length) {\n data.length = treeData.length;\n }\n resolve(data);\n };\n });\n }\n\n /**\n * 添加到userdataArr\n * @param data\n */\n addToUserDataArr(data: any) {\n let isFind = false;\n const element_interface = StampUtil.getLibax().element_interface;\n for (let i = 0; i < element_interface.userdataArr.length; i++) {\n if (element_interface.userdataArr[i].guid == data.guid) {\n isFind = true;\n break;\n }\n }\n if (!isFind) {\n element_interface.userdataArr.push(data);\n }\n }\n\n /**\n * 清除绘制辅助信息\n */\n clearShapeCreator() {\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n shape_creator_interface.OnShapeCreated = undefined;\n shape_creator_interface.clear();\n }\n\n /**\n * element对象可见距离的范围(多少千米到多少千米之间可见)\n * @param guid\n * @param minVisibleHeight\n * @param maxVisibleHeight\n */\n setElementVisibleRange(\n guid: string,\n minVisibleHeight: number,\n maxVisibleHeight: number\n ) {\n const element_interface = StampUtil.getLibax().element_interface;\n element_interface.visible_range_element([\n guid,\n minVisibleHeight || 0,\n maxVisibleHeight || 1000000,\n ]);\n }\n //#endregion\n\n //#region 二维标绘\n\n handleEndEnclosure() {\n const environment_interface = StampUtil.getLibax()?.environment_interface;\n environment_interface.right_button_click();\n }\n\n /**\n * 标绘:创建多边形\n * @param userdataObj\n * @returns\n */\n createElementPolygon(\n userdataObj: any = {\n guid: StampUtil.createGuid(),\n type: STAMP_RTTI.SE_RTTI_ELEMENT_POLYGON,\n name: \"polygon\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n desc: \"多边形\", //对象描述信息\n linewidth: 1,\n linecolor: \"#CCFFFF00\", //填充色:前两位是透明度,后面6位是填充色\n fillcolor: \"#CCFF0000\",\n shadow: 1, //渲染模式 0:正常 1:贴地 5:贴模型\n drawOrder: 1, //渲染顺序\n selectable: 1,\n editable: 1,\n }\n ) {\n return StampUtil.createElement(userdataObj);\n }\n\n createControlElementVisbile(params: any) {\n if (params.action == \"modify\") {\n return false;\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (params.type == STAMP_RTTI.SE_RTTI_ELEMENT_ICON_WEBUI) {\n //WEBUI\n for (let i = 0; i < this.webUIItems.length; i++) {\n if (this.webUIItems[i].guid == params.guid) {\n if (params.visible == undefined) {\n params.visible = true;\n }\n if (!this.webUIItems[i].isdelete) {\n //已存在未删除,则无需重新创建\n return true;\n } else {\n //已删除,则需要重新创建\n return false;\n }\n }\n }\n } else {\n for (let i = 0; i < element_interface.userdataArr.length; i++) {\n if (element_interface.userdataArr[i].guid == params.guid) {\n if (params.visible == undefined) {\n params.visible = true;\n }\n StampUtil.setElementVisible(params.guid, params.visible);\n return true;\n }\n }\n }\n\n return false;\n }\n /**\n * 参数化:创建或修改多边形\n * @param params\n * @returns\n */\n createElementPolygonParams(params: any) {\n console.log(params.name, params.points);\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid,\n name: params.name?.toString() || \"\",\n type: Number(params.type) || STAMP_RTTI.SE_RTTI_ELEMENT_POLYGON,\n desc: params.description || \"\",\n linewidth: params.linewidth || 1,\n action: \"modify\",\n fillcolor: params.fillcolor || \"#CCFF0000\",\n linecolor: params.linecolor || \"#CCFFFF00\",\n shadow: params.shadow == undefined ? 1 : Number(params.shadow),\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n drawOrder: Number(params.drawOrder) || 0,\n visible: params.visible == undefined || Number(params.visible),\n },\n ] as any;\n\n const innerArr = [0];\n if (params.points && params.points.length > 0) {\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n innerArr[0]++;\n innerArr.push(pointsArr.length);\n }\n if (params.pointsIn && params.pointsIn.length > 0) {\n innerArr[0] += params.pointsIn.length;\n for (let i = 0; i < params.pointsIn.length; i++) {\n const pointsArr = [];\n for (let j = 0; j < params.pointsIn[i].length; j++) {\n pointsArr.push(params.pointsIn[i][j].x);\n pointsArr.push(params.pointsIn[i][j].y);\n pointsArr.push(params.pointsIn[i][j].z);\n }\n paramObj = paramObj.concat(pointsArr);\n innerArr.push(pointsArr.length);\n }\n paramObj.push(innerArr);\n }\n\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n\n /**\n * 标绘:创建折线\n */\n createElementLine(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 220,\n name: \"line\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n desc: \"直线\", //对象描述信息\n linewidth: 1,\n linecolor: \"#CCFFFF00\",\n shadow: 1, //渲染模式 0:正常 1:贴地 5:贴模型\n arrow: 0, //显示箭头:0:无箭头;1:三角形箭头;2:伞状箭头\n selectable: 1,\n editable: 1,\n drawOrder: 1, //渲染顺序\n underground: 1,\n } as any\n ) {\n return StampUtil.createElement(userdataObj);\n }\n\n /**\n * 参数化:创建折线\n * @param params\n * @returns\n */\n createElementLineParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n let paramObj = [\n {\n guid: params.guid,\n name: params.name?.toString() || \"\",\n type: 220,\n desc: params.description || \"\",\n linewidth: params.linewidth || 1,\n action: \"modify\",\n linecolor: params.linecolor || \"#ffffffff\",\n arrow: params.arrow || 0,\n shadow: params.shadow == undefined ? 1 : Number(params.shadow),\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n drawOrder: Number(params.drawOrder) || 0,\n visible: params.visible == undefined || Number(params.visible),\n underground:\n params.underground == undefined || Number(params.underground),\n },\n ] as any;\n if (params.points && params.points.length > 0) {\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n }\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n\n /**\n * 标绘:创建曲线\n */\n createElementCurve(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 229,\n name: \"line\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n desc: \"曲线\", //对象描述信息\n linewidth: 1,\n linecolor: \"#CCFFFF00\", //填充色:前两位是透明度,后面6位是填充色\n fillcolor: \"#CCFF0000\",\n shadow: 1, //渲染模式 0:正常 1:贴地 5:贴模型\n selectable: 1,\n editable: 1,\n drawOrder: 1, //渲染顺序\n }\n ) {\n return StampUtil.createElement(userdataObj);\n }\n\n /**\n * 参数化:创建曲线\n * @param params\n * @returns\n */\n createElementCurveParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid,\n name: params.name || \"\",\n type: Number(params.type) || STAMP_RTTI.SE_RTTI_ELEMENT_CURVE,\n desc: params.description || \"\",\n linewidth: params.linewidth || 1,\n action: \"modify\",\n linecolor: params.linecolor || \"#CCFFFF00\",\n arrow: Number(params.arrow) || 0,\n shadow: params.shadow == undefined ? 1 : Number(params.shadow),\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n drawOrder: Number(params.drawOrder),\n visible: params.visible == undefined || Number(params.visible),\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n\n /**\n * 标绘:创建圆\n */\n createElementCircle(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 227,\n name: \"circle\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n desc: \"圆\", //对象描述信息\n linewidth: 1,\n linecolor: \"#CCFFFF00\",\n fillcolor: \"#CCFF0000\",\n shadow: 1, //渲染模式 0:正常 1:贴地 5:贴模型\n selectable: 1,\n editable: 1,\n drawOrder: 1, //渲染顺序\n }\n ) {\n return StampUtil.createElement(userdataObj);\n }\n /**\n * 参数化:创建圆\n * @param params\n * @returns\n */\n createElementCircleParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n const paramObj = [\n {\n guid: params.guid,\n name: params.name || \"\",\n type: params.type || 227,\n action: \"modify\",\n desc: params.description || \"\",\n radius: params.radius || 1,\n linewidth: params.linewidth || 1,\n fillcolor: params.fillcolor || \"#CCFF0000\",\n linecolor: params.linecolor || \"#CCFFFF00\",\n shadow: params.shadow == undefined ? 1 : Number(params.shadow), //0:正常 1:贴地 5:贴模型\n underground: params.underground == undefined ? 1 : params.underground,\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n visible: params.visible == undefined || Number(params.visible),\n },\n params.points[0].x,\n params.points[0].y,\n params.points[0].z,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n ] as any;\n paramObj[0].points = params.points;\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_box_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n\n /**\n * 标绘:创建警戒线\n */\n createElementGuardLine(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 324,\n name: \"polygon\",\n action: \"add\", //add:添加 modify:修改或参数化创建\n click: \"true\",\n poleTexturePath: \"\",\n bannerTexturePath: \"\",\n selectable: 1,\n editable: 1,\n visible: true,\n desc: \"警戒线\", //对象描述信息\n } as any\n ) {\n return StampUtil.createElement(userdataObj);\n }\n createElementGuardLineParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name || \"\",\n type: Number(params.type) || 324,\n action: \"modify\",\n columnRadius: params.columnRadius,\n columnHeight: params.columnHeight,\n bannerWidth: params.bannerWidth,\n bannerHeight: params.bannerHeight,\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n visible: params.visible == undefined || Number(params.visible),\n desc: params.description || \"\",\n poleTexturePath: params.poleTexturePath,\n bannerTexturePath: params.bannerTexturePath,\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n /**\n *\n * @param param 插值间距, 距离dem距离, 折线点\n */\n calculatePolylineAddInterpolation(param: any) {\n const geometry_algorithm_interface =\n StampUtil.getLibax().geometry_algorithm_interface;\n return new Promise((resolve: any, reject: any) => {\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = function (\n data: any\n ) {\n resolve(data);\n };\n geometry_algorithm_interface.calculate_polyline_add_interpolation(param);\n });\n }\n /**\n * 标绘:创建动态线\n */\n\n async createElementFlowline(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 234,\n name: \"polygon\",\n action: \"add\", //add:添加 modify:修改\n speed: 1,\n split: 5,\n radius: 0.1,\n desc: \"动态线\", //对象描述信息\n selectable: 1,\n editable: 1,\n visible: true,\n texturePath: \"\",\n } as any\n ) {\n const result = (await StampUtil.createElement(userdataObj)) as any;\n result.action = \"modify\";\n result.points = result.rings[0].ring;\n if (result.points.length < 2) {\n return \"\";\n } else {\n if (result.shadow) {\n //贴地需要采样后重新创建\n await StampUtil.deleteElement(result.guid);\n result.action = \"add\"; //参数化创建\n result.guid = StampUtil.createGuid();\n result.samplingInterval = 2;\n result.height = 0.5;\n const resultFlowLine = await StampUtil.createElementFlowlineParams(\n result\n );\n return resultFlowLine;\n } else {\n return result;\n }\n }\n }\n /**\n * 参数化:创建流动线\n * @param params\n * @returns\n */\n async createElementFlowlineParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(),\n name: params.name || \"\",\n type: Number(params.type) || STAMP_RTTI.SE_RTTI_ELEMENT_FLOW_LINE,\n action: \"modify\",\n speed: params.speed || 10,\n split: params.split || 8,\n radius: params.radius || 2,\n desc: params.description || \"\",\n linewidth: params.linewidth || 0.05,\n // shadow: params.shadow == undefined ? 1 : Number(params.shadow),\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n visible: params.visible == undefined || Number(params.visible),\n texturePath: params.texturePath,\n },\n ] as any;\n let cyPoints = params.points;\n if (params.shadow) {\n // 贴地(采样)\n const pointArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointArr.push(\n params.points[i].x,\n params.points[i].y,\n params.points[i].z\n );\n }\n cyPoints = await StampUtil.calculatePolylineAddInterpolation([\n params.samplingInterval || 2,\n params.height || 0.5,\n pointArr,\n ]);\n const cyPointObj = [] as any;\n for (let j = 0; j < cyPoints.Line.length; j++) {\n cyPointObj.push({\n x: cyPoints.Line[j][0],\n y: cyPoints.Line[j][1],\n z: cyPoints.Line[j][2],\n });\n }\n cyPoints = cyPointObj;\n }\n const pointsArr = [];\n for (let i = 0; i < cyPoints.length; i++) {\n pointsArr.push(cyPoints[i].x);\n pointsArr.push(cyPoints[i].y);\n pointsArr.push(cyPoints[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return (await StampUtil.createElementParams(paramObj[0], params)) as any;\n }\n /**\n * 标绘:创建光晕线\n */\n createElementHaloWall(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 328,\n name: \"halowall\",\n action: \"add\", //add:添加 modify:修改\n radius: 1,\n color: \"#ffff0000\",\n factor: 250,\n shadow: 1,\n desc: \"光晕线\", //对象描述信息\n selectable: 1,\n editable: 1,\n visible: true,\n drawOrder: 1, //渲染顺序\n } as any\n ) {\n return new Promise((resolve) => {\n this.createPolyline(\n {\n lineWidth: 2,\n lineColor: 0xffff0000,\n },\n null\n ).then((res: any) => {\n if (!res || !res.Points) {\n return;\n }\n const params = [userdataObj];\n const points = [];\n for (let i = 0; i < res.Points.length; i++) {\n points.push({\n x: res.Points[i].X,\n y: res.Points[i].Y,\n z: res.Points[i].Z,\n });\n params.push(res.Points[i].X, res.Points[i].Y, res.Points[i].Z);\n }\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n element_interface.OldOnAdded = element_interface.OnAdded;\n element_interface.OnAdded = (data: any) => {\n element_interface.OnAdded = element_interface.OldOnAdded;\n resolve(data);\n };\n element_interface.create_halo_wall_params(params);\n userdataObj.points = points;\n StampUtil.addToUserDataArr(userdataObj);\n });\n });\n }\n /**\n * 参数化:创建光晕线\n * @param params\n * @returns\n */\n createElementHaloWallParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(),\n name: params.name || \"\",\n type: Number(params.type) || STAMP_RTTI.SE_RTTI_ELEMENT_HALO_WALL,\n action: \"modify\",\n color: params.color || \"#ffff0000\",\n shadow: params.shadow == undefined ? 1 : Number(params.shadow),\n radius: params.radius || 1,\n factor: params.factor || 250,\n desc: params.description || \"\",\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n visible: params.visible == undefined || Number(params.visible),\n drawOrder: 1, //渲染顺序\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_halo_wall_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n /**\n * 标绘:创建动态水面\n */\n createElementDynamicWater(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: STAMP_RTTI.SE_RTTI_ELEMENT_WATER,\n name: \"polygon\",\n action: \"add\", //add:添加 modify:修改\n fillcolor: 0xcc0d331e,\n waterWave: 8,\n waterSpeedX: 1.0,\n waterSpeedY: 2.0,\n waterSpeedZ: 3.0,\n desc: \"\", //对象描述信息\n selectable: 1,\n editable: 1,\n }\n ) {\n userdataObj.fillcolor = 0xcc0d331e;\n return StampUtil.createElement(userdataObj);\n }\n createElementDynamicWaterParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name || \"\",\n type: Number(params.type) || STAMP_RTTI.SE_RTTI_ELEMENT_WATER,\n action: \"modify\",\n fillcolor: 0xcc0d331e, //params.fillcolor,\n waterWave: 8,\n waterSpeedX: 1.0,\n waterSpeedY: 2.0,\n waterSpeedZ: 3.0,\n // waterWave: params.waterWave,\n // waterSpeedX: params.waterSpeedX,\n // waterSpeedY: params.waterSpeedY,\n // waterSpeedZ: params.waterSpeedZ,\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n visible: params.visible == undefined || Number(params.visible),\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n\n // 标绘:创建符号标注\n createIcon(\n params = {\n guid: StampUtil.createGuid(),\n name: \"\",\n type: 209,\n action: \"add\",\n NormalUrl: \"\",\n HighlightUrl: \"\",\n Text: \"icon\",\n RenderMode: 0,\n TextFormat: 0x100,\n ShowHandle: 0,\n HandleType: 0,\n HandleHeight: 2,\n BackgroundColor: 0xccff0000,\n FrameColor: 0xccff0000,\n HandleColor: 0xccffff00,\n TextColor: 0xccffff00,\n TextHorizontalScale: 1.0,\n TextVerticalScale: 1.0,\n ShowBackground: 0,\n ShowFrame: 0,\n Separator: \"\",\n LineSize: 20,\n selectable: 1,\n editable: 1,\n FontSize: 16,\n FontIsTop: false,\n }\n ) {\n params.LineSize = params.LineSize || 20;\n return StampUtil.createElement(params);\n }\n\n createIconParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n const paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name?.toString() || \"\",\n type: Number(params.type) || 209,\n action: params.action || \"modify\",\n NormalUrl: params.NormalUrl || \"\",\n HighlightUrl: params.HighlightUrl || \"\",\n Text: params.Text || params.text || \"\",\n RenderMode: params.RenderMode || 0,\n TextFormat: params.TextFormat || 0x100,\n ShowHandle: params.ShowHandle || 0,\n HandleType: params.HandleType || 0,\n HandleHeight: params.HandleHeight || params.handleheight || 2,\n HandleColor: params.HandleColor || 0xccffffff,\n TextColor: params.TextColor || 0xccffffff,\n TextHorizontalScale: Number(params.TextHorizontalScale) || 1.0,\n TextVerticalScale: Number(params.TextVerticalScale) || 1.0,\n ShowBackground: params.ShowBackground || 0,\n ShowFrame: params.ShowFrame || 0,\n BackgroundColor: params.BackgroundColor || 0xccffffff,\n FrameColor: params.FrameColor || 0xccffffff,\n Separator: params.Separator || \"\",\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n LineSize: params.LineSize == 0 ? 0 : params.LineSize || 100,\n FontStyle: params.FontStyle || \"Black\", //默认黑体\n FontSize: params.FontSize || 16, //默认大小10\n FontIsTop: params.FontIsTop || false, //默认在右侧\n visible: params.visible == undefined ? true : params.visible,\n intersectable: params.intersectable || false, //是否可相交,默认不可相交\n CanvasTexture: params.CanvasTexture || null, //canvas纹理\n CanvasWidth: params.CanvasWidth || 256,\n CanvasHeight: params.CanvasHeight || 256,\n IsOcclusionTest: params.IsOcclusionTest || false, //是否开启遮挡测试,默认不开启\n IconWidth: params.IconWidth,\n IconHeight: params.IconHeight,\n //字体:\n //\"Regular\"\n //\"Italic\"\n //\"Bold\"\n //\"BoldItalic\"\n //\"BoldCondensed\"\n //\"BoldCondensedItalic\"\n //\"Black\"\n //\"BlackItalic\"\n //\"Medium\"\n //\"Light\"\n //\"VeryLight\"\n //\"Mono\"\n },\n params.points[0].x,\n params.points[0].y,\n params.points[0].z,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n ] as any;\n params.rotaion = {\n x: 0,\n y: 0,\n z: 0,\n };\n params.scale = {\n x: 1,\n y: 1,\n z: 1,\n };\n // if (params.canvasData) {\n // paramObj[0].CanvasTexture = params.canvasData;\n // }\n\n // if(params.CanvasWidth){\n // paramObj[0].CanvasWidth = params.CanvasWidth;\n // }\n\n // if(params.CanvasHeight){\n // paramObj[0].CanvasHeight = params.CanvasHeight;\n // }\n\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_icon_params(paramObj);\n }\n element_interface.visible_range_element([paramObj[0].guid, 0, 1000]);\n return StampUtil.createElementParams(paramObj[0], params);\n }\n\n /**\n * 创建广告牌\n * @param param\n * @returns\n */\n createAdvertisingBoard(\n params: any = {\n action: \"add\",\n BoardWidth: 256,\n BoardHeight: 256,\n HandleHeight: 2,\n ShowHandle: false,\n ShowFrame: false,\n BackgroundColor: 0xffffffee,\n Items: [\n {\n StartPosX: 5,\n StartPosY: 5,\n Text: \"\",\n TextColor: 0xffff0000,\n TextSize: 20,\n Font: \"Bold\",\n },\n ],\n }\n ) {\n return new Promise((resolve) => {\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n shape_creator_interface.OnShapeCreated = (data: any) => {\n shape_creator_interface.OnShapeCreated = null;\n shape_creator_interface.clear();\n params.points = [\n {\n x: data.Longitude,\n y: data.Latitude,\n z: data.Altitude,\n },\n ];\n StampUtil.createAdvertisingBoardParams(params).then((res) => {\n resolve(params);\n });\n };\n shape_creator_interface.create_point();\n });\n }\n /**\n * 标绘:参数化创建广告牌\n * @param params\n * @returns\n */\n createAdvertisingBoardParams(\n params: any = {\n action: \"add\",\n BoardWidth: 256,\n BoardHeight: 256,\n HandleHeight: 2,\n ShowHandle: false,\n ShowFrame: false,\n BackgroundColor: 0xffffffee,\n Items: [\n {\n StartPosX: 5,\n StartPosY: 5,\n Text: \"\",\n TextColor: 0xffff0000,\n TextSize: 20,\n Font: \"Bold\",\n },\n ],\n points: [\n {\n x: 0,\n y: 0,\n z: 0,\n },\n ],\n }\n ) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n const textArr = params.Items;\n const advertising_board_parameter = {\n BoardWidth: parseFloat(params.BoardWidth) || 256, //宽度px\n BoardHeight: parseFloat(params.BoardHeight) || 256, //高度px\n RenderMode: 1,\n HandleHeight: parseFloat(params.HandleHeight) || 20, //扯线高度\n ShowHandle: !!params.ShowHandle, //是否显示扯线\n ShowFrame: !!params.ShowFrame, //是否显示边框\n BackgroundColor: params.BackgroundColor || 0x80101010, //背景颜色,默认白色,不知道为啥不能用0xffffffff\n Items: [] as Array<any>, //显示内容\n };\n if (textArr && textArr.length > 0) {\n for (let i = 0; i < textArr.length; i++) {\n advertising_board_parameter.Items.push({\n Type: 0, //0:文字\n StartPosX: textArr[i].StartPosX || 5, //显示位置X\n StartPosY: textArr[i].StartPosY || 5, //显示位置Y\n Text: textArr[i].Text || \"\", //显示文字\n TextColor: textArr[i].TextColor || 0xccffffff, //文字颜色,默认红色\n TextSize: textArr[i].TextSize || 20, //文字大小\n TextMode: 1,\n Font: textArr[i].Font || \"Bold\", //文字样式\n });\n }\n }\n const paramObj = [\n {\n type: Number(params.type) || 237,\n name: params.name || \"adver\",\n guid: params.guid || StampUtil.createGuid(),\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n action: \"modify\",\n params: JSON.stringify(advertising_board_parameter),\n },\n params.points[0].x,\n params.points[0].y,\n params.points[0].z,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n ];\n\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_advertising_board_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n /**\n * 晕渲图\n * @param userdataObj\n * @returns\n */\n createOceanGrid(userdataObj: any) {\n const paramObj = [\n {\n guid: StampUtil.createGuid(),\n type: STAMP_RTTI.SE_RTTI_ELEMENT_GRID,\n name: \"element_grid\",\n action: \"add\", //add:添加 modify:修改\n selectable: 0,\n editable: 0,\n visible: 1,\n dataPath:\n \"e:\\\\PRD\\\\StampUE\\\\root\\\\ocen\\\\CA20201229\\\\final\\\\CA20201229.meta\",\n minLevel: 3,\n maxLevel: 18,\n altitude: 0,\n altitudeScale: 1000,\n loadTableName: userdataObj.loadTableName || \"THETA\",\n loadLayerIndex: userdataObj.loadLayerIndex || 0,\n },\n ];\n return StampUtil.createElement(paramObj[0]);\n }\n /**\n * 参数创建晕渲图\n * @param userdataObj\n * @returns\n */\n createOceanGridParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n const paramObj = [\n {\n guid: params.guid,\n name: params.name || \"\",\n type: Number(params.type) || STAMP_RTTI.SE_RTTI_ELEMENT_GRID,\n desc: params.description || \"\",\n action: \"modify\",\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n drawOrder: Number(params.drawOrder) || 0,\n visible: params.visible == undefined || Number(params.visible),\n dataPath:\n \"e:\\\\PRD\\\\StampUE\\\\root\\\\ocen\\\\CA20201229\\\\final\\\\CA20201229.meta\",\n minLevel: 3,\n maxLevel: 18,\n altitude: 0,\n altitudeScale: 1000,\n loadTableName: params.loadTableName || \"THETA\",\n loadLayerIndex: params.loadLayerIndex || 0,\n },\n ] as any;\n\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n /**\n * 洋流\n * @param userdataObj\n * @returns\n */\n createOceanCurrent(params: any) {\n const userdataObj = {\n type: STAMP_RTTI.SE_RTTI_ELEMENT_CURRENT,\n name: \"element_ocean_current\",\n guid: StampUtil.createGuid(),\n action: \"add\",\n selectable: 0,\n editable: 0,\n visible: 1,\n dataPath:\n \"e:\\\\PRD\\\\StampUE\\\\root\\\\ocen\\\\CA20201229_Speed\\\\final\\\\CA20201229.meta\",\n minLevel: 3,\n maxLevel: 15,\n altitude: 70,\n altitudeScale: 10,\n particleSize: 65536,\n speedFactor: 180,\n is_2d: false,\n loadTableName: \"Speed\",\n customMinValue: 0.0,\n customMaxValue: 0.00007,\n } as any;\n\n if (userdataObj.is_2d) {\n userdataObj.loadLayerIndex = 0;\n } else {\n userdataObj.loadLayerStart = 0;\n userdataObj.loadLayerEnd = 49;\n }\n userdataObj.use_clip_rect = true;\n userdataObj.use_depth_mode = true;\n\n return StampUtil.createElement(userdataObj);\n }\n\n /**\n * 参数创建洋流\n * @param userdataObj\n * @returns\n */\n createOceanCurrentParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n const paramObj = [\n {\n guid: params.guid,\n name: params.name || \"\",\n type: Number(params.type) || STAMP_RTTI.SE_RTTI_ELEMENT_CURRENT,\n desc: params.description || \"\",\n action: \"modify\",\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n drawOrder: Number(params.drawOrder) || 0,\n visible: params.visible == undefined || Number(params.visible),\n dataPath:\n \"e:\\\\PRD\\\\StampUE\\\\root\\\\ocen\\\\CA20201229_Speed\\\\final\\\\CA20201229.meta\",\n minLevel: 3,\n maxLevel: 15,\n altitude: 70,\n altitudeScale: 10,\n particleSize: 65536,\n speedFactor: 180,\n is_2d: params.is_2d || false,\n loadTableName: \"Speed\",\n customMinValue: 0.0,\n customMaxValue: 0.00007,\n },\n ] as any;\n if (paramObj.is_2d) {\n paramObj.loadLayerIndex = 0;\n } else {\n paramObj.loadLayerStart = 0;\n paramObj.loadLayerEnd = 49;\n }\n paramObj.use_clip_rect = true;\n paramObj.use_depth_mode = true;\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n //#endregion\n\n //#region 军事标绘\n /* \n 标绘:创建简单箭头\n */\n createElementsArrow(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 250,\n name: \"sArrow\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n desc: \"简单箭头\", //对象描述信息\n linewidth: 1,\n linecolor: \"#CCFFFF00\", //填充色:前两位是透明度,后面6位是填充色\n fillcolor: \"#CCFF0000\",\n shadow: 1, //渲染模式 0:正常 1:贴地 5:贴模型\n selectable: 1,\n editable: 1,\n drawOrder: 1, //渲染顺序\n }\n ) {\n return StampUtil.createElement(userdataObj);\n }\n createElementsArrowParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name || \"\",\n type: Number(params.type) || 250,\n desc: params.description || \"\",\n linewidth: params.linewidth || 1,\n linecolor: params.linecolor || \"#CCFFFF00\",\n fillcolor: params.fillcolor || \"#CCFF0000\",\n action: \"modify\",\n shadow: params.shadow == undefined ? 1 : Number(params.shadow),\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n drawOrder: Number(params.drawOrder),\n visible: params.visible == undefined || Number(params.visible),\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n /* \n 标绘:创建直箭头\n */\n createElementequalSArrow(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 251,\n name: \"equalSArrow\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n desc: \"直箭头\", //对象描述信息\n linewidth: 1,\n linecolor: \"#CCFFFF00\", //填充色:前两位是透明度,后面6位是填充色\n fillcolor: \"#CCFF0000\",\n shadow: 1, //渲染模式 0:正常 1:贴地 5:贴模型\n selectable: 1,\n editable: 1,\n drawOrder: 1, //渲染顺序\n }\n ) {\n return StampUtil.createElement(userdataObj);\n }\n createElementequalSArrowParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name || \"\",\n type: Number(params.type) || 251,\n desc: params.description || \"\",\n linewidth: params.linewidth || 1,\n linecolor: params.linecolor || \"#CCFFFF00\",\n fillcolor: params.fillcolor || \"#CCFF0000\",\n action: \"modify\",\n shadow: params.shadow == undefined ? 1 : Number(params.shadow),\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n drawOrder: Number(params.drawOrder),\n visible: params.visible == undefined || Number(params.visible),\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n /* \n 标绘:创建燕尾箭头\n */\n createElementtailSArrow(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 252,\n name: \"tailSArrow\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n desc: \"燕尾箭头\", //对象描述信息\n linewidth: 1,\n linecolor: \"#CCFFFF00\", //填充色:前两位是透明度,后面6位是填充色\n fillcolor: \"#CCFF0000\",\n shadow: 1, //渲染模式 0:正常 1:贴地 5:贴模型\n selectable: 1,\n editable: 1,\n drawOrder: 1, //渲染顺序\n }\n ) {\n return StampUtil.createElement(userdataObj);\n }\n createElementtailSArrowParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name || \"\",\n type: Number(params.type) || 252,\n desc: params.description || \"\",\n linewidth: params.linewidth || 1,\n linecolor: params.linecolor || \"#CCFFFF00\",\n fillcolor: params.fillcolor || \"#CCFF0000\",\n action: \"modify\",\n shadow: params.shadow == undefined ? 1 : Number(params.shadow),\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n drawOrder: Number(params.drawOrder),\n visible: params.visible == undefined || Number(params.visible),\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n /* \n 标绘:创建自定义箭头\n */\n createElementcustomArrow(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 253,\n name: \"customArrow\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n desc: \"自定义箭头\", //对象描述信息\n linewidth: 1,\n linecolor: \"#CCFFFF00\", //填充色:前两位是透明度,后面6位是填充色\n fillcolor: \"#CCFF0000\",\n shadow: 1, //渲染模式 0:正常 1:贴地 5:贴模型\n selectable: 1,\n editable: 1,\n drawOrder: 1, //渲染顺序\n }\n ) {\n return StampUtil.createElement(userdataObj);\n }\n createElementcustomArrowParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name || \"\",\n type: Number(params.type) || 253,\n desc: params.description || \"\",\n linewidth: params.linewidth || 1,\n linecolor: params.linecolor || \"#CCFFFF00\",\n fillcolor: params.fillcolor || \"#CCFF0000\",\n action: \"modify\",\n shadow: params.shadow == undefined ? 1 : Number(params.shadow),\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n drawOrder: Number(params.drawOrder),\n visible: params.visible == undefined || Number(params.visible),\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n /* \n 标绘:创建自定义燕尾箭头\n */\n createElementcustomTailArrow(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 254,\n name: \"customTailArrow\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n desc: \"自定义燕尾箭头\", //对象描述信息\n linewidth: 1,\n linecolor: \"#CCFFFF00\", //填充色:前两位是透明度,后面6位是填充色\n fillcolor: \"#CCFF0000\",\n shadow: 1, //渲染模式 0:正常 1:贴地 5:贴模型\n selectable: 1,\n editable: 1,\n drawOrder: 1, //渲染顺序\n }\n ) {\n return StampUtil.createElement(userdataObj);\n }\n createElementcustomTailArrowParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name || \"\",\n type: Number(params.type) || 254,\n desc: params.description || \"\",\n linewidth: params.linewidth || 1,\n linecolor: params.linecolor || \"#CCFFFF00\",\n fillcolor: params.fillcolor || \"#CCFF0000\",\n action: \"modify\",\n shadow: params.shadow == undefined ? 1 : Number(params.shadow),\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n drawOrder: Number(params.drawOrder),\n visible: params.visible == undefined || Number(params.visible),\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n /* \n 标绘:创建双箭头\n */\n createElementdoubleArrow(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 255,\n name: \"doubleArrow\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n desc: \"自定义双箭头\", //对象描述信息\n linewidth: 1,\n linecolor: \"#CCFFFF00\", //填充色:前两位是透明度,后面6位是填充色\n fillcolor: \"#CCFF0000\",\n shadow: 1, //渲染模式 0:正常 1:贴地 5:贴模型\n selectable: true,\n editable: true,\n drawOrder: 1, //渲染顺序\n }\n ) {\n return StampUtil.createElement(userdataObj);\n }\n createElementdoubleArrowParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name || \"\",\n type: Number(params.type) || 255,\n desc: params.description || \"\",\n linewidth: params.linewidth || 1,\n linecolor: params.linecolor || \"#CCFFFF00\",\n fillcolor: params.fillcolor || \"#CCFF0000\",\n action: \"modify\",\n shadow: params.shadow == undefined ? 1 : Number(params.shadow),\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n drawOrder: Number(params.drawOrder),\n visible: params.visible == undefined || Number(params.visible),\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n /* \n 标绘:创建多箭头\n */\n createElementxArrow(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 256,\n name: \"xArrow\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n desc: \"多箭头\", //对象描述信息\n linewidth: 1,\n linecolor: \"#CCFFFF00\", //填充色:前两位是透明度,后面6位是填充色\n fillcolor: \"#CCFF0000\",\n shadow: 1, //渲染模式 0:正常 1:贴地 5:贴模型\n selectable: true,\n editable: true,\n drawOrder: 1, //渲染顺序\n }\n ) {\n return StampUtil.createElement(userdataObj);\n }\n createElementxArrowParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name || \"\",\n type: Number(params.type) || 256,\n desc: params.description || \"\",\n linewidth: params.linewidth || 1,\n linecolor: params.linecolor || \"#CCFFFF00\",\n fillcolor: params.fillcolor || \"#CCFF0000\",\n action: \"modify\",\n shadow: params.shadow == undefined ? 1 : Number(params.shadow),\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n drawOrder: Number(params.drawOrder),\n visible: params.visible == undefined || Number(params.visible),\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n /* \n 标绘:创建集结地域\n */\n createElementassemblyArea(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 260,\n name: \"assemblyArea\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n desc: \"集结地域\", //对象描述信息\n linewidth: 1,\n linecolor: \"#CCFFFF00\", //填充色:前两位是透明度,后面6位是填充色\n fillcolor: \"#CCFF0000\",\n selectable: true,\n editable: true,\n shadow: 1,\n drawOrder: 1, //渲染顺序\n }\n ) {\n return StampUtil.createElement(userdataObj);\n }\n createElementassemblyAreaParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name || \"\",\n type: Number(params.type) || 260,\n desc: params.description || \"\",\n linewidth: params.linewidth || 1,\n linecolor: params.linecolor || \"#CCFFFF00\",\n fillcolor: params.fillcolor || \"#CCFF0000\",\n action: \"modify\",\n shadow: params.shadow == undefined ? 1 : Number(params.shadow),\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n drawOrder: Number(params.drawOrder),\n visible: params.visible == undefined || Number(params.visible),\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n /* \n 标绘:创建直角旗标\n */\n createElementrightAngleFlag(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 258,\n name: \"rightAngleFlag\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n desc: \"直角旗标\", //对象描述信息\n linewidth: 1,\n linecolor: \"#CCFFFF00\", //填充色:前两位是透明度,后面6位是填充色\n fillcolor: \"#CCFF0000\",\n selectable: true,\n editable: true,\n drawOrder: 1, //渲染顺序\n }\n ) {\n return StampUtil.createElement(userdataObj);\n }\n createElementrightAngleFlagParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name || \"\",\n type: Number(params.type) || 258,\n desc: params.description || \"\",\n linewidth: params.linewidth || 1,\n linecolor: params.linecolor || \"#CCFFFF00\",\n action: \"modify\",\n fillcolor: params.fillcolor || \"#CCFF0000\",\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n drawOrder: Number(params.drawOrder),\n visible: params.visible == undefined || Number(params.visible),\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n /* \n 标绘:创建三角旗标\n */\n createElementtriangleFlag(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 257,\n name: \"triangleFlag\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n desc: \"三角旗标\", //对象描述信息\n linewidth: 1,\n linecolor: \"#CCFFFF00\", //填充色:前两位是透明度,后面6位是填充色\n fillcolor: \"#CCFF0000\",\n selectable: true,\n editable: true,\n drawOrder: 1, //渲染顺序\n }\n ) {\n return StampUtil.createElement(userdataObj);\n }\n createElementtriangleFlagParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name || \"\",\n type: Number(params.type) || 257,\n desc: params.description || \"\",\n linewidth: params.linewidth || 1,\n linecolor: params.linecolor || \"#CCFFFF00\",\n fillcolor: params.fillcolor || \"#CCFF0000\",\n action: \"modify\",\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n drawOrder: Number(params.drawOrder),\n visible: params.visible == undefined || Number(params.visible),\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n /* \n 标绘:创建曲线旗标\n */\n createElementcurveFlag(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 259,\n name: \"curveFlag\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n desc: \"曲线旗标\", //对象描述信息\n linewidth: 1,\n linecolor: \"#CCFFFF00\", //填充色:前两位是透明度,后面6位是填充色\n fillcolor: \"#CCFF0000\",\n selectable: true,\n editable: true,\n drawOrder: 1, //渲染顺序\n }\n ) {\n return StampUtil.createElement(userdataObj);\n }\n createElementcurveFlagParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name || \"\",\n type: Number(params.type) || 259,\n desc: params.description || \"\",\n linewidth: params.linewidth || 1,\n linecolor: params.linecolor || \"#CCFFFF00\",\n fillcolor: params.fillcolor || \"#CCFF0000\",\n action: \"modify\",\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n drawOrder: Number(params.drawOrder),\n visible: params.visible == undefined || Number(params.visible),\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n //#endregion\n\n //#region 几何标绘\n /**\n * 标绘:创建立体多边形\n * @param userdataObj\n * @returns\n */\n createElementVolume(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 207,\n name: \"volume\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n desc: \"\", //对象描述信息\n fillcolor: \"#CCFF0000\",\n linecolor: \"#FFFFFFFF\",\n linewidth: 0, //0:不绘制 其他值:线宽\n heightValue: 1,\n bottom: \"\",\n top: \"\",\n sidewall: \"\",\n isBottomFlat: true, //底部纯平\n selectable: true, //可选择\n editable: true, //可编辑\n } as any\n ) {\n userdataObj.is_bottom_flat =\n userdataObj.isBottomFlat == undefined ? true : userdataObj.isBottomFlat; //默认值给true 底部为平的\n userdataObj.texturePath = [\n userdataObj.bottom || \"\",\n userdataObj.top || \"\",\n userdataObj.sidewall || \"\",\n ];\n return StampUtil.createElement(userdataObj);\n }\n\n /**\n * 参数化:创建立体多边形\n * @param params\n * @returns\n */\n createElementVolumeParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n const paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(),\n name: params.name || \"\",\n action: \"modify\", //add:添加 modify:修改\n type: Number(params.type) || 207,\n desc: params.description || \"\",\n fillcolor: params.fillcolor,\n linecolor: params.linecolor || \"#FFFFFFFF\",\n linewidth: params.linewidth || 0, //0:不绘制 其他值:线宽\n is_bottom_flat:\n params.isBottomFlat == undefined ? true : params.isBottomFlat,\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n visible: params.visible == undefined || Number(params.visible),\n heightValue: params.heightValue,\n texturePath: [\n params.bottom || \"\",\n params.top || \"\",\n params.sidewall || \"\",\n ],\n },\n ] as any;\n for (let i = 0; i < params.points.length; i++) {\n paramObj.push(params.points[i].x);\n paramObj.push(params.points[i].y);\n paramObj.push(params.points[i].z);\n }\n\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n\n /**\n * 标绘:创建球体\n * @param userdataObj\n * @returns\n */\n createElementSphere(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 216,\n name: \"sphere\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n desc: \"\", //对象描述信息\n fillcolor: \"#CCFF0000\",\n selectable: 1,\n editable: 1,\n } as any\n ) {\n userdataObj.texturePath = [userdataObj.sidewall];\n return StampUtil.createElement(userdataObj);\n }\n\n /**\n * 参数化:创建球体\n * @param params\n * @returns\n */\n createElementSphereParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n const paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(),\n name: params.name || \"\",\n type: params.type || 216,\n action: \"modify\",\n desc: params.description || \"\",\n radius: params.radius || 0,\n fillcolor: params.fillcolor,\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n visible:\n params.visible == undefined || params.visible == \"true\"\n ? true\n : !!params.visible,\n },\n params.points[0].x,\n params.points[0].y,\n params.points[0].z,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n ] as any;\n paramObj[0].texturePath = [params.sidewall];\n paramObj[0].points = params.points;\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_box_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n\n /**\n * 标绘:创建立方体\n * @param userdataObj\n * @returns\n */\n createElementBox(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 202,\n name: \"box\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n desc: \"立方体\", //对象描述信息\n fillcolor: \"#CCFF0000\",\n selectable: 1,\n editable: 1,\n drawOrder: 1, //渲染顺序\n } as any\n ) {\n userdataObj.texturePath = [\n userdataObj.bottom,\n userdataObj.top,\n userdataObj.sidewall,\n ];\n return StampUtil.createElement(userdataObj);\n }\n\n /**\n * 参数化:创建立方体\n * @param params\n * @returns\n */\n async createElementBoxParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n const paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(),\n name: params.name || \"\",\n action: \"modify\",\n type: Number(params.type) || STAMP_RTTI.SE_RTTI_ELEMENT_BOX,\n desc: params.description || \"\",\n fillcolor: params.fillcolor,\n heightValue: Number(params.heightValue || params.height) || 1,\n widthValue: Number(params.widthValue || params.width) || 1,\n longValue: Number(params.longValue || params.long) || 1,\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n visible:\n params.visible == undefined || params.visible == \"true\"\n ? true\n : !!params.visible,\n texturePath: [],\n },\n params.points[0].x,\n params.points[0].y,\n params.points[0].z,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n ] as any;\n paramObj[0].texturePath = [params.bottom, params.top, params.sidewall];\n paramObj[0].points = params.points;\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_box_params(paramObj);\n }\n return await StampUtil.createElementParams(paramObj[0], params);\n }\n\n /**\n * 标绘:创建圆柱\n * @param userdataObj\n * @returns\n */\n createElementCylinder(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 203,\n name: \"cylinder\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n desc: \"\", //对象描述信息\n fillcolor: \"#CCFF0000\",\n bottomRadius: 1,\n heightValue: 1,\n selectable: 1,\n editable: 1,\n } as any\n ) {\n userdataObj.texturePath = [\n userdataObj.bottom,\n userdataObj.top,\n userdataObj.sidewall,\n ];\n return StampUtil.createElement(userdataObj);\n }\n\n /**\n * 参数化:创建圆柱\n * @param params\n * @returns\n */\n createElementCylinderParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n const paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(),\n name: params.name || \"\",\n type: params.type || 203,\n action: \"modify\",\n desc: params.description || \"\",\n bottomRadius: params.bottomRadius || 1,\n heightValue: params.heightValue || 1,\n fillcolor: params.fillcolor,\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n visible: params.visible == undefined || Number(params.visible),\n texturePath: [params.bottom, params.top, params.sidewall],\n },\n params.points[0].x,\n params.points[0].y,\n params.points[0].z,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n ] as any;\n paramObj[0].points = params.points;\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_box_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n\n /**\n * 标绘:创建圆锥\n * @param userdataObj\n * @returns\n */\n createElementCone(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 204,\n name: \"cone\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n desc: \"\", //对象描述信息\n fillcolor: \"#CCFF0000\",\n bottomRadius: 1,\n topRadius: 0,\n heightValue: 1,\n selectable: 1,\n editable: 1,\n } as any\n ) {\n userdataObj.texturePath = [\n userdataObj.bottom,\n userdataObj.top,\n userdataObj.sidewall,\n ];\n return StampUtil.createElement(userdataObj);\n }\n\n /**\n * 参数化:创建圆锥\n * @param params\n * @returns\n */\n createElementConeParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n const paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(),\n name: params.name || \"\",\n type: params.type || 204,\n action: \"modify\",\n desc: params.description || \"\",\n bottomRadius: params.bottomRadius || 1,\n topRadius: params.topRadius || 0,\n heightValue: params.heightValue || 1,\n fillcolor: params.fillcolor,\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n visible: params.visible == undefined || Number(params.visible),\n texturePath: [params.bottom, params.top, params.sidewall],\n },\n params.points[0].x,\n params.points[0].y,\n params.points[0].z,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n ] as any;\n paramObj[0].points = params.points;\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_box_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n\n /**\n * 标绘:创建棱柱\n * @param userdataObj\n * @returns\n */\n createElementPrism(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 205,\n name: \"prism\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n desc: \"\", //对象描述信息\n fillcolor: \"#CCFF0000\", //填充色:前两位是透明度,后面6位是填充色\n heightValue: 1,\n bottomRadius: 1,\n sides: 5,\n selectable: 1,\n editable: 1,\n } as any\n ) {\n userdataObj.texturePath = [\n userdataObj.bottom,\n userdataObj.top,\n userdataObj.sidewall,\n ];\n return StampUtil.createElement(userdataObj);\n }\n\n /**\n * 参数化:创建棱柱\n * @param params\n * @returns\n */\n createElementPrismParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n const paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name || \"\",\n type: Number(params.type) || 205,\n desc: params.description || \"\",\n action: \"modify\",\n fillcolor: params.fillcolor,\n heightValue: Number(params.heightValue) || 1,\n bottomRadius: params.bottomRadius || 1,\n sides: params.sides || 5,\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n visible: params.visible == undefined || Number(params.visible),\n texturePath: [params.bottom, params.top, params.sidewall],\n },\n params.points[0].x,\n params.points[0].y,\n params.points[0].z,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n ] as any;\n paramObj[0].points = params.points;\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_box_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n\n /**\n * 标绘:创建棱锥\n * @param userdataObj\n * @returns\n */\n createElementPyramid(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 206,\n name: \"pyramid\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n desc: \"\", //对象描述信息\n fillcolor: \"#CCFF0000\", //填充色:前两位是透明度,后面6位是填充色\n heightValue: 5,\n bottomRadius: 1,\n topRadius: 1,\n sides: 5,\n selectable: 1,\n editable: 1,\n } as any\n ) {\n userdataObj.texturePath = [\n userdataObj.bottom,\n userdataObj.top,\n userdataObj.sidewall,\n ];\n return StampUtil.createElement(userdataObj);\n }\n\n /**\n * 参数化:创建棱锥\n * @param params\n * @returns\n */\n createElementPyramidParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n\n //需要将后台服务参数转为接口参数\n const paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name || \"\",\n type: Number(params.type) || 206,\n desc: params.description || \"\",\n fillcolor: params.fillcolor,\n action: \"modify\",\n heightValue: Number(params.heightValue) || 1,\n bottomRadius: params.bottomRadius || 1,\n topRadius: params.topRadius || 1,\n sides: params.sides || 5,\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n visible: params.visible == undefined || Number(params.visible),\n texturePath: [params.bottom, params.top, params.sidewall],\n showUnderground:\n params.showUnderground == undefined ? true : params.showUnderground,\n noCombile: params.noCombile == undefined ? false : params.noCombile,\n },\n params.points[0].x,\n params.points[0].y,\n params.points[0].z,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n ] as any;\n paramObj[0].points = params.points;\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_box_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n //#endregion\n\n //#region 动态特效\n /**\n * 标绘:创建动态特效\n * @param param {longitude,latitude,altitude, type, name, guid, scale}\n * @returns\n */\n createElementDynamic(param: any) {\n return new Promise((resolve: any) => {\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n shape_creator_interface.OnShapeCreated = (data1: any) => {\n shape_creator_interface.OnShapeCreated = null;\n shape_creator_interface.clear();\n const particle_system_interface =\n StampAPI.LibAx.particle_system_interface(StampUtil.getLibax());\n particle_system_interface.OnParticleCreated = (data2: any) => {\n data2.type = param.type;\n data2.scale = param.scale || {\n x: 1,\n y: 1,\n z: 1,\n };\n particle_system_interface.scale([\n data2.scale.x,\n data2.scale.y,\n data2.scale.z,\n data2.guid,\n ]);\n resolve(data2);\n const element_interface = StampUtil.getLibax().element_interface;\n element_interface.userdataArr.push(data2);\n };\n particle_system_interface.create([\n data1.Longitude,\n data1.Latitude,\n parseFloat(data1.Altitude),\n param.type,\n param.name,\n ]);\n };\n shape_creator_interface.create_point();\n });\n }\n /**\n * 参数化:创建动态特效\n * @param params {guid,name,type,longitude,latitude,altitude}\n * @returns\n */\n createElementDynamicParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n if (!params.scale) {\n //创建动态特效时\n params.scale = {\n x: 1,\n y: 1,\n z: 1,\n };\n }\n return new Promise((resolve) => {\n const particle_system_interface =\n StampUtil.getLibax().particle_system_interface;\n particle_system_interface.OnParticleCreated = (data: any) => {\n data.points = params.points;\n data.type = params.type;\n data.scale = params.scale || {\n x: 1,\n y: 1,\n z: 1,\n };\n if (data.scale) {\n particle_system_interface.scale([\n data.scale.x,\n data.scale.y,\n data.scale.z,\n data.guid,\n ]);\n }\n if (data.name.indexOf(\"\\u0000\") != -1) {\n data.name = data.name.slice(0, data.name.indexOf(\"\\u0000\"));\n }\n resolve(data);\n const element_interface = StampUtil.getLibax().element_interface;\n for (let i = 0; i < element_interface.userdataArr.length; i++) {\n if (element_interface.userdataArr[i].guid == params.guid) {\n element_interface.userdataArr.splice(i, 1);\n break;\n }\n }\n element_interface.userdataArr.push(data);\n };\n const paramsObj = [\n params.points[0].x,\n params.points[0].y,\n params.points[0].z,\n params.type,\n params.name,\n params.guid,\n ] as any;\n particle_system_interface.create(paramsObj);\n });\n }\n /**\n * 标绘:创建直向双箭头,虚线,虚线双箭头,虚线单箭头,曲线双箭头\n * @param param\n * @returns\n */\n createElementNewDimension(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 320,\n name: \"\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n gemoRtti: \"\",\n symbolId: \"\",\n linewidth: 5,\n linecolor: \"#CCFFFF00\", //填充色:前两位是透明度,后面6位是填充色\n fillcolor: \"#CCFFFF00\",\n shadow: 1, //渲染模式 0:正常 1:贴地 5:贴模型\n drawOrder: 1, //渲染顺序\n selectable: 1,\n editable: 1,\n } as any\n ) {\n userdataObj.linecolor = userdataObj.linecolor || \"#CCFFFF00\";\n userdataObj.linewidth = Number(userdataObj.linewidth) || 5;\n return StampUtil.createElement(userdataObj);\n }\n\n /**\n * 参数化:创建直向双箭头,虚线,虚线双箭头,虚线单箭头,曲线双箭头\n * @param params\n * @returns\n */\n createElementNewDimensionParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n const linewidth = Number(params.linewidth) || 5;\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name || \"\",\n type: Number(params.type) || 320,\n desc: params.description || \"\",\n linecolor: params.linecolor || \"#CCFFFF00\",\n linewidth: Number(linewidth),\n fillcolor: params.fillcolor || \"#CCFF0000\",\n action: \"modify\",\n symbolId: params.symbolId || \"\",\n geomRtti: params.geomRtti || 220,\n shadow: 0,\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n drawOrder: Number(params.drawOrder),\n visible: params.visible == undefined || Number(params.visible),\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z); //\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n /**\n * 标绘:创建虚线多边形\n * @param param\n */\n createElementDashedPolygon(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 320,\n name: \"\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n gemoRtti: \"\",\n symbolId: \"\",\n width: -1,\n desc: \"\", //对象描述信息\n linewidth: 1,\n linecolor: \"#CCFFFF00\", //填充色:前两位是透明度,后面6位是填充色\n fillcolor: \"#CCFFFF00\",\n shadow: 1, //渲染模式 0:正常 1:贴地 5:贴模型\n drawOrder: 1, //渲染顺序\n selectable: 1,\n editable: 1,\n }\n ) {\n return StampUtil.createElement(userdataObj);\n }\n\n /**\n * 参数化:创建虚线多边形\n * @param params\n * @returns\n */\n createElementDashedPolygonParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name || \"\",\n type: Number(params.type) || 320,\n desc: params.description || \"\",\n linecolor: params.linecolor || \"#CCFFFF00\",\n width: params.width || params.linewidth || 1,\n fillcolor: params.fillcolor || \"#CCFF0000\",\n action: \"modify\",\n symbolId: params.symbolId || \"\",\n geomRtti: params.geomRtti || STAMP_RTTI.SE_RTTI_ELEMENT_POLYGON, //多边形\n shadow: params.shadow == undefined ? 1 : Number(params.shadow),\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n drawOrder: Number(params.drawOrder),\n visible: params.visible == undefined || Number(params.visible),\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n /**\n * 标绘:创建纹理多边形\n * @param param\n */\n createElementTexturePolygon(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: STAMP_RTTI.SE_RTTI_ELEMENT_TEXTURE_SYMBOL,\n name: \"\",\n action: \"add\", //add:添加 modify:修改\n click: \"true\",\n gemoRtti: STAMP_RTTI.SE_RTTI_ELEMENT_POLYGON,\n symbolId: \"texturePolygon\",\n width: -1,\n desc: \"\", //对象描述信息\n linewidth: 1,\n linecolor: \"#CCFFFF00\", //填充色:前两位是透明度,后面6位是填充色\n fillcolor: \"#CCFFFF00\",\n shadow: 1, //渲染模式 0:正常 1:贴地 5:贴模型\n drawOrder: 1, //渲染顺序\n selectable: 1,\n editable: 1,\n texturePath: \"\",\n }\n ) {\n return StampUtil.createElement(userdataObj);\n }\n\n /**\n * 参数化:创建纹理多边形\n * @param params\n * @returns\n */\n createElementTexturePolygonParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name || \"\",\n type: Number(params.type) || STAMP_RTTI.SE_RTTI_ELEMENT_TEXTURE_SYMBOL,\n desc: params.description || \"\",\n linecolor: params.linecolor || \"#CCFFFF00\",\n width: params.width || params.linewidth || 1,\n fillcolor: params.fillcolor || \"#CCFF0000\",\n texturePath: params.texturePath || \"\",\n action: \"modify\",\n symbolId: params.symbolId || \"texturePolygon\",\n geomRtti: params.geomRtti || STAMP_RTTI.SE_RTTI_ELEMENT_POLYGON, //多边形\n shadow: params.shadow == undefined ? 1 : Number(params.shadow),\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n drawOrder: Number(params.drawOrder),\n visible: params.visible == undefined || Number(params.visible),\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_polygon_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n /**\n * 创建警报环\n * @param param\n */\n createAlarmRing(param: any) {\n return new Promise((resolve: any) => {\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n shape_creator_interface.OnShapeCreated = (data: any) => {\n shape_creator_interface.OnShapeCreated = null;\n shape_creator_interface.clear();\n data.Altitude += 0.2; //抬高一点\n const userDataObj = [\n {\n guid: param.guid,\n type: param.type,\n name: param.name,\n action: param.action,\n color: param.fillcolor,\n ringCountFactor: param.ringCountFactor,\n speed: Number(param.speed) ? Number(param.speed) : 1.0,\n radius: Number(param.radius) ? Number(param.radius) : 2.0,\n editable: 1,\n selectable: 1,\n },\n data.Longitude,\n data.Latitude,\n data.Altitude,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n ];\n const params = StampUtil.deepCopy(userDataObj[0]);\n params.points = [\n { x: data.Longitude, y: data.Latitude, z: data.Altitude },\n ];\n resolve(params);\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n element_interface.userdataArr.push(params);\n element_interface.create_alarm_ring_params(userDataObj);\n };\n shape_creator_interface.create_point();\n });\n }\n /**\n * 参数化创建警报环\n * @param params{guid,type,points,name,color,action}\n */\n createAlarmRingParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n const paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name || \"\",\n type: Number(params.type) || 241,\n color: params.fillcolor, //\"#ffff0000\"\n action: \"modify\",\n radius: params.radius || 2.0,\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n speed: params.speed || 1.0,\n ringCountFactor: params.ringCountFactor || 1.0,\n },\n params.points[0].x,\n params.points[0].y,\n params.points[0].z,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n ] as any;\n paramObj[0].points = params.points;\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_alarm_ring_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n /**\n * 创建动态扫描\n * @param param\n */\n createDynamicScan(param: any) {\n return new Promise((resolve: any) => {\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n shape_creator_interface.OnShapeCreated = (data: any) => {\n shape_creator_interface.OnShapeCreated = null;\n shape_creator_interface.clear();\n const userDataObj = [\n {\n guid: param.guid,\n type: param.type,\n name: param.name,\n action: param.action,\n color: param.fillcolor, //\"#ff0000\"\n reverse: param.arrow,\n speed: param.speed,\n size: [data.Radius, data.Radius, 1000], //中心点的半边长[30.0,30.0,1000]\n scanType: param.typemesh,\n editable: 1,\n selectable: 1,\n },\n data.Longitude,\n data.Latitude,\n data.Altitude,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n ];\n const params = StampUtil.deepCopy(userDataObj[0]);\n params.points = [\n { x: data.Longitude, y: data.Latitude, z: data.Altitude },\n ];\n params.radius = data.Radius;\n resolve(params);\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n element_interface.userdataArr.push(params);\n element_interface.create_dynamic_scan_params(userDataObj);\n };\n shape_creator_interface.create_circle(0x1e009900, 0xccffff00);\n });\n }\n /**\n * 参数化创建动态扫描\n * @param params{guid,type,points,name,color,action}\n */\n createDynamicScanParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n const paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name || \"\",\n type: Number(params.type) || 239,\n color: params.fillcolor, //\"#ff0000\"\n action: \"modify\",\n size: params.radius\n ? [params.radius, params.radius, 1000]\n : [30, 30, 1000],\n speed: params.speed || 1.0,\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n reverse: params.arrow || 0,\n scanType: params.typemesh || 0,\n },\n params.points[0].x,\n params.points[0].y,\n params.points[0].z,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n ] as any;\n paramObj[0].points = params.points;\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_dynamic_scan_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n /**\n * 创建动态扩散\n * @param param\n */\n createDynamicSpread(param: any) {\n return new Promise((resolve: any) => {\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n shape_creator_interface.OnShapeCreated = (data: any) => {\n shape_creator_interface.OnShapeCreated = null;\n shape_creator_interface.clear();\n const userDataObj = [\n {\n guid: param.guid,\n type: param.type,\n name: param.name,\n action: param.action,\n color: [param.linecolor, param.framecolor, param.fillcolor],\n speed: param.speed,\n size: [data.Radius, data.Radius, 1000], //中心点的半边长[30.0,30.0,1000]\n selectable: 1,\n editable: 1,\n },\n data.Longitude,\n data.Latitude,\n data.Altitude,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n ];\n const params = StampUtil.deepCopy(userDataObj[0]);\n params.points = [\n { x: data.Longitude, y: data.Latitude, z: data.Altitude },\n ];\n params.radius = data.Radius;\n params.fillcolor = param.fillcolor;\n params.linecolor = param.linecolor;\n params.framecolor = param.framecolor;\n resolve(params);\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n element_interface.userdataArr.push(params);\n element_interface.create_dynamic_spread_params(userDataObj);\n };\n shape_creator_interface.create_circle(0x1e009900, 0xccffff00);\n });\n }\n /**\n * 参数化创建动态扩散\n * @param params{guid,type,points,name,color,action}\n */\n createDynamicSpreadParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n const paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name || \"\",\n type: Number(params.type) || 240,\n color: [params.linecolor, params.framecolor, params.fillcolor], //\"#ffff0000\"\n action: \"modify\",\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n size: params.radius\n ? [params.radius, params.radius, 1000]\n : [30, 30, 1000],\n speed: params.speed || 1.0,\n },\n params.points[0].x,\n params.points[0].y,\n params.points[0].z,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n ] as any;\n paramObj[0].points = params.points;\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_dynamic_spread_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n /**\n * 创建光电墙\n * @param param\n */\n createPhotoElectricWall(param: any) {\n return new Promise((resolve: any) => {\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n shape_creator_interface.OnShapeCreated = (data: any) => {\n shape_creator_interface.OnShapeCreated = null;\n shape_creator_interface.clear();\n let userDataObj = [\n {\n guid: param.guid || StampUtil.createGuid(),\n type: param.type || STAMP_RTTI.SE_RTTI_ELEMENT_ELECTRIC_WALL,\n name: param.name || \"\",\n action: param.action || \"add\",\n color: param.fillcolor || \"#ffff0000\", //\"#ffff0000\",\n speed: param.speed || 1.0,\n radius: Number(param.radius) || 5,\n reverse: param.arrow || 0,\n intersectable: false,\n visibleHeight: param.visibleHeight || 1000000,\n displayType: param.displayType || 0,\n backgroundAlpha: param.backgroundAlpha || 0.5,\n lightningAlpha: param.lightningAlpha || 0.5,\n selectable:\n param.selectable == undefined ? 1 : Number(param.selectable),\n editable: param.editable == undefined ? 1 : Number(param.editable),\n visible: param.visible == undefined || Number(param.visible),\n },\n ] as any;\n const params = StampUtil.deepCopy(userDataObj[0]);\n params.points = [];\n const pointsArr = [];\n for (let i = 0; i < data.Points.length; i++) {\n pointsArr.push(data.Points[i].X);\n pointsArr.push(data.Points[i].Y);\n pointsArr.push(data.Points[i].Z + 1);\n const point = {\n x: data.Points[i].X,\n y: data.Points[i].Y,\n z: data.Points[i].Z + 1,\n };\n params.points.push(point);\n }\n userDataObj = userDataObj.concat(pointsArr);\n resolve(params);\n const element_interface = StampUtil.getLibax().element_interface;\n element_interface.userdataArr.push(params);\n element_interface.create_photo_electric_wall_params(userDataObj);\n };\n shape_creator_interface.create_polyline(1, 0xccff0000);\n });\n }\n /**\n * 参数化创建光电墙\n * @param params{guid,type,points,name,color,action}\n */\n async createPhotoElectricWallParams(params: any) {\n debugger;\n // console.log(params.points);\n // if (params.points.length > 500) {\n // let coordinateArr = [];\n // for (let i = 0; i < params.points.length; i++) {\n // coordinateArr.push(\n // params.points[i].x,\n // params.points[i].y,\n // params.points[i].z\n // );\n // }\n // coordinateArr = (\n // (await StampUtil.douglasPeuckerSimplification(\n // coordinateArr,\n // 1e-1\n // )) as any\n // ).Line;\n // params.points = [];\n // for (let i = 0; i < coordinateArr.length; i++) {\n // params.points.push({\n // x: coordinateArr[i][0],\n // y: coordinateArr[i][1],\n // z: coordinateArr[i][2],\n // });\n // }\n // }\n // console.log(params.points);\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(), //params.id ||\n name: params.name || \"\",\n type: Number(params.type) || STAMP_RTTI.SE_RTTI_ELEMENT_ELECTRIC_WALL,\n color: params.fillcolor || params.color || \"#ffff0000\", //\"#ffff0000\"\n action: \"modify\",\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n speed: params.speed || 1.0,\n radius: params.radius || 5,\n reverse: params.arrow || 0,\n intersectable: false,\n visibleHeight: params.visibleHeight || 1000000, //可视距离\n displayType: params.displayType || 0, // 0 水平 1 竖直\n backgroundAlpha: params.backgroundAlpha || 0.5,\n lightningAlpha: params.lightningAlpha || 0.5,\n visible: params.visible == undefined || Number(params.visible),\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n paramObj[0].points = params.points;\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_photo_electric_wall_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n\n /**\n * 创建动态墙体\n * @param param\n */\n createDynamicWall(param: any) {\n return new Promise((resolve: any) => {\n const shape_creator_interface =\n StampUtil.getLibax().shape_creator_interface;\n shape_creator_interface.OnShapeCreated = (data: any) => {\n shape_creator_interface.OnShapeCreated = null;\n shape_creator_interface.clear();\n let userDataObj = [\n {\n guid: param.guid || StampUtil.createGuid(),\n type: param.type || STAMP_RTTI.SE_RTTI_ELEMENT_DYNAMIC_WALL,\n name: param.name || \"\",\n action: param.action || \"add\",\n color: param.color || \"#ffff0000\",\n speed: param.speed || 1.0,\n radius: Number(param.radius) || 5,\n reverse: param.reverse || 0,\n intersectable: false,\n displayType: param.displayType || 0,\n sliderCount: param.sliderCount || 2.0,\n sliderSizeFactor: param.sliderSizeFactor || 0.1,\n alpha: param.alpha || 0.5,\n selectable:\n param.selectable == undefined ? 1 : Number(param.selectable),\n editable: param.editable == undefined ? 1 : Number(param.editable),\n visible: param.visible == undefined || Number(param.visible),\n },\n ] as any;\n if (param.displayType == \"2\") {\n userDataObj[0].backgroundColor = userDataObj[0].color;\n }\n const params = StampUtil.deepCopy(userDataObj[0]);\n params.points = [];\n const pointsArr = [];\n for (let i = 0; i < data.Points.length; i++) {\n pointsArr.push(data.Points[i].X);\n pointsArr.push(data.Points[i].Y);\n pointsArr.push(data.Points[i].Z + 1);\n const point = {\n x: data.Points[i].X,\n y: data.Points[i].Y,\n z: data.Points[i].Z + 1,\n };\n params.points.push(point);\n }\n userDataObj = userDataObj.concat(pointsArr);\n resolve(params);\n const element_interface = StampUtil.getLibax().element_interface;\n element_interface.userdataArr.push(params);\n element_interface.create_dynamic_wall_params(userDataObj);\n };\n shape_creator_interface.create_polyline(1, 0xccff0000);\n });\n }\n /**\n * 参数化创建动态墙体\n * @param params{guid,type,points,name,color,action}\n */\n createDynamicWallParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(),\n type: params.type || STAMP_RTTI.SE_RTTI_ELEMENT_DYNAMIC_WALL,\n name: params.name || \"\",\n action: params.action || \"add\",\n color: params.color || \"#ffff0000\",\n speed: params.speed || 1.0,\n radius: Number(params.radius) || 5,\n reverse: params.reverse || 0,\n intersectable: false,\n displayType: params.displayType || 0,\n sliderCount: params.sliderCount || 2.0,\n sliderSizeFactor: params.sliderSizeFactor || 0.1,\n alpha: params.alpha || 0.5,\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n visible: params.visible == undefined || Number(params.visible),\n },\n ] as any;\n if (params.displayType == \"2\") {\n paramObj[0][\"backgroundColor\"] = paramObj[0][\"color\"];\n }\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n paramObj[0].points = params.points;\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_dynamic_wall_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n //#endregion\n\n //#region 模型标绘\n /**\n * 标绘:创建模型对象\n * @param params\n * @returns\n */\n createElementModel(\n userdataObj = {\n type: STAMP_RTTI.SE_RTTI_ELEMENT_MODEL,\n guid: StampUtil.createGuid(),\n name: \"\",\n action: \"add\",\n meshLink: \"\",\n typeMesh: 0,\n }\n ) {\n return StampUtil.createElement(userdataObj);\n }\n\n /**\n * 参数化:创建模型对象\n * @param params\n * @returns\n */\n createElementModelParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const paramObj = [\n {\n guid: params.guid,\n name: params.name || \"\",\n type: params.type || STAMP_RTTI.SE_RTTI_ELEMENT_MODEL,\n action: \"modify\",\n desc: params.description || \"\",\n typeMesh: params.typeMesh || 0,\n meshLink: params.meshLink || \"\",\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n visible: params.visible == undefined || Number(params.visible),\n },\n params.points[0].x,\n params.points[0].y,\n params.points[0].z,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n ] as any;\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n paramObj[0].points = params.points;\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_box_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n\n //#endregion\n\n //#region 符号标绘\n /**\n * 标绘:获取点符号\n * @param lib\n * @returns\n */\n async getMarkerSymbols(lib: any) {\n return new Promise((resolve) => {\n const ms_symbol_library_interface =\n StampAPI.LibAx.ms_symbol_library_interface(StampUtil.getLibax());\n const params = [lib];\n ms_symbol_library_interface.get_marker_symbols(params);\n ms_symbol_library_interface.OnRespondGet = function (data: any) {\n ms_symbol_library_interface.OnRespondGet = undefined;\n resolve(data);\n };\n });\n }\n /**\n * 标绘:获取面符号\n * @param lib\n * @returns\n */\n async getFillSymbols(lib: any) {\n return new Promise((resolve) => {\n const ms_symbol_library_interface =\n StampAPI.LibAx.ms_symbol_library_interface(StampUtil.getLibax());\n const params = [lib];\n ms_symbol_library_interface.get_fill_symbols(params);\n ms_symbol_library_interface.OnRespondGet = function (data: any) {\n resolve(data);\n };\n });\n }\n\n /**\n * 标绘:获取线符号\n * @param lib\n * @returns\n */\n async getLineSymbols(lib: any) {\n return new Promise((resolve) => {\n const ms_symbol_library_interface =\n StampAPI.LibAx.ms_symbol_library_interface(StampUtil.getLibax());\n const params = [lib];\n ms_symbol_library_interface.get_line_symbols(params);\n ms_symbol_library_interface.OnRespondGet = function (data: any) {\n resolve(data);\n };\n });\n }\n\n /**\n * 标绘:获取标注符号\n * @param lib\n * @returns\n */\n async getLabelSymbols(lib: any) {\n return new Promise((resolve) => {\n const ms_symbol_library_interface =\n StampAPI.LibAx.ms_symbol_library_interface(StampUtil.getLibax());\n const params = [lib];\n ms_symbol_library_interface.get_label_symbols(params);\n ms_symbol_library_interface.OnRespondGet = function (data: any) {\n resolve(data);\n };\n });\n }\n\n colorObj2Num(color: any) {\n if (!color) {\n return 0xffffffff;\n }\n let red = color[1].toString(16);\n let green = color[2].toString(16);\n let blue = color[3].toString(16);\n let alpha = color[0].toString(16);\n if (red.length < 2) {\n red = \"0\" + red;\n }\n if (green.length < 2) {\n green = \"0\" + green;\n }\n if (blue.length < 2) {\n blue = \"0\" + blue;\n }\n if (alpha.length < 2) {\n alpha = \"0\" + alpha;\n }\n return Number(\"0x\" + alpha + red + green + blue);\n }\n\n readWString(data: any) {\n const arrayBuffer = new ArrayBuffer(data.length);\n const bufTmp = new Uint8Array(arrayBuffer);\n bufTmp.set(data);\n const dv = new DataView(arrayBuffer);\n let temp = 0;\n let str = \"\";\n let cursor = 0;\n while (cursor != data.length) {\n temp = dv.getUint16(cursor, true);\n cursor += 2;\n if (temp != 0) str += String.fromCharCode(temp);\n else break;\n }\n const imageBuf = bufTmp.slice(cursor);\n\n const base64 = btoa(String.fromCharCode(...imageBuf));\n return \"data:image/png;base64,\" + base64;\n }\n\n /**\n * 标绘:获取缩略图\n * @param lib\n * @returns\n */\n async getPreview(lib: any, id: any, width: any, height: any) {\n return new Promise((resolve) => {\n const ms_symbol_library_interface =\n StampAPI.LibAx.ms_symbol_library_interface(StampUtil.getLibax());\n const params = [lib, id, width, height, 1, false];\n ms_symbol_library_interface.get_symbol_preview_by_id(params);\n ms_symbol_library_interface.OnRespondPreview = function (data: any) {\n const symbol = StampUtil.readWString(data);\n resolve(symbol);\n };\n });\n }\n\n /**\n * 标绘:获取样式缩略图\n * @param lib\n * @returns\n */\n async getStylePreview(style: any, width: any, height: any) {\n return new Promise((resolve) => {\n const ms_symbol_library_interface =\n StampAPI.LibAx.ms_symbol_library_interface(StampUtil.getLibax());\n const params = [\n style.symbol_library_name\n ? style.symbol_library_name\n : style.library_name,\n style.symbol_id,\n width,\n height,\n 1,\n style.isLocal ? style.isLocal : false,\n StampUtil.colorObj2Num(style.color),\n style.outline_width,\n StampUtil.colorObj2Num(style.outline_color),\n StampUtil.colorObj2Num(style.font_color),\n style.font_name ? style.font_name : \"微软雅黑\",\n style.bold ? style.bold : false,\n style.italic ? style.italic : false,\n style.font_size ? style.font_size : 16,\n ];\n ms_symbol_library_interface.get_symbol_preview_by_id_and_style(params);\n ms_symbol_library_interface.OnRespondPreview = function (data: any) {\n const symbol = StampUtil.readWString(data);\n resolve(symbol);\n };\n });\n }\n\n //#endregion\n\n //#region 标绘操作相关\n /**\n * 修改element位置\n * @param params\n * @returns\n */\n modifyPosition(\n params: any = {\n guid: \"\",\n isMultiPoint: false, //true:多点模式;false:单点模式\n points: [],\n }\n ) {\n return new Promise((resolve) => {\n const element_interface = StampUtil.getLibax().element_interface;\n element_interface.OnStatus = (data: any) => {\n element_interface.OnStatus = null;\n resolve(data);\n };\n const paramObj = [params.guid, params.isMultiPoint ? 1 : 0];\n if (params.isMultiPoint) {\n //数组模式\n for (let i = 0; i < params.points.length; i++) {\n paramObj.push(\n params.points[i].x,\n params.points[i].y,\n params.points[i].z\n );\n }\n } else {\n paramObj.push(\n params.points[0].x,\n params.points[0].y,\n params.points[0].z,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1\n );\n }\n element_interface.modify_position(paramObj);\n });\n }\n\n deleteAnalysisRes(guid: string) {\n const element_interface = StampUtil.getLibax().element_interface;\n element_interface.delete_element(guid);\n }\n\n /**\n * 根据guid删除标绘对象\n * @param guid\n */\n deleteElement(guid: string) {\n let timeoutValue: any = null;\n return new Promise((resolve) => {\n const element_interface = StampUtil.getLibax().element_interface;\n element_interface.OnStatus = (data: any) => {\n element_interface.OnStatus = null;\n if (timeoutValue) {\n clearTimeout(timeoutValue);\n }\n resolve(data);\n };\n for (let i = 0; i < this.webUIItems.length; i++) {\n if (\n this.webUIItems[i].guid == guid &&\n this.webUIItems[i].type == STAMP_RTTI.SE_RTTI_ELEMENT_ICON_WEBUI\n ) {\n this.removeWebUI(this.webUIItems[i].parentGuid);\n this.webUIItems.splice(i, 1);\n resolve(null);\n return;\n }\n }\n element_interface.delete_element(guid);\n for (let i = 0; i < element_interface.userdataArr.length; i++) {\n if (element_interface.userdataArr[i].guid == guid) {\n element_interface.userdataArr.splice(i, 1);\n break;\n }\n }\n timeoutValue = setTimeout(() => {\n resolve(null);\n }, 2000);\n });\n }\n\n /**\n * 根据guid查找标绘对象\n * @param guid\n * @returns\n */\n getElementById(guid: string) {\n const element_interface = StampUtil.getLibax().element_interface;\n for (let i = 0; i < element_interface.userdataArr.length; i++) {\n if (element_interface.userdataArr[i].guid == guid) {\n if (\n element_interface.userdataArr[i].rings &&\n element_interface.userdataArr[i].rings.length > 0 &&\n element_interface.userdataArr[i].rings[0].ring\n ) {\n element_interface.userdataArr[i].points =\n element_interface.userdataArr[i].rings[0].ring;\n }\n\n return element_interface.userdataArr[i];\n }\n }\n for (let i = 0; i < this.webUIItems.length; i++) {\n if (\n this.webUIItems[i].guid == guid &&\n this.webUIItems[i].type == STAMP_RTTI.SE_RTTI_ELEMENT_ICON_WEBUI\n ) {\n return this.webUIItems[i];\n }\n }\n return null;\n }\n\n /**\n * 获取所有标绘对象\n * @returns 所有标绘对象\n */\n getSelectObj() {\n const element_interface = StampUtil.getLibax().element_interface;\n return element_interface.userdataArr;\n }\n //#endregion\n\n //#region nc接口\n modifyElement(userdataObj: any) {\n return new Promise((resolve: any) => {\n const element_interface = StampUtil.getLibax().element_interface;\n\n element_interface.modify_element(userdataObj);\n\n StampUtil.addToUserDataArr(userdataObj);\n });\n }\n\n nextOceanGrid = function (guid: any) {\n return new Promise((resolve) => {\n const analysis_interface = StampAPI.LibAx.analysis_interface(\n StampUtil.getLibax()\n );\n analysis_interface.OnNextGridWall = function (data: any) {\n analysis_interface.OnNextGridWall = undefined;\n resolve(data?.guids || null);\n };\n analysis_interface.next_grid_wall(guid, 1000);\n });\n };\n //#endregion\n //#endregion\n\n //#region 编辑模块接口\n /**\n * 抽稀点\n * @param 点串\n */\n douglasPeuckerSimplification(params: any, minLength = 1e-4) {\n return new Promise((resolve) => {\n const geometry_algorithm_interface =\n StampUtil.getLibax().geometry_algorithm_interface;\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = function (\n data: any\n ) {\n resolve(data);\n };\n geometry_algorithm_interface.douglas_peucker_simplification([\n minLength,\n params,\n ]);\n });\n }\n /**\n * 根据guid选择element对象\n * @param guid\n */\n selectByGuid(guid: string) {\n const element_interface = StampUtil.getLibax().element_interface;\n element_interface.SelectByGuid(guid);\n }\n /**\n * 编辑:选择\n */\n select(callback: any) {\n const element_interface = StampUtil.getLibax().element_interface;\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Element\n );\n handler.interface.OnGetSelectSet = (data: any) => {\n if (data && data.guids && data.guids.length > 0) {\n typeof callback == \"function\" && callback(data.guids);\n } else {\n typeof callback == \"function\" && callback([]);\n }\n };\n element_interface.ObjectEdit(handler.CommandType.ElementCommand_Pick);\n const earth =\n StampUtil.getLibax().player.webRtcController.videoPlayer.videoElement;\n earth.oncontextmenu = () => {\n earth.oncontextmenu = null;\n StampUtil.closeSelectState();\n StampUtil.closePick();\n };\n }\n\n /**\n * 编辑:移动\n */\n move(callback: any) {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Element\n );\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n handler.interface.OnGetSelectSet = (data: any) => {\n debugger;\n };\n element_interface.ObjectEdit(handler.CommandType.ElementCommand_Move);\n element_interface.OnPositionChanged = (data: any) => {\n if (data && data.selectSet && data.selectSet.length > 0) {\n typeof callback == \"function\" && callback(data);\n }\n };\n }\n\n /**\n * 移动\n * @param {*} x x方向移动距离(度)如:0.001\n * @param {*} y y方向移动距离(度)如:0.001\n * @param {*} z z方向移动距离(米)(注意:如果是贴地的,那就向上移动不了)\n */\n moveByParams(x = 0, y = 0, z = 0) {\n const params = [x, y, z, 0, 0, 0, 1, 1, 1];\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n element_interface.transform_offset(params);\n }\n\n /**\n * 移动指定guid的标绘对象\n * @param guids 标绘guid集合\n * @param x\n * @param y\n * @param z\n */\n moveByGuid(guids: Array<string>, x = 0, y = 0, z = 0) {\n const params = [guids.join(\",\"), x, y, z, 0, 0, 0, 1, 1, 1];\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n element_interface.transform_offset_by_guid(params);\n }\n\n /**\n * 编辑:旋转\n */\n rotate(callback: any) {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Element\n );\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n element_interface.ObjectEdit(handler.CommandType.ElementCommand_Rotate);\n element_interface.OnPositionChanged = (data: any) => {\n if (data && data.selectSet && data.selectSet.length > 0) {\n typeof callback == \"function\" && callback(data);\n }\n };\n }\n\n /**\n * 旋转\n * @param {*} x x方向旋转角度(度)\n * @param {*} y y方向旋转角度(度)\n * @param {*} z z方向旋转角度(度)\n */\n rotateByParams(x = 0, y = 0, z = 0) {\n const params = [0, 0, 0, x, y, z, 1, 1, 1];\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n element_interface.transform_offset(params);\n }\n\n /**\n * 旋转指定guid的标绘对象\n * @param guids 标绘guid集合\n * @param x\n * @param y\n * @param z\n */\n rotateByGuid(guids: Array<string>, x = 0, y = 0, z = 0) {\n const params = [guids.join(\",\"), 0, 0, 0, x, y, z, 1, 1, 1];\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n element_interface.transform_offset_by_guid(params);\n }\n\n /**\n * 编辑:缩放\n */\n scale(callback: any) {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Element\n );\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n element_interface.ObjectEdit(handler.CommandType.ElementCommand_Scale);\n element_interface.OnPositionChanged = (data: any) => {\n if (data && data.selectSet && data.selectSet.length > 0) {\n typeof callback == \"function\" && callback(data);\n }\n };\n }\n /**\n * 缩放\n * @param {*} x x方向缩放系数\n * @param {*} y y方向缩放系数\n * @param {*} z z方向缩放系数\n */\n scaleByParams(x = 1, y = 1, z = 1) {\n const params = [0, 0, 0, 0, 0, 0, x, y, z];\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n element_interface.transform_offset(params);\n }\n\n /**\n * 缩放指定guid的标绘对象\n * @param guids 标绘guid集合\n * @param x\n * @param y\n * @param z\n */\n scaleByGuid(guids: Array<string>, x = 0, y = 0, z = 0) {\n const params = [guids.join(\",\"), 0, 0, 0, 0, 0, 0, x, y, z];\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n element_interface.transform_offset_by_guid(params);\n }\n\n /**\n * 编辑:删除\n */\n delete(callback: any) {\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Element\n );\n handler.interface.OnGetSelectSet = (data: any) => {\n if (data && data.guids && data.guids.length > 0) {\n for (let i = 0; i < data.guids.length; i++) {\n StampUtil.deleteElement(data.guids[i]);\n }\n }\n StampUtil.closeSelectState();\n typeof callback == \"function\" && callback(data.guids);\n };\n element_interface.ObjectEdit(\n handler.CommandType.ElementCommand_GetSelectSet\n );\n }\n\n /**\n * 编辑:贴地\n */\n toGround(callback: any) {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Element\n );\n const element_interface = StampUtil.getLibax().element_interface;\n element_interface.ObjectEdit(\n handler.CommandType.ElementCommand_ClampTerrain\n );\n element_interface.OnPositionChanged = (data: any) => {\n if (data && data.selectSet && data.selectSet.length > 0) {\n typeof callback == \"function\" && callback(data);\n }\n };\n }\n /**\n * 编辑:克隆\n */\n toClone(callback: any) {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Element\n );\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n handler.interface.OnGetSelectSet = (data: any) => {\n StampUtil.closeSelectState();\n StampUtil.closePick();\n if (data && data.guids && data.guids.length > 0) {\n element_interface.OnAdded = (res: any) => {\n StampUtil.addToUserDataArr(res);\n typeof callback == \"function\" && callback(res, data.guids);\n };\n element_interface.clone_element(data.guids);\n } else {\n typeof callback == \"function\" && callback([]);\n }\n };\n element_interface.ObjectEdit(handler.CommandType.ElementCommand_Pick);\n const earth =\n StampUtil.getLibax().player.webRtcController.videoPlayer.videoElement;\n earth.oncontextmenu = () => {\n earth.oncontextmenu = null;\n StampUtil.closeSelectState();\n StampUtil.closePick();\n };\n }\n /**\n * 编辑:移动顶点\n */\n movePoint(callback: any) {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Element\n );\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n element_interface.ObjectEdit(handler.CommandType.ElementCommand_MovePoint);\n element_interface.OnPositionChanged = (data: any) => {\n if (data && data.selectSet && data.selectSet.length > 0) {\n typeof callback == \"function\" && callback(data);\n }\n };\n }\n /**\n * 编辑:增加顶点\n */\n insertPoint(callback: any) {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Element\n );\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n element_interface.ObjectEdit(handler.CommandType.ElementCommand_AddPoint);\n element_interface.OnPositionChanged = (data: any) => {\n if (data && data.selectSet && data.selectSet.length > 0) {\n typeof callback == \"function\" && callback(data);\n }\n };\n }\n /**\n * 编辑:删除顶点\n */\n deletePoint(callback: any) {\n const handler = StampUtil.getLibax().handlers.get(\n StampAPI.LibAx.StampPixelStreamingHandleType.StampType_Element\n );\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n element_interface.ObjectEdit(\n handler.CommandType.ElementCommand_DeletePoint\n );\n element_interface.OnPositionChanged = (data: any) => {\n if (data && data.selectSet && data.selectSet.length > 0) {\n typeof callback == \"function\" && callback(data);\n }\n };\n }\n\n //#endregion\n\n //#region 场景功能\n /**\n * 视频录制开始\n * @param videoName\n * @param videoExt mp4或者webm\n */\n recordVideoStart(videoName = \"capture\", videoExt = \"webm\") {\n const video = document.getElementById(\"streamingVideo\") as any;\n const stream = video.captureStream(30);\n let options = {\n mimeType: \"video/webm; codecs=vp9\", // 输出格式; 编码格式\n videoBitsPerSecond: 8 * 1024 * 1024, //推荐8Mbps 8K画质\n timeSlice: 1000, // 分段存储(毫秒)\n frameInterval: 10, //采集关键帧间隔\n };\n if (videoExt && videoExt.toLowerCase() == \"mp4\") {\n options = {\n mimeType: \"video/mp4; codecs=vp9\", // 输出格式; 编码格式\n videoBitsPerSecond: 8 * 1024 * 1024, //推荐8Mbps 8K画质\n timeSlice: 1000, // 分段存储(毫秒)\n frameInterval: 10, //采集关键帧间隔\n };\n }\n\n this.recordedChunks = [];\n this.mediaRecorder = new MediaRecorder(stream, options);\n this.mediaRecorder.ondataavailable = (event: any) => {\n if (event.data.size > 0) {\n this.recordedChunks.push(event.data);\n const blob = new Blob(this.recordedChunks, {\n type: `video/${videoExt}`,\n });\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = `${videoName}.${videoExt}`;\n a.click();\n window.URL.revokeObjectURL(url);\n }\n };\n this.mediaRecorder.start();\n }\n /**\n * 视频录制结束\n */\n recordVideoStop() {\n if (this.mediaRecorder) {\n this.mediaRecorder.stop();\n }\n }\n /**\n * 出图\n * @param filename 图片名称\n */\n screenShot(filename: any, width?: any, height?: any) {\n const video = document.querySelector(\"#streamingVideo\") as HTMLVideoElement;\n const canvas = document.createElement(\"canvas\") as HTMLCanvasElement;\n canvas.width = width || video.videoWidth;\n canvas.height = height || video.videoHeight;\n const cContext = canvas.getContext(\"2d\") as any;\n if (cContext) {\n cContext.drawImage(video, 0, 0, canvas.width, canvas.height); // 图片大小和视频分辨率一致\n }\n\n canvas.toBlob(\n function (blob: any) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.style.display = \"none\";\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n setTimeout(function () {\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n }, 1000);\n },\n \"image/jpeg\",\n 1\n );\n }\n\n /**\n * 独立场景\n */\n independentScene() {\n this.clearTerrainResult();\n StampUtil.createPolygon().then((data: any) => {\n StampUtil.getLibax().shape_creator_interface.clear();\n if (data.Points == undefined || data.Points.length < 3) {\n return;\n }\n const terrain_manager_interface =\n StampAPI.LibAx.terrain_manager_interface(StampUtil.getLibax());\n const pointsArr = [];\n for (let i = 0; i < data.Points.length; i++) {\n pointsArr.push({\n x: data.Points[i].X,\n y: data.Points[i].Y,\n z: data.Points[i].Z,\n });\n }\n const polygon = pointsArr;\n const need_fill = true;\n const depth = -10;\n const b_use_dom = false;\n terrain_manager_interface.get_terrain_by_polygon(\n polygon,\n need_fill,\n \"\",\n \"\",\n depth,\n b_use_dom\n );\n });\n }\n\n /**\n * 遮罩\n */\n maskScreenByPolygon(transparentValue = 1) {\n this.clearTerrainResult();\n StampUtil.createPolygon().then((data: any) => {\n StampUtil.getLibax().shape_creator_interface.clear();\n if (data.Points == undefined || data.Points.length < 3) {\n return;\n }\n const terrain_manager_interface =\n StampAPI.LibAx.terrain_manager_interface(StampUtil.getLibax());\n const pointsArr = [];\n for (let i = 0; i < data.Points.length; i++) {\n pointsArr.push({\n x: data.Points[i].X,\n y: data.Points[i].Y,\n z: data.Points[i].Z,\n });\n }\n const polygon = [pointsArr];\n terrain_manager_interface.mask_screen_by_polygon(\n polygon,\n transparentValue\n );\n });\n }\n\n /**\n * 遮罩扩展版(基于 element guid)\n * @param maskEnable 是否启用遮罩\n * @param fillColor 外层颜色(含透明度),默认 0x80000000\n * @param borderColor 边框颜色(不使用颜色上的透明度,透明度跟 fillColor 一致),默认 0xffffffff\n * @param borderWidth 边框宽度,默认 5\n * @param shapeType 形状类型:polygon(多边形)| circle(圆形),默认 polygon\n */\n maskScreenByPolygonEx(\n maskEnable: boolean,\n fillColor = 0x80000000,\n borderColor = 0xffffffff,\n borderWidth = 5,\n shapeType: \"polygon\" | \"circle\" = \"polygon\"\n ) {\n if (!maskEnable) {\n if (this._maskScreenExGuid) {\n const environment_interface = StampAPI.LibAx.environment_interface(\n StampUtil.getLibax()\n );\n environment_interface.mask(\n false,\n this._maskScreenExGuid,\n fillColor,\n borderColor,\n borderWidth\n );\n this._maskScreenExGuid = null;\n }\n return;\n }\n const drawFn =\n shapeType === \"circle\"\n ? StampUtil.createElementCircle()\n : StampUtil.createElementPolygon();\n drawFn.then((res: any) => {\n if (!res || !res.guid) return;\n this._maskScreenExGuid = res.guid;\n const environment_interface = StampAPI.LibAx.environment_interface(\n StampUtil.getLibax()\n );\n environment_interface.mask(\n true,\n res.guid,\n fillColor,\n borderColor,\n borderWidth\n );\n });\n }\n\n /**\n * 清除遮罩场景\n */\n clearMaskScreenEx() {\n if (this._maskScreenExGuid) {\n const environment_interface = StampAPI.LibAx.environment_interface(\n StampUtil.getLibax()\n );\n environment_interface.mask(\n false,\n this._maskScreenExGuid,\n 0x80000000,\n 0xffffffff,\n 5\n );\n this._maskScreenExGuid = null;\n }\n }\n\n /**\n * 场景漫游:开始漫游\n * @param roleid 角色ID\n */\n startRoamTrack(roleid: string, roamtype = 2) {\n return new Promise((resolve, reject) => {\n const roam_interface = StampUtil.getLibax().roam_interface;\n roam_interface.OnRoleLoaded = function (data: any) {\n roam_interface.OnRoleLoaded = undefined;\n StampUtil.getLibax().shape_creator_interface.clear();\n //第一次添加运动物体后漫游视角没有跟着动,暂时加个延时解决\n roam_interface.start_tracking(roleid, roamtype);\n resolve(data);\n };\n roam_interface.add_role(roleid);\n });\n }\n\n /**\n * 改变漫游人称视角\n * @param roleid 角色ID\n * @param roamType 人称视角: 1、第一人称;2:第三人称跟随模式\n */\n changeRoamType(roleid: string, roamType: number) {\n const roam_interface = StampAPI.LibAx.roam_interface(StampUtil.getLibax());\n roam_interface.start_tracking(roleid, roamType);\n }\n\n /**\n * 停止漫游\n */\n stopRoamTrack() {\n const roam_interface = StampAPI.LibAx.roam_interface(StampUtil.getLibax());\n roam_interface.stop_tracking();\n roam_interface.OnRoleLoaded = undefined;\n }\n removeRole(roleid: string) {\n const roam_interface = StampAPI.LibAx.roam_interface(StampUtil.getLibax());\n roam_interface.remove_role(roleid);\n }\n /**\n * 改变朝向\n */\n changeThirdTrackHeading(direction: number, roleid: string) {\n const roam_interface = StampAPI.LibAx.roam_interface(StampUtil.getLibax());\n roam_interface.change_third_track_heading(direction, roleid);\n }\n\n /**\n * 鼠标按键按下\n * @param event\n * @param type\n * @param is_animation\n * @param callback\n */\n location_key_down_func(\n event: any,\n type: number,\n is_animation: boolean,\n isDynamicPeople: boolean,\n dynamicName: string,\n walkSpeed: number,\n runSpeed: number,\n isGoing: boolean,\n callback: any\n ) {\n const roam_interface = StampAPI.LibAx.roam_interface(StampUtil.getLibax());\n if (type != 0) {\n if (event.shiftKey && event.which === 16) {\n // shift按下\n if (isGoing) {\n // 正在行走,改成跑步\n roam_interface.set_velocity(0.0, 0.0, runSpeed);\n }\n } else if (event.shiftKey && event.which === 87) {\n //同时按下shift和w键\n isGoing = true;\n roam_interface.set_velocity(0.0, 0.0, runSpeed);\n if (isDynamicPeople && !is_animation) {\n is_animation = true;\n roam_interface.play_animation(dynamicName + \"_Anim\");\n }\n } else if (event.shiftKey && event.which === 83) {\n //同时按下shift和s键\n isGoing = true;\n roam_interface.set_velocity(0.0, 0.0, -runSpeed);\n if (isDynamicPeople && !is_animation) {\n is_animation = true;\n roam_interface.play_animation(dynamicName + \"_Anim\");\n }\n } else {\n switch (event.keyCode) {\n case 87: //w前进\n isGoing = true;\n roam_interface.set_velocity(0.0, 0.0, walkSpeed);\n if (isDynamicPeople && !is_animation) {\n //前进和后退需要动作\n is_animation = true;\n roam_interface.play_animation(dynamicName + \"_Anim\");\n }\n break;\n case 65: //a左转\n roam_interface.set_rotation_velocity(-60);\n break;\n case 68: //d右转\n roam_interface.set_rotation_velocity(60);\n break;\n case 83: //s后退\n isGoing = true;\n roam_interface.set_velocity(0.0, 0.0, -walkSpeed);\n if (isDynamicPeople && !is_animation) {\n is_animation = true;\n roam_interface.play_animation(dynamicName + \"_Anim\");\n }\n break;\n }\n }\n }\n callback(is_animation, isGoing);\n }\n\n /**\n * 鼠标按键松开\n * @param event\n * @param type\n * @param is_animation\n * @param callback\n */\n location_key_up_func(\n event: any,\n type: number,\n is_animation: any,\n isDynamicPeople: boolean,\n dynamicName: string,\n walkSpeed: number,\n isGoing: boolean,\n callback: any\n ) {\n const roam_interface = StampAPI.LibAx.roam_interface(StampUtil.getLibax());\n if (type != 0) {\n if (!event.shiftKey && event.which === 16) {\n //shift按键抬起\n if (isGoing) {\n //运动中,改成慢行\n roam_interface.set_velocity(0.0, 0.0, walkSpeed);\n } else {\n //否则就停止\n roam_interface.set_velocity(0.0, 0.0, 0.0);\n }\n } else {\n switch (event.keyCode) {\n case 87: //w前进\n isGoing = false;\n roam_interface.set_velocity(0.0, 0.0, 0.0);\n if (isDynamicPeople && is_animation) {\n is_animation = false;\n roam_interface.stop_animation(dynamicName + \"_Anim\");\n }\n break;\n case 65: //a左转\n roam_interface.set_rotation_velocity(0.0);\n break;\n case 68: //d右转\n roam_interface.set_rotation_velocity(0.0);\n break;\n case 83: //s后退\n isGoing = false;\n roam_interface.set_velocity(0.0, 0.0, 0.0);\n if (isDynamicPeople && is_animation) {\n is_animation = false;\n roam_interface.stop_animation(dynamicName + \"_Anim\");\n }\n break;\n }\n }\n }\n callback(is_animation, isGoing);\n }\n /**\n * 多边形是否有点在工程范围内\n * @param polygonPoints\n * @param lonlatBox\n * @returns\n */\n isInProject(polygonPoints: any, lonlatBox: any) {\n if (!lonlatBox) {\n return true;\n }\n for (let i = 0; i < polygonPoints.length; i++) {\n const llBox = {\n West: 0,\n East: 0,\n North: 0,\n South: 0,\n };\n for (let j = 0; j < polygonPoints[i].length; j++) {\n if (\n parseFloat(polygonPoints[i][j].x) > lonlatBox.West &&\n parseFloat(polygonPoints[i][j].x) < lonlatBox.East &&\n parseFloat(polygonPoints[i][j].y) > lonlatBox.South &&\n parseFloat(polygonPoints[i][j].y) < lonlatBox.North\n ) {\n return true; //在范围内\n }\n llBox.East =\n llBox.East == 0\n ? parseFloat(polygonPoints[i][j].x)\n : Math.max(parseFloat(polygonPoints[i][j].x), llBox.East);\n llBox.West =\n llBox.West == 0\n ? parseFloat(polygonPoints[i][j].x)\n : Math.min(parseFloat(polygonPoints[i][j].x), llBox.West);\n llBox.North =\n llBox.North == 0\n ? parseFloat(polygonPoints[i][j].y)\n : Math.min(parseFloat(polygonPoints[i][j].y), llBox.North);\n llBox.South =\n llBox.South == 0\n ? parseFloat(polygonPoints[i][j].y)\n : Math.min(parseFloat(polygonPoints[i][j].y), llBox.South);\n }\n if (\n (lonlatBox.West > llBox.West &&\n lonlatBox.West < llBox.East &&\n lonlatBox.North < llBox.North &&\n lonlatBox.North > llBox.South) || //左上角\n (lonlatBox.West > llBox.West &&\n lonlatBox.West < llBox.East &&\n lonlatBox.South < llBox.North &&\n lonlatBox.South > llBox.South) || //左下角\n (lonlatBox.East > llBox.West &&\n lonlatBox.East < llBox.East &&\n lonlatBox.North < llBox.North &&\n lonlatBox.North > llBox.South) || //右上角\n (lonlatBox.East > llBox.West &&\n lonlatBox.East < llBox.East &&\n lonlatBox.South < llBox.North &&\n lonlatBox.South > llBox.South)\n ) {\n //右下角\n return true; //在范围内\n }\n }\n return false; //不在范围内\n }\n /**\n * 图层压平\n */\n async flattenLayerByRegionAndHeightWithGuid(\n params = {\n height: 0,\n layerids: \"\",\n polygonPoints: [] as Array<Array<any>>,\n }\n ) {\n if (params.layerids == undefined) {\n return;\n }\n if (Object.keys(this.projectModelLayerMap).length == 0) {\n await this.initProjectModelLayerMap(); //获取工程和模型图层对应关系\n }\n const layeridArr = params.layerids.split(\",\");\n //根据工程范围筛选图层\n for (const item in this.projectModelLayerMap) {\n //不在范围内则需要从guid列表里面剔除\n if (\n !this.isInProject(\n params.polygonPoints,\n this.projectModelLayerMap[item].lonlatBox\n )\n ) {\n const layerArr = this.projectModelLayerMap[item].layers;\n for (let i = 0; i < layerArr.length; i++) {\n const iIndex = layeridArr.indexOf(layerArr[i].guid);\n if (iIndex != -1) {\n layeridArr.splice(iIndex, 1); //剔除\n }\n }\n }\n }\n const layerids = layeridArr.join(\",\");\n return new Promise((resolve) => {\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampUtil.getLibax()\n );\n layer_manager_interface.OnEffectFinish = function (data: any) {\n layer_manager_interface.OnEffectFinish = undefined;\n resolve(data);\n };\n const polygonPoints = params.polygonPoints;\n const height = params.height || 0;\n const paramsObj = [polygonPoints, layerids, height, true];\n layer_manager_interface.flatten_layer_by_region_and_height_with_guid(\n paramsObj\n );\n });\n }\n\n /**\n * 清除压平效果\n */\n async clearEffect(guid = \"\") {\n return new Promise((resolve) => {\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampUtil.getLibax()\n );\n layer_manager_interface.OnEffectFinish = function (data: any) {\n layer_manager_interface.OnEffectFinish = undefined;\n resolve(data);\n };\n layer_manager_interface.clear_effect(guid);\n });\n }\n\n /**\n * 获取父节点图层\n * @param layerArr\n * @returns\n */\n getParentLayerNode(layerInfo: any, layerid: string) {\n const layerArr = layerInfo.sub_layers;\n if (!layerArr) {\n return null;\n }\n for (let i = 0; i < layerArr.length; i++) {\n if (layerArr[i].guid == layerid) {\n return layerInfo;\n } else if (layerArr[i].sub_layers && layerArr[i].sub_layers.length > 0) {\n //有子图层\n const tmpLayer = this.getParentLayerNode(layerArr[i], layerid) as any;\n if (tmpLayer) {\n return tmpLayer;\n }\n }\n }\n return null;\n }\n\n /**\n * 获取模型图层guids\n * @param layerArr\n * @returns\n */\n getUpdateModelLayerids(layerArr: any, planFolderGuid = \"\") {\n let modelArr = [] as any;\n for (let i = 0; i < layerArr.length; i++) {\n if (\n layerArr[i].sub_layers &&\n layerArr[i].sub_layers.length > 0 &&\n layerArr[i].rtti != STAMP_RTTI.SE_RTTI_PIPELINE_LAYER && //非管线图层\n layerArr[i].guid !== planFolderGuid\n ) {\n const demids = StampUtil.getUpdateModelLayerids(\n layerArr[i].sub_layers,\n planFolderGuid\n ) as any;\n modelArr = modelArr.concat(demids);\n } else {\n if (\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_MODEL_LOD_LAYER ||\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_BUILDING_LAYER\n ) {\n modelArr.push({\n guid: layerArr[i].guid,\n name: layerArr[i].name,\n rtti: layerArr[i].rtti,\n });\n }\n }\n }\n return modelArr;\n }\n\n /**\n * 获取模型图层guids\n * @param layerArr\n * @returns\n */\n getModelLayerids(layerArr: any, planFolderGuid = \"\") {\n let modelArr = [] as any;\n for (let i = 0; i < layerArr.length; i++) {\n if (\n layerArr[i].sub_layers &&\n layerArr[i].sub_layers.length > 0 &&\n layerArr[i].rtti != STAMP_RTTI.SE_RTTI_PIPELINE_LAYER && //非管线图层\n layerArr[i].guid !== planFolderGuid\n ) {\n const demids = StampUtil.getModelLayerids(\n layerArr[i].sub_layers,\n planFolderGuid\n ) as any;\n modelArr = modelArr.concat(demids);\n } else {\n if (\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_MODEL_LOD_LAYER ||\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_UE_MODEL_LAYER ||\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_BLOCK_LAYER ||\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_OBLIQUE_PHOTO_LAYER ||\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_BILLBOARD_LAYER ||\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_MATCH_MODEL_LAYER ||\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_BUILDING_LAYER ||\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_BIM_LAYER\n ) {\n modelArr.push({\n guid: layerArr[i].guid,\n name: layerArr[i].name,\n rtti: layerArr[i].rtti,\n });\n }\n }\n }\n return modelArr;\n }\n\n /**\n * 获取模型图层guids(除去树模型的)\n * @param layerArr\n * @returns\n */\n getBuildingModelLayerids(layerArr: any) {\n let modelArr = [] as any;\n for (let i = 0; i < layerArr.length; i++) {\n if (\n layerArr[i].sub_layers &&\n layerArr[i].sub_layers.length > 0 &&\n layerArr[i].rtti != STAMP_RTTI.SE_RTTI_PIPELINE_LAYER //非管线图层\n ) {\n const demids = StampUtil.getBuildingModelLayerids(\n layerArr[i].sub_layers\n ) as any;\n modelArr = modelArr.concat(demids);\n } else {\n if (\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_MODEL_LOD_LAYER ||\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_UE_MODEL_LAYER ||\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_BLOCK_LAYER ||\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_BUILDING_LAYER ||\n layerArr[i].rtti == STAMP_RTTI.SE_RTTI_BIM_LAYER\n ) {\n modelArr.push({\n guid: layerArr[i].guid,\n name: layerArr[i].name,\n rtti: layerArr[i].rtti,\n });\n }\n }\n }\n return modelArr;\n }\n\n /**\n * 获取图层对象\n * @param layerArr 图层数组\n * @param rtti 图层类型\n * @returns\n */\n getLayeridsByType(layerArr: any, rtti: number) {\n let modelArr = [] as any;\n for (let i = 0; i < layerArr.length; i++) {\n if (\n layerArr[i].sub_layers &&\n layerArr[i].sub_layers.length > 0 &&\n layerArr[i].rtti != STAMP_RTTI.SE_RTTI_PIPELINE_LAYER //非管线图层\n ) {\n const demids = StampUtil.getBuildingModelLayerids(\n layerArr[i].sub_layers\n ) as any;\n modelArr = modelArr.concat(demids);\n } else {\n if (layerArr[i].rtti == rtti) {\n modelArr.push({\n guid: layerArr[i].guid,\n name: layerArr[i].name,\n rtti: layerArr[i].rtti,\n });\n }\n }\n }\n return modelArr;\n }\n\n /**\n * 获取倾斜模型图层guids\n * @param layerArr\n * @returns\n */\n getObliquePhotoLayerids(layerArr: any) {\n let modelArr = [] as any;\n for (let i = 0; i < layerArr.length; i++) {\n if (\n layerArr[i].sub_layers &&\n layerArr[i].sub_layers.length > 0 &&\n layerArr[i].rtti != STAMP_RTTI.SE_RTTI_PIPELINE_LAYER //非管线图层\n ) {\n const demids = StampUtil.getObliquePhotoLayerids(\n layerArr[i].sub_layers\n ) as any;\n modelArr = modelArr.concat(demids);\n } else {\n if (layerArr[i].rtti == STAMP_RTTI.SE_RTTI_OBLIQUE_PHOTO_LAYER) {\n modelArr.push({\n guid: layerArr[i].guid,\n name: layerArr[i].name,\n rtti: layerArr[i].rtti,\n keyfield: layerArr[i].keyfield,\n });\n }\n }\n }\n return modelArr;\n }\n\n /**\n *双屏显示\n */\n doubleScreen(earthDomElement: any, errorDomElement: any) {\n return new Promise((resolve: any) => {\n const earthDiv = document.getElementById(\"earthDiv\");\n const earthDiv1 = document.getElementById(\"earthDiv1\");\n const earthDiv2 = document.getElementById(\"earthDiv2\");\n earthDiv?.classList.remove(\"whole\");\n earthDiv?.classList.add(\"half\");\n earthDiv1?.classList.add(\"half\");\n earthDiv1?.classList.remove(\"hide\");\n earthDiv?.classList.remove(\"three\");\n earthDiv1?.classList.remove(\"three\");\n earthDiv2?.classList.remove(\"three\");\n earthDiv2?.classList.add(\"hide\");\n\n if (StampAPI.lib_ax2 && StampAPI.lib_ax2.player != undefined) {\n StampAPI.lib_ax2.player.webRtcController.closeSignalingServer();\n StampAPI.lib_ax2.earthDomElement = null;\n }\n\n if (StampAPI.lib_ax1 && StampAPI.lib_ax1.earthDomElement != null) {\n resolve();\n } else {\n StampAPI.initVideoPlayer({\n earthDomElement: earthDomElement,\n errorDomElement: errorDomElement,\n iIndex: 1,\n }).then(() => {\n resolve();\n });\n }\n });\n }\n /**\n * 三屏显示\n */\n threeScreen(earthDomElement1: any, earthDomElement2: any) {\n return new Promise((resolve: any) => {\n const earthDiv = document.getElementById(\"earthDiv\");\n const earthDiv1 = document.getElementById(\"earthDiv1\");\n const earthDiv2 = document.getElementById(\"earthDiv2\");\n earthDiv?.classList.remove(\"whole\");\n earthDiv?.classList.add(\"three\");\n earthDiv1?.classList.add(\"three\");\n earthDiv1?.classList.remove(\"hide\");\n earthDiv2?.classList.add(\"three\");\n earthDiv2?.classList.remove(\"hide\");\n earthDiv?.classList.remove(\"half\");\n earthDiv1?.classList.remove(\"half\");\n\n if (StampAPI.lib_ax1 && StampAPI.lib_ax1.earthDomElement != null) {\n StampAPI.initVideoPlayer({\n earthDomElement: earthDomElement2.earthDiv2,\n errorDomElement: earthDomElement2.errorDiv2,\n iIndex: 2,\n }).then(() => {\n resolve();\n });\n } else {\n StampAPI.initVideoPlayer({\n earthDomElement: earthDomElement1.earthDiv1,\n errorDomElement: earthDomElement1.errorDiv1,\n iIndex: 1,\n }).then(() => {\n StampAPI.initVideoPlayer({\n earthDomElement: earthDomElement2.earthDiv2,\n errorDomElement: earthDomElement2.errorDiv2,\n iIndex: 2,\n }).then(() => {\n resolve();\n });\n });\n }\n });\n }\n /**\n *单屏显示\n */\n singleScreen() {\n const earthDiv = document.getElementById(\"earthDiv\");\n const earthDiv1 = document.getElementById(\"earthDiv1\");\n const earthDiv2 = document.getElementById(\"earthDiv2\");\n earthDiv?.classList.remove(\"half\");\n earthDiv?.classList.add(\"whole\");\n earthDiv1?.classList.add(\"hide\");\n earthDiv1?.classList.remove(\"half\");\n earthDiv?.classList.remove(\"three\");\n earthDiv1?.classList.remove(\"three\");\n earthDiv2?.classList.remove(\"three\");\n earthDiv2?.classList.add(\"hide\");\n if (StampAPI.lib_ax1 && StampAPI.lib_ax1.player != undefined) {\n StampAPI.lib_ax1.player.webRtcController.closeSignalingServer();\n StampAPI.lib_ax1.earthDomElement = null;\n }\n if (StampAPI.lib_ax2 && StampAPI.lib_ax2.player != undefined) {\n StampAPI.lib_ax2.player.webRtcController.closeSignalingServer();\n StampAPI.lib_ax2.earthDomElement = null;\n }\n this.updateEarthSize();\n }\n /**\n * 联动\n */\n syncControl(screen_num = 2) {\n const params = [1];\n const handlers = [] as any;\n handlers[0] = StampAPI.LibAx.global_control_interface(StampAPI.lib_ax);\n handlers[1] = StampAPI.LibAx.global_control_interface(StampAPI.lib_ax1);\n if (StampAPI.lib_ax2) {\n handlers[2] = StampAPI.LibAx.global_control_interface(StampAPI.lib_ax2);\n }\n\n for (let i = 0; i < screen_num; i++) {\n handlers[i].double_screen_sync(params);\n }\n\n StampAPI.LibAx.double_screen_sync = true;\n StampUtil.sync(screen_num);\n }\n\n sync(screen_num: number) {\n const observer_handlers = [] as any;\n const handlers = [] as any;\n const goto_lookat_finisheds = [] as any;\n let goto_lookat_all_finished = true;\n\n if (StampAPI.lib_ax) {\n observer_handlers[0] = StampAPI.LibAx.globe_observer_interface(\n StampAPI.lib_ax\n );\n }\n\n if (StampAPI.lib_ax1) {\n observer_handlers[1] = StampAPI.LibAx.globe_observer_interface(\n StampAPI.lib_ax1\n );\n }\n if (StampAPI.lib_ax2) {\n observer_handlers[2] = StampAPI.LibAx.globe_observer_interface(\n StampAPI.lib_ax2\n );\n }\n if (StampAPI.lib_ax) {\n handlers[0] = StampAPI.LibAx.global_control_interface(StampAPI.lib_ax);\n }\n if (StampAPI.lib_ax1) {\n handlers[1] = StampAPI.LibAx.global_control_interface(StampAPI.lib_ax1);\n }\n if (StampAPI.lib_ax2) {\n handlers[2] = StampAPI.LibAx.global_control_interface(StampAPI.lib_ax2);\n }\n\n for (let i = 0; i < screen_num; ++i) {\n goto_lookat_finisheds[i] = false;\n }\n for (let i = 0; i < screen_num; ++i) {\n handlers[i].OnFlytoFinished = function (data: any, handler: any) {\n if (!StampAPI.LibAx.double_screen_sync) {\n return;\n }\n\n getPose(handler);\n };\n\n handlers[i].OnObserverChanged = function (data: any, handler: any) {\n if (!StampAPI.LibAx.double_screen_sync || !goto_lookat_all_finished) {\n if (StampAPI.LibAx.double_screen_sync) {\n update_finish_status(handler);\n }\n\n return;\n }\n\n getPose(handler);\n };\n\n observer_handlers[i].OnGetPoseFinished = function (\n data: any,\n handler: any\n ) {\n if (StampAPI.LibAx.double_screen_sync) {\n const params = [];\n params[0] = data.lon;\n params[1] = data.lat;\n params[2] = data.alt;\n params[3] = data.heading;\n params[4] = data.tilt;\n params[5] = data.roll;\n params[6] = 0;\n\n for (\n let second_screen_index = 0;\n second_screen_index < screen_num;\n ++second_screen_index\n ) {\n if (observer_handlers[second_screen_index] != handler) {\n goto_lookat_finisheds[second_screen_index] = false;\n handlers[second_screen_index].go_to_lookat(params);\n } else {\n goto_lookat_finisheds[second_screen_index] = true;\n }\n }\n }\n };\n\n handlers[i].OnGotoLookAtFinished = function (data: any, handler: any) {};\n }\n\n observer_handlers[0].get_pose();\n\n function update_finish_status(handler: any) {\n const current_index = find_handler_index(handler);\n goto_lookat_finisheds[current_index] = true;\n goto_lookat_all_finished = check_goto_lookat_finshed();\n }\n\n function check_goto_lookat_finshed() {\n for (let i = 0; i < screen_num; ++i) {\n if (!goto_lookat_finisheds[i]) {\n return false;\n }\n }\n return true;\n }\n\n function getPose(handler: any) {\n const current_index = find_handler_index(handler);\n observer_handlers[current_index].get_pose();\n goto_lookat_all_finished = false;\n for (let i = 0; i < screen_num; ++i) {\n goto_lookat_finisheds[i] = false;\n }\n }\n\n function find_handler_index(handler: any) {\n for (let i = 0; i < screen_num; ++i) {\n if (handler == handlers[i]) {\n return i;\n }\n }\n\n return -1;\n }\n }\n\n /**\n * 返回左下角信息栏信息\n * @constructor\n */\n getObserverChangedEvent(callback: any) {\n const handler = StampUtil.getLibax().global_control_interface;\n const observer_handler = StampUtil.getLibax().globe_observer_interface;\n handler.double_screen_sync([1]); //开启监控\n handler.OnObserverChanged = function () {\n observer_handler.get_pose();\n };\n observer_handler.OnGetPoseFinished = function (data: any) {\n typeof callback == \"function\" && callback(data);\n };\n }\n\n /**\n * 取消联动\n */\n closeSyncControl() {\n try {\n const handler = StampAPI.lib_ax.global_control_interface;\n const handler1 = StampAPI.lib_ax1.global_control_interface;\n\n const params = [0];\n handler.double_screen_sync(params);\n handler1.double_screen_sync(params);\n\n if (StampAPI.lib_ax2) {\n const handler2 = StampAPI.lib_ax2.global_control_interface;\n handler2.double_screen_sync(params);\n }\n\n StampAPI.LibAx.double_screen_sync = false;\n const focus = StampAPI.LibAx.focus.focus_none;\n } catch (ex) {}\n }\n\n /**\n *创建GPS路径\n * @param guid\n * @param points\n * @param isSpherical 默认为true 经纬度坐标,false为平面投影坐标\n */\n createGpsTrack(guid: string, points: any, isSpherical: any = true) {\n const gps_interface = StampAPI.LibAx.gps_interface(StampUtil.getLibax());\n for (let i = 0; i < points.length - 1; i++) {\n gps_interface.add_pre_gps(\n guid,\n points[i].x,\n points[i].y,\n points[i].z,\n points[i + 1].x,\n points[i + 1].y,\n points[i + 1].z,\n 1.0,\n isSpherical\n );\n }\n }\n\n /**\n *开始运动\n * @param params\n * @param view 3:跟随;4:不跟随\n * @returns\n */\n playGps(\n params = {\n gpsTrackGuid: \"\", //gpstrack路径guid\n modelUrl: \"\", //运动物体guid\n attachModelGuid: \"\", //模型guid\n attachUePOIGuid: \"\", //附加UEPOI的guid\n elevationType: 0, //高程类型(0:数据高程;1:地形高程)\n } as any,\n view: any,\n keepTiltRoll: boolean //不穿就默认为false\n ) {\n return new Promise((resolve) => {\n const gps_id = params.gpsTrackGuid || \"\";\n const dynamic_id = params.modelUrl || \"\";\n const viewType = view;\n const gps_interface = StampAPI.LibAx.gps_interface(StampUtil.getLibax());\n const dynamic_system_interface = StampAPI.LibAx.dynamic_system_interface(\n StampUtil.getLibax()\n );\n dynamic_system_interface.OnLoadDynamicObject = async function (\n data: any\n ) {\n dynamic_system_interface.OnLoadDynamicObject = undefined;\n if (params.attachModelGuid) {\n //需要附加模型\n StampUtil.attachSubObject({\n modelGuid: data.guid, //运动物体guid\n subGuid: params.attachModelGuid, //Element对象guid\n posOffset: { x: 0, y: 0, z: 0 }, //位置偏移\n rotOffset: { x: 0, y: Math.PI / 2, z: 0 }, //旋转偏移\n });\n }\n if (params.elevationType == 2 && params.attachUePOIGuid) {\n const options = {\n guid: params.attachUePOIGuid,\n name: params.attachUePOIGuid,\n longitude: 121.571006,\n latitude: 29.878591,\n altitude: 22.663105,\n visible: true,\n type: 330,\n editable: 1,\n selectable: 1,\n widgetBlueprintName: \"/Engine/POI/POI_8.POI_8\",\n widgetPrivot: [0.5, 0.5],\n widgetSize: [199, 59],\n widgetSpace: 0,\n poi_texts: [\n 2,\n \"Text_CN\",\n \"\", //速度文本\n \"Light\",\n 22.5,\n 100,\n 0,\n 0,\n \"#FFE7E7E7\",\n \"#FFFFFFFF\",\n [1, 1],\n \"#00000000\",\n 0,\n \"Text_EN\",\n \"\", //底部文本\n \"Italic\",\n 11.25,\n 0,\n 0,\n 0,\n \"#FFFFFFFF\",\n \"#FFFFFFFF\",\n [1, 1],\n \"#00000000\",\n 0,\n ],\n poi_images: [1, \"Image_1\", \"T_POI_8.T_POI_8\", \"#FFFFFFFF\"],\n };\n const res: any = await StampUtil.createUEPoi(options);\n StampUtil.attachSubObject({\n modelGuid: data.guid, //运动物体guid\n subGuid: params.attachUePOIGuid, //Element对象guid\n posOffset: { x: 0, y: 12, z: 0 }, //位置偏移\n rotOffset: { x: 0, y: 0, z: 0 }, //旋转偏移\n });\n }\n gps_interface.set_height_type(\n gps_id,\n params.elevationType,\n params.attachUePOIGuid,\n [\"Text_CN\"]\n );\n gps_interface.play_track(gps_id, data.guid, viewType, keepTiltRoll);\n gps_interface.OnGPSTrackStart = function (gpsObj: any) {\n gps_interface.OnGPSTrackStart = null;\n if (gpsObj.guid == gps_id) {\n resolve(data);\n }\n };\n };\n dynamic_system_interface.load_dynamic_object(dynamic_id);\n });\n }\n setHeightType(\n gpsid: string,\n heightType: number,\n uepoiGuid: string,\n textid: Array<string>\n ) {\n const gps_interface = StampAPI.LibAx.gps_interface(StampUtil.getLibax());\n gps_interface.set_height_type(gpsid, heightType, uepoiGuid, textid);\n }\n setTrackType(guid: string, type: number) {\n const gps_interface = StampAPI.LibAx.gps_interface(StampUtil.getLibax());\n gps_interface.set_track_type(guid, type);\n }\n setMainTrack(guid: string, type: number) {\n const gps_interface = StampAPI.LibAx.gps_interface(StampUtil.getLibax());\n gps_interface.set_main_track(guid, type);\n }\n\n /**\n * 运动物体绑定一个Element对象\n * @param params\n */\n attachSubObject(\n params: any = {\n modelGuid: \"\", //运动物体guid\n subGuid: \"\", //Element对象guid\n posOffset: { x: 0, y: 0, z: 0 }, //位置偏移\n rotOffset: { x: 0, y: 0, z: 0 }, //旋转偏移\n }\n ) {\n const model_guid = params.modelGuid;\n const sub_guid = params.subGuid;\n const pos_offset = params.posOffset || { x: 0, y: 0, z: 0 };\n const rot_offset = params.rotOffset || { x: 0, y: 0, z: 0 };\n const dynamic_system_interface = StampAPI.LibAx.dynamic_system_interface(\n StampUtil.getLibax()\n );\n dynamic_system_interface.attach_sub_object(\n model_guid,\n sub_guid,\n pos_offset,\n rot_offset\n );\n }\n\n /**\n * 运动物体绑定一个Element对象\n * @param params\n */\n attachSubObjectBatch(\n params: any = [\n {\n modelGuid: \"\", //运动物体guid\n children: [\n {\n subGuid: \"\", //Element对象guid\n posOffset: { x: 0, y: 0, z: 0 }, //位置偏移\n rotOffset: { x: 0, y: 0, z: 0 }, //旋转偏移\n },\n ],\n },\n ]\n ) {\n const paramsArr = [];\n for (let i = 0; i < params.length; i++) {\n const children = [];\n for (let j = 0; j < params[i].children.length; j++) {\n children.push({\n sub_guid: params[i].children[j].subGuid,\n pos_offset: params[i].children[j].posOffset || { x: 0, y: 0, z: 0 },\n rot_offset: params[i].children[j].rotOffset || { x: 0, y: 0, z: 0 },\n });\n }\n paramsArr.push({\n model_guid: params[i].modelGuid,\n children: children,\n });\n }\n const dynamic_system_interface = StampAPI.LibAx.dynamic_system_interface(\n StampUtil.getLibax()\n );\n dynamic_system_interface.attach_sub_object_batch(paramsArr);\n }\n\n /**\n * 运动物体移除绑定的Element对象\n * @param modelGuid 运动物体guid\n * @param subGuid Element对象guid\n */\n detachSubObject(modelGuid: string, subGuid: string) {\n const dynamic_system_interface = StampAPI.LibAx.dynamic_system_interface(\n StampUtil.getLibax()\n );\n dynamic_system_interface.detach_sub_object(modelGuid, subGuid);\n }\n\n /**\n * 运动物体移除绑定的Element对象(批量)\n * @param [\n {\n modelGuid: \"\",\n children: [\"\"]\n }\n ]\n */\n detachSubObjectBatch(\n params: any = [\n {\n modelGuid: \"\",\n children: [\"\"],\n },\n ]\n ) {\n const pObj = [];\n for (let i = 0; i < params.length; i++) {\n const pObjChildren = [];\n for (let j = 0; j < params[i].children.length; j++) {\n pObjChildren.push(params[i].children[j]);\n }\n pObj.push({\n model_guid: params[i].modelGuid,\n children: pObjChildren,\n });\n }\n const dynamic_system_interface = StampAPI.LibAx.dynamic_system_interface(\n StampUtil.getLibax()\n );\n dynamic_system_interface.detach_sub_object_batch(pObj);\n }\n\n initGPSTrackEvent() {\n const gps_interface = StampAPI.LibAx.gps_interface(StampUtil.getLibax());\n gps_interface.OnGPSTrackLoaded = function (data: any) {\n if (data.guid in StampUtil.gpsTrackMap) {\n StampUtil.gpsTrackMap[data.guid].OnGPSTrackLoaded &&\n StampUtil.gpsTrackMap[data.guid].OnGPSTrackLoaded(data);\n }\n };\n gps_interface.OnGPSTrackStart = function (data: any) {\n if (data.results && Array.isArray(data.results)) {\n StampUtil.gpsTrackMap[\"batch\"].OnGPSTrackStart &&\n StampUtil.gpsTrackMap[\"batch\"].OnGPSTrackStart(data.results);\n } else if (data.guid in StampUtil.gpsTrackMap) {\n StampUtil.gpsTrackMap[data.guid].OnGPSTrackStart &&\n StampUtil.gpsTrackMap[data.guid].OnGPSTrackStart(data);\n }\n };\n gps_interface.OnGPSTrackFinished = function (data: any) {\n const trackGuidTemp = data[\"track\"] || data[\"track:\"]; //底层属性写错了,多了个冒号\n data[\"track\"] = trackGuidTemp;\n if (trackGuidTemp in StampUtil.gpsTrackMap) {\n StampUtil.gpsTrackMap[trackGuidTemp].OnGPSTrackFinished &&\n StampUtil.gpsTrackMap[trackGuidTemp].OnGPSTrackFinished(data);\n }\n };\n gps_interface.OnGPSTrackPicked = function (data: any) {\n if (data.guid in StampUtil.gpsTrackMap) {\n StampUtil.gpsTrackMap[data.guid].OnGPSTrackPicked &&\n StampUtil.gpsTrackMap[data.guid].OnGPSTrackPicked(data);\n }\n };\n }\n\n /**\n * 创建GPSTrack路径\n * @param params\n * @returns\n */\n createRealtimeGps2(\n params: any = {\n trackGuid: \"\",\n trackName: \"\",\n bindObject: \"\",\n followType: 3,\n virtualTime: 1.0,\n heightType: 1,\n stackSize: 50,\n information: \"\",\n bShowPath: false,\n bShowName: false,\n bShowInformation: false,\n nameColor: 0xff00ff00,\n infoColor: 0xffffffff,\n pathColor: 0xffffff00,\n OnGPSTrackLoaded: (data: any) => {},\n OnGPSTrackStart: (data: any) => {},\n OnGPSTrackFinished: (data: any) => {},\n OnGPSTrackPicked: (data: any) => {},\n }\n ) {\n const gps_interface = StampAPI.LibAx.gps_interface(StampUtil.getLibax());\n const localTrack = {\n id: params.trackGuid,\n name: params.trackName,\n OnGPSTrackLoaded: function (data: any) {\n if (data.guid != this.id) return;\n gps_interface.gps_list = gps_interface.gps_list || {};\n gps_interface.gps_list[data.guid] = data;\n params.OnGPSTrackLoaded && params.OnGPSTrackLoaded(data);\n },\n OnGPSTrackStart: function (data: any) {\n if (data.guid != this.id) return;\n params.OnGPSTrackStart && params.OnGPSTrackStart(data);\n },\n OnGPSTrackFinished: function (data: any) {\n if (data.track != this.id) return;\n if (data.bind) {\n //路径结束就卸载模型\n StampUtil.getLibax().dynamic_system_interface.unload_dynamic_object(\n data.bind\n );\n }\n params.OnGPSTrackFinished && params.OnGPSTrackFinished(data);\n },\n OnGPSTrackPicked: function (data: any) {\n if (data.guid != this.id) return;\n params.OnGPSTrackPicked && params.OnGPSTrackPicked(data);\n },\n };\n StampUtil.gpsTrackMap[params.trackGuid] = localTrack;\n gps_interface.play_gps_track_real_time(\n params.trackGuid,\n params.trackName,\n params.bindObject,\n params.followType,\n params.virtualTime,\n params.heightType,\n params.stackSize,\n params.information,\n params.bShowPath,\n params.bShowName,\n params.bShowInformation,\n params.nameColor,\n params.infoColor,\n params.pathColor\n );\n return localTrack;\n }\n async createRealtimeGpsBatch(\n paramsArr: any = [\n {\n trackGuid: \"\",\n trackName: \"\",\n bindObject: \"\",\n followType: 3,\n virtualTime: 1.0,\n heightType: 1,\n stackSize: 50,\n information: \"\",\n bShowPath: false,\n bShowName: false,\n bShowInformation: false,\n nameColor: 0xff00ff00,\n attachModelGuid: \"\",\n attachUePOIGuid: \"\", //附加UEPOI的guid\n OnGPSTrackLoaded: (data: any) => {},\n OnGPSTrackStart: (data: any) => {},\n OnGPSTrackFinished: (data: any) => {},\n OnGPSTrackPicked: (data: any) => {},\n },\n ],\n callbackInfo: any = {\n OnGPSTrackLoaded: (data: any) => {},\n OnGPSTrackStart: (data: any) => {},\n OnGPSTrackFinished: (data: any) => {},\n OnGPSTrackPicked: (data: any) => {},\n }\n ) {\n const gps_interface = StampAPI.LibAx.gps_interface(StampUtil.getLibax());\n const dynamic_system_interface = StampAPI.LibAx.dynamic_system_interface(\n StampUtil.getLibax()\n );\n const pArr = [];\n const guidArr = [] as any;\n for (let i = 0; i < paramsArr.length; i++) {\n const params = paramsArr[i];\n // const localTrack = {\n // id: params.trackGuid,\n // name: params.trackName,\n // OnGPSTrackLoaded: function (data: any) {\n //\n // if (data.guid != this.id) return;\n // gps_interface.gps_list = gps_interface.gps_list || {};\n // gps_interface.gps_list[data.guid] = data;\n // params.OnGPSTrackLoaded && params.OnGPSTrackLoaded(data);\n // },\n // OnGPSTrackStart: function (data: any) {\n //\n // if (data.guid != this.id) return;\n // params.OnGPSTrackStart && params.OnGPSTrackStart(data);\n // },\n // OnGPSTrackFinished: function (data: any) {\n // if (data.track != this.id) return;\n // if (data.bind) {\n // //路径结束就卸载模型\n // StampUtil.getLibax().dynamic_system_interface.unload_dynamic_object(\n // data.bind\n // );\n // }\n // params.OnGPSTrackFinished && params.OnGPSTrackFinished(data);\n // },\n // OnGPSTrackPicked: function (data: any) {\n // if (data.guid != this.id) return;\n // params.OnGPSTrackPicked && params.OnGPSTrackPicked(data);\n // },\n // };\n // StampUtil.playGpsTrackItem(params);\n guidArr.push(params.trackGuid);\n // StampUtil.gpsTrackMap[params.trackGuid] = localTrack;\n pArr.push(\n params.trackGuid,\n params.trackName,\n params.bindObject,\n params.followType,\n params.virtualTime,\n params.heightType,\n params.stackSize,\n params.information,\n params.bShowPath,\n params.bShowName,\n params.bShowInformation,\n params.nameColor,\n params.infoColor,\n params.pathColor\n );\n }\n StampUtil.gpsTrackMap[\"batch\"] = callbackInfo;\n\n gps_interface.play_gps_track_real_time_batch(pArr);\n }\n\n async playGpsTrackItem(params: any) {\n const gps_interface = StampAPI.LibAx.gps_interface(StampUtil.getLibax());\n StampUtil.loadDynamicObject(params.bindObject).then(async (data: any) => {\n if (params.attachModelGuid) {\n //需要附加模型\n await StampUtil.attachSubObject({\n modelGuid: data.guid, //运动物体guid\n subGuid: params.attachModelGuid, //Element对象guid\n posOffset: { x: 0, y: 2, z: 5 }, //位置偏移\n rotOffset: { x: 0, y: 45, z: 0 }, //旋转偏移\n });\n }\n if (params.heightType == 2 && params.attachUePOIGuid) {\n const options = {\n guid: params.attachUePOIGuid,\n name: params.attachUePOIGuid,\n longitude: 121.571006,\n latitude: 29.878591,\n altitude: 22.663105,\n visible: true,\n type: 330,\n editable: 1,\n selectable: 1,\n widgetBlueprintName: \"/Engine/POI/POI_8.POI_8\",\n widgetPrivot: [0.5, 0.5],\n widgetSize: [199, 59],\n widgetSpace: 0,\n poi_texts: [\n 2,\n \"Text_CN\",\n \"\", //速度文本\n \"Light\",\n 22.5,\n 100,\n 0,\n 0,\n \"#FFE7E7E7\",\n \"#FFFFFFFF\",\n [1, 1],\n \"#00000000\",\n 0,\n \"Text_EN\",\n \"\", //底部文本\n \"Italic\",\n 11.25,\n 0,\n 0,\n 0,\n \"#FFFFFFFF\",\n \"#FFFFFFFF\",\n [1, 1],\n \"#00000000\",\n 0,\n ],\n poi_images: [1, \"Image_1\", \"T_POI_8.T_POI_8\", \"#FFFFFFFF\"],\n };\n await StampUtil.createUEPoi(options);\n await StampUtil.attachSubObject({\n modelGuid: data.guid, //运动物体guid\n subGuid: params.attachUePOIGuid, //Element对象guid\n posOffset: { x: 0, y: 12, z: 0 }, //位置偏移\n rotOffset: { x: 0, y: 0, z: 0 }, //旋转偏移\n });\n }\n await StampUtil.setHeightType(\n params.trackGuid,\n params.heightType,\n params.attachUePOIGuid,\n [\"Text_CN\"]\n );\n gps_interface.play_track(params.trackGuid, data.guid, 4, false);\n });\n }\n\n loadDynamicObject(guid: string) {\n return new Promise((resolve) => {\n const dynamic_system_interface = StampAPI.LibAx.dynamic_system_interface(\n StampUtil.getLibax()\n );\n dynamic_system_interface.OnLoadDynamicObject = async function (\n data: any\n ) {\n dynamic_system_interface.OnLoadDynamicObject = undefined;\n resolve(data);\n };\n dynamic_system_interface.load_dynamic_object(guid);\n });\n }\n stopGpsSync(gpsId: string) {\n const gps_interface = StampAPI.LibAx.gps_interface(StampUtil.getLibax());\n gps_interface.OnGPSTrackFinished = function (data: any) {\n gps_interface.OnGPSTrackFinished = undefined;\n StampUtil.getLibax().dynamic_system_interface.unload_dynamic_object(\n data.bind\n );\n };\n gps_interface.stop_track(gpsId);\n }\n\n /**\n * 跟随track\n */\n followTrack(options: any) {\n const gps_interface = StampAPI.LibAx.gps_interface(StampUtil.getLibax());\n gps_interface.OnGPSTrackFinished = function (data: any) {\n console.log(\"OnGPSTrackFinished\", data);\n gps_interface.OnGPSTrackFinished = undefined;\n };\n gps_interface.init_follow_track(\n options.guid,\n options.heading,\n options.tilt,\n options.range_scale,\n options.time,\n options.no_tracking_object_angle\n );\n }\n /**\n * 增加实时路径\n * @param name\n * @returns\n */\n createRealtimeGps(name: any) {\n return new Promise((resolve) => {\n const gps_interface = StampAPI.LibAx.gps_interface(StampUtil.getLibax());\n gps_interface.OnGPSTrackLoaded = function (data: any) {\n gps_interface.OnGPSTrackLoaded = undefined;\n gps_interface.gps_list = gps_interface.gps_list || {};\n gps_interface.gps_list[data.guid] = data;\n resolve(data);\n };\n gps_interface.create_gps_track_real_time(name, 1.0);\n });\n }\n /**\n * 动态添加路径坐标\n * @param params\n */\n addGPSPoint(params: any) {\n const gps_interface = StampAPI.LibAx.gps_interface(StampUtil.getLibax());\n const gps_id = params.gpsId;\n const curr_pt = params.currPt;\n const next_pt = params.nextPt;\n const lxTime = params.lxTime;\n const isSpherical =\n params.isSpherical == undefined ? true : params.isSpherical;\n if (params.isWithHeading) {\n gps_interface.add_pre_gps_with_heading(\n gps_id,\n Number(curr_pt.longitude),\n Number(curr_pt.latitude),\n Number(curr_pt.height),\n Number(curr_pt.heading) || 0, //以防万一没有朝向值\n Number(next_pt.longitude),\n Number(next_pt.latitude),\n Number(next_pt.height),\n Number(next_pt.heading) || 0, //以防万一没有朝向值\n lxTime,\n isSpherical\n );\n } else {\n gps_interface.add_pre_gps(\n gps_id,\n Number(curr_pt.longitude),\n Number(curr_pt.latitude),\n Number(curr_pt.height),\n Number(next_pt.longitude),\n Number(next_pt.latitude),\n Number(next_pt.height),\n lxTime,\n isSpherical\n );\n }\n }\n /**\n * 动态添加路径坐标\n * @param params\n */\n addGPSPointBatchPoint(params: any) {\n const gps_interface = StampAPI.LibAx.gps_interface(StampUtil.getLibax());\n const gps_id = params.gpsId;\n const points = params.points;\n const isSpherical =\n params.isSpherical == undefined ? true : params.isSpherical;\n const pointsArr = [];\n if (params.isWithHeading) {\n for (var i = 0; i < points.length; i++) {\n pointsArr.push(\n points[i].x_pre,\n points[i].y_pre,\n points[i].z_pre,\n points[i].heading_pre,\n points[i].x,\n points[i].y,\n points[i].z,\n points[i].heading,\n points[i].time\n );\n }\n gps_interface.add_pre_gps_pt_batch_with_heading(\n gps_id,\n pointsArr,\n isSpherical\n );\n } else {\n for (var i = 0; i < points.length; i++) {\n pointsArr.push(\n points[i].x_pre,\n points[i].y_pre,\n points[i].z_pre,\n points[i].x,\n points[i].y,\n points[i].z,\n points[i].time\n );\n }\n gps_interface.add_pre_gps_pt_batch(gps_id, pointsArr, isSpherical);\n }\n }\n /**\n * 批量添加路径和坐标点\n * @param params\n * @param isSpherical\n * @param isWithHeading\n */\n addGPSPointBatch(\n params = [\n {\n gpsId: \"\",\n points: [\n {\n x: 0,\n y: 0,\n z: 0,\n heading: 0,\n x_pre: 0,\n y_pre: 0,\n z_pre: 0,\n heading_pre: 0,\n time: 1000,\n },\n {\n x: 0,\n y: 0,\n z: 0,\n heading: 0,\n x_pre: 0,\n y_pre: 0,\n z_pre: 0,\n heading_pre: 0,\n time: 1000,\n },\n ],\n },\n ],\n isSpherical: true,\n isWithHeading: false\n ) {\n if (isWithHeading) {\n var paramsArr = [];\n for (var i = 0; i < params.length; i++) {\n const ptArr = [];\n for (var j = 0; j < params[i].points.length; j++) {\n ptArr.push(\n params[i].points[j].x_pre,\n params[i].points[j].y_pre,\n params[i].points[j].z_pre,\n params[i].points[j].heading_pre,\n params[i].points[j].x,\n params[i].points[j].y,\n params[i].points[j].z,\n params[i].points[j].heading,\n params[i].points[j].time * 1000\n );\n }\n paramsArr.push([params[i].gpsId, ptArr]);\n }\n const gps_interface = StampAPI.LibAx.gps_interface(StampUtil.getLibax());\n gps_interface.add_pre_gps_batch_with_heading(paramsArr, isSpherical);\n } else {\n var paramsArr = [];\n for (var i = 0; i < params.length; i++) {\n const ptArr = [];\n for (var j = 0; j < params[i].points.length; j++) {\n ptArr.push(\n params[i].points[j].x_pre,\n params[i].points[j].y_pre,\n params[i].points[j].z_pre,\n params[i].points[j].x,\n params[i].points[j].y,\n params[i].points[j].z,\n params[i].points[j].time * 1000\n );\n }\n paramsArr.push([params[i].gpsId, ptArr]);\n }\n const gps_interface = StampAPI.LibAx.gps_interface(StampUtil.getLibax());\n gps_interface.add_pre_gps_batch(paramsArr, isSpherical);\n }\n }\n /**\n * 暂停GPSTrack\n * @param gpsId\n */\n pauseGps(gpsId: string) {\n const gps_interface = StampAPI.LibAx.gps_interface(StampUtil.getLibax());\n gps_interface.pause_track(gpsId);\n }\n /**\n * 停止GPSTrack\n * @param gpsId\n */\n stopGps(gpsId: string) {\n const gps_interface = StampAPI.LibAx.gps_interface(StampUtil.getLibax());\n gps_interface.stop_track(gpsId);\n }\n\n /**\n * 删除GPSTrack\n * @param gpsId\n */\n deleteGps(gpsId: string) {\n const gps_interface = StampAPI.LibAx.gps_interface(StampUtil.getLibax());\n gps_interface.delete_track(gpsId);\n }\n\n /**\n * 批量删除GPSTrack\n * @param guids\n */\n stopGpsBatch(guids: Array<string>) {\n const gps_interface = StampAPI.LibAx.gps_interface(StampUtil.getLibax());\n gps_interface.stop_gps_track_real_time_batch(guids, true, true);\n }\n\n /**\n * 卸载GPSTrack角色\n * @param dynamicId\n */\n removeRoleGps(dynamicId: any) {\n const dynamic_system_interface = StampAPI.LibAx.dynamic_system_interface(\n StampUtil.getLibax()\n );\n\n dynamic_system_interface.unload_dynamic_object(dynamicId);\n }\n\n setTrackInfo(params: any) {\n const gps_interface = StampAPI.LibAx.gps_interface(StampUtil.getLibax());\n if (params.gpsId == \"\") {\n return;\n }\n const gps_id = params.gpsId;\n const information = params.information || \"\";\n const showTrack = params.showTrack == undefined ? true : !!params.showTrack;\n const showName = params.showName == undefined ? true : !!params.showName;\n const showInformation =\n params.showInformation == undefined ? true : !!params.showInformation;\n const nameColor = params.nameColor || 0xffffffff;\n const informationColor = params.informationColor || 0xffffff00;\n const pathColor = params.pathColor || 0xffffff00;\n\n gps_interface.set_track_info(\n gps_id,\n information,\n showTrack,\n showName,\n showInformation,\n nameColor,\n informationColor,\n pathColor\n );\n }\n\n /**\n * 更新地图大小\n */\n updateEarthSize() {\n StampUtil.getLibax()?.player?.webRtcController?.videoPlayer?.resizePlayerStyle();\n StampUtil.getLibax()?.player?.webRtcController?.videoPlayer?.updateVideoStreamSize();\n }\n //#endregion\n\n //#region 杆塔线路接口\n /**\n * 获取杆塔线路图层列表\n * @returns\n */\n getLayerList() {\n return new Promise((resolve) => {\n const powerline_interface = StampUtil.getLibax().powerline_interface;\n if (powerline_interface.layer_list == undefined) {\n powerline_interface.OnGetLayerList = function (data: any) {\n powerline_interface.OnGetLayerList = undefined;\n resolve(data);\n };\n powerline_interface.get_powerline_layer_list();\n } else {\n const data = powerline_interface.layer_list;\n resolve(data);\n }\n });\n }\n\n /**\n * 加载图层数据\n * @param layerid\n * @returns\n */\n loadLayer(layerid: string) {\n return new Promise((resolve) => {\n const powerline_interface = StampUtil.getLibax().powerline_interface;\n if (layerid in powerline_interface.layer_list) {\n powerline_interface.OnConductPowerLine = function (res: any) {\n powerline_interface.OnConductPowerLine = undefined;\n if (res.result == \"successful\") {\n resolve(\"success\");\n } else {\n resolve(\"fail\");\n }\n };\n powerline_interface.load_powerline_layer(layerid);\n }\n });\n }\n\n /**\n * 添加图层\n * @param name\n * @returns\n */\n addLayer(name: string) {\n return new Promise((resolve) => {\n const powerline_interface = StampUtil.getLibax().powerline_interface;\n powerline_interface.OnAddLayer = function (data: any) {\n resolve(data);\n };\n powerline_interface.add_powerline_layer(name);\n });\n }\n\n /**\n * 卸载图层(从内存)\n * @param layerid\n */\n unloadLayer(layerid: string) {\n const powerline_interface = StampUtil.getLibax().powerline_interface;\n if (layerid in powerline_interface.layer_list) {\n powerline_interface.unload_powerline_layer(layerid);\n }\n }\n\n /**\n * 删除图层(从库中)\n * @param layerid\n * @returns\n */\n deleteLayer(layerid: string) {\n return new Promise((resolve) => {\n const powerline_interface = StampUtil.getLibax().powerline_interface;\n if (layerid in powerline_interface.layer_list) {\n powerline_interface.OnConductPowerLine = function (res: any) {\n powerline_interface.OnConductPowerLine = undefined;\n if (res.result == \"successful\") {\n resolve(\"success\");\n } else {\n resolve(\"fail\");\n }\n };\n powerline_interface.delete_powerline_layer(layerid);\n }\n });\n }\n\n /**\n * 开始编辑\n * @param layerid\n */\n beginEditLayer(layerid: string) {\n const powerline_interface = StampUtil.getLibax().powerline_interface;\n if (layerid in powerline_interface.layer_list) {\n powerline_interface.unlock_powerline_layer(layerid);\n }\n }\n\n /**\n * 结束编辑\n * @param layerid\n */\n endEditLayer(layerid: string) {\n const powerline_interface = StampUtil.getLibax().powerline_interface;\n if (layerid in powerline_interface.layer_list) {\n powerline_interface.lock_powerline_layer(layerid);\n }\n }\n\n /**\n * 添加线路\n * @param layerid\n * @param lineid\n * @returns\n */\n addPowerLine(layerid: string, lineid: string) {\n return new Promise((resolve) => {\n const powerline_interface = StampUtil.getLibax().powerline_interface;\n if (layerid in powerline_interface.layer_list) {\n powerline_interface.OnConductPowerLine = function (res: any) {\n powerline_interface.OnConductPowerLine = undefined;\n if (res.result == \"successful\") {\n resolve(\"success\");\n } else {\n resolve(\"fail\");\n }\n };\n powerline_interface.add_line_to_layer(layerid, lineid);\n }\n });\n }\n\n /**\n * 移除线路\n * @param layerid\n * @param lineid\n * @returns\n */\n removePowerline(layerid: string, lineid: string) {\n return new Promise((resolve) => {\n const powerline_interface = StampUtil.getLibax().powerline_interface;\n if (layerid in powerline_interface.layer_list) {\n powerline_interface.OnConductPowerLine = function (res: any) {\n powerline_interface.OnConductPowerLine = undefined;\n if (res.result == \"successful\") {\n resolve(\"success\");\n } else {\n resolve(\"fail\");\n }\n };\n powerline_interface.remove_line_to_layer(layerid, lineid);\n }\n });\n }\n\n /**\n * 保存图层\n * @param layerid\n */\n saveLayer(layerid: string) {\n const powerline_interface = StampUtil.getLibax().powerline_interface;\n if (layerid in powerline_interface.layer_list) {\n powerline_interface.save_powerline_layer(layerid);\n }\n }\n\n /**\n * 保存所有图层\n */\n saveAllLayers() {\n const powerline_interface = StampUtil.getLibax().powerline_interface;\n powerline_interface.save_all_layers();\n }\n\n /**\n * 发布图层\n * @param layerid\n * @returns\n */\n publishLayer(layerid: string) {\n return new Promise((resolve) => {\n const powerline_interface = StampUtil.getLibax().powerline_interface;\n if (layerid in powerline_interface.layer_list) {\n powerline_interface.OnConductPowerLine = function (res: any) {\n if (!res.result) {\n resolve(res.line);\n } else {\n resolve(res.result);\n }\n };\n const isSimple = false;\n const is3Dtile = true;\n powerline_interface.publish_powerline_layer(\n layerid,\n \"\",\n isSimple,\n is3Dtile\n );\n }\n });\n }\n\n /**\n * 飞行定位到线路\n * @param layerid\n * @param lineid\n */\n flyToPowerline(layerid: string, lineid: string) {\n const powerline_interface = StampUtil.getLibax().powerline_interface;\n if (layerid in powerline_interface.layer_list) {\n if (lineid != undefined) {\n powerline_interface.goto_line(layerid, lineid);\n }\n }\n }\n //#endregion\n\n //#region 计算\n /**\n * 线线距离\n * @param params\n * @returns\n */\n calcLineLineDistance(\n params = {\n isElement: false,\n linePoints1: [] as Array<any>,\n linePoints2: [] as Array<any>,\n }\n ) {\n this.clearMeasure();\n return new Promise((resolve) => {\n const geometry_algorithm_interface =\n StampUtil.getLibax().geometry_algorithm_interface;\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = (\n data: any\n ) => {\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = undefined;\n resolve(data);\n };\n geometry_algorithm_interface.calculate_line_line_distance(\n params.isElement,\n params.linePoints1,\n params.linePoints2\n );\n });\n }\n\n calcPointLineDistance(\n params = {\n point: {} as any,\n linePoints: [] as Array<any>,\n }\n ) {\n this.clearMeasure();\n return new Promise((resolve) => {\n const geometry_algorithm_interface =\n StampUtil.getLibax().geometry_algorithm_interface;\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = (\n data: any\n ) => {\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = undefined;\n resolve(data);\n };\n geometry_algorithm_interface.distance_point_line(\n params.linePoints[0],\n params.linePoints[1],\n params.point\n );\n });\n }\n\n calcPointPolygonDistance(\n params = {\n isElement: false,\n point: {} as any,\n polygonPoints: [] as Array<any>,\n }\n ) {\n this.clearMeasure();\n return new Promise((resolve) => {\n const geometry_algorithm_interface =\n StampUtil.getLibax().geometry_algorithm_interface;\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = (\n data: any\n ) => {\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = undefined;\n resolve(data);\n };\n geometry_algorithm_interface.calculate_point_polygon_distance(\n params.isElement,\n params.polygonPoints,\n params.point\n );\n });\n }\n\n calcLinePolygonDistance(\n params = {\n isElement: false,\n linePoints: [] as Array<any>,\n polygonPoints: [] as Array<any>,\n }\n ) {\n this.clearMeasure();\n return new Promise((resolve) => {\n const geometry_algorithm_interface =\n StampUtil.getLibax().geometry_algorithm_interface;\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = (\n data: any\n ) => {\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = undefined;\n resolve(data);\n };\n geometry_algorithm_interface.calculate_line_line_distance(\n params.isElement,\n params.linePoints,\n params.polygonPoints\n );\n });\n }\n\n calcPolygonDistance(\n params = {\n isElement: false,\n polygonPoints1: [] as Array<any>,\n polygonPoints2: [] as Array<any>,\n }\n ) {\n this.clearMeasure();\n return new Promise((resolve) => {\n const geometry_algorithm_interface =\n StampUtil.getLibax().geometry_algorithm_interface;\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = (\n data: any\n ) => {\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = undefined;\n resolve(data);\n };\n geometry_algorithm_interface.calculate_polygon_distance(\n params.isElement,\n params.polygonPoints1,\n params.polygonPoints2\n );\n });\n }\n\n /**\n * 线线空间距离\n * @param params\n * @returns\n */\n calcLineLineSpaceDistance(\n params = {\n isElement: false,\n linePoints1: [],\n linePoints2: [],\n }\n ) {\n this.clearMeasure();\n return new Promise((resolve) => {\n const geometry_algorithm_interface =\n StampUtil.getLibax().geometry_algorithm_interface;\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = (\n data: any\n ) => {\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = undefined;\n resolve(data);\n };\n geometry_algorithm_interface.calculate_line_line_space_distance(\n params.isElement,\n params.linePoints1,\n params.linePoints2\n );\n });\n }\n\n /**\n * 计算两个点的距离\n * @param point1\n * @param point2\n * @returns\n */\n calcPointDistance(\n point1 = { x: 0, y: 0, z: 0 },\n point2 = { x: 0, y: 0, z: 0 }\n ) {\n const R = 6371000;\n const dLat = ((point2.y - point1.y) * Math.PI) / 180;\n const dLon = ((point2.x - point1.x) * Math.PI) / 180;\n const a =\n Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n Math.cos((point1.y * Math.PI) / 180) *\n Math.cos((point2.y * Math.PI) / 180) *\n Math.sin(dLon / 2) *\n Math.sin(dLon / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n const d = R * c;\n return d;\n }\n\n /**\n * 计算两个点的距离\n * @param point1\n * @param point2\n * @returns\n */\n calcPointSpaceDistance(\n point1 = { x: 0, y: 0, z: 0 },\n point2 = { x: 0, y: 0, z: 0 }\n ) {\n const horDistance = StampUtil.calcPointDistance(point1, point2); //水平距离\n const verDistance = Math.abs(point1.z - point2.z); //垂直距离\n const distance = Math.sqrt(\n horDistance * horDistance + verDistance * verDistance\n ); //空间距离\n return distance;\n }\n\n /**\n * 计算平面坐标点串的面积\n * @param points\n * @returns\n */\n calcPolygonArea(points: Array<any>) {\n return new Promise((resolve) => {\n const geometry_algorithm_interface =\n StampUtil.getLibax().geometry_algorithm_interface;\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = function (\n data: any\n ) {\n resolve(data);\n };\n geometry_algorithm_interface.calc_polygon_area(points);\n });\n }\n\n /**\n * 计算球面坐标点串的面积\n * @param points\n * @returns\n */\n calcPolygonAreaSphr(points: Array<any>) {\n return new Promise((resolve) => {\n const geometry_algorithm_interface =\n StampUtil.getLibax().geometry_algorithm_interface;\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = function (\n data: any\n ) {\n resolve(data);\n };\n geometry_algorithm_interface.calc_polygon_area_sphr(points);\n });\n }\n //#endregion\n\n //#region 管线\n\n /**\n * 获取管线图层属性信息\n * @param pipelinelayerid 管线图层guid\n * @returns 图层属性\n */\n getPipelineLayerProperty(pipelinelayerid: string) {\n return new Promise((resolve) => {\n const stamp_frame = StampUtil.getLibax().stamp_frame;\n stamp_frame.OnGetPipelineLayerProperty = function (data: any) {\n stamp_frame.OnGetPipelineLayerProperty = undefined;\n resolve(data);\n };\n stamp_frame.GetPipelineLayerPropertyCommand(pipelinelayerid);\n });\n }\n\n /**\n * 获取BIM图层属性文件路径\n * @param layerid\n */\n async getBimPropertySDB(layerid: string) {\n return new Promise((resolve) => {\n const stamp_frame = StampUtil.getLibax().stamp_frame;\n stamp_frame.OnGetBimSDB = function (data: any) {\n stamp_frame.OnGetBimSDB = undefined;\n resolve(data);\n };\n stamp_frame.GetBimSDBCommand(layerid);\n });\n }\n\n //#endregion\n\n //#region WebUI接口\n /**\n * 创建一个图标的WebUI元素。\n * @param params 配置参数对象,包括:\n * - parentGuid: 父级元素的GUID,默认为空字符串。\n * - guid: 该元素的GUID,默认为空字符串。\n * - Text: 图标上的文本,默认为空字符串。\n * - TextColor: 文本颜色,默认为白色 (#FFFFFF)。\n * - FontSize: 文本字体大小,默认为24。\n * - FontStyle: 文本字体样式,默认为\"Black\"。\n * - longitude: 绑定位置的经度,默认为0。\n * - latitude: 绑定位置的纬度,默认为0。\n * - altitude: 绑定位置的高程,默认为0。\n * - align: 文本对齐方式,默认为2(左下对齐)。\n * - visible: 元素是否可见,默认为true。\n * @returns 返回配置参数对象。\n */\n createIconWebUI(\n params = {\n parentGuid: \"\",\n guid: \"\",\n Text: \"\",\n TextColor: \"#FFFFFF\",\n FontSize: 24,\n FontStyle: \"Black\",\n longitude: 0,\n latitude: 0,\n altitude: 0,\n align: 2,\n visible: true,\n }\n ) {\n //webui只能创建和删除,无法显隐\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return params;\n }\n if (params.parentGuid == undefined) {\n params.parentGuid = StampUtil.createGuid();\n }\n if (params.guid == undefined) {\n params.guid = StampUtil.createGuid();\n }\n params.Text = params.Text || \"\";\n const htmlContent = `/icon/icon.html?text=${params.Text}&fontsize=${\n params.FontSize\n }&textColor=${params.TextColor.replace(\"#\", \"\")}&fontStyle=${\n params.FontStyle\n }`;\n const param = [\n params.parentGuid,\n params.guid,\n htmlContent,\n 0, //网页类型:0:相对路径的html网页,1:http网络路径, 2:本地路径,3:html字符串\n\n 0, //自适应:left\n 0, //自适应:top\n 0, //自适应:right\n 0, //自适应:bottom\n\n 0, //位置:left\n 0, //位置:top\n 310, //params.Text.length * 20, //位置:宽度\n 200, //40, //位置:高度\n\n 1, //是否POI:1:poi,0:非POI(窗口显示:一般不需要用到)\n\n params.longitude, //绑定位置:经度\n params.latitude, //绑定位置:纬度\n params.altitude, //绑定位置:高程\n params.align || 2, //align:0:左上、1:左中、2:左下、3:右上、4:右中、5:右下、6:上中、7:下中、8:居中\n ];\n const webui_interface = StampAPI.LibAx.webui_interface(\n StampUtil.getLibax()\n );\n webui_interface.create_webui(param);\n let isFind = false;\n for (let i = 0; i < this.webUIItems.length; i++) {\n if (this.webUIItems[i].guid == params.guid) {\n //找到对应webui,无需添加\n isFind = true;\n break;\n }\n }\n if (!isFind) {\n //没找到就添加\n this.webUIItems.push(params);\n }\n return params;\n }\n\n /**\n * 创建UI气泡:经测试大概平均10~20个1秒\n * @param params\n */\n createWebUI(\n params = {\n parentGuid: \"\",\n guid: \"\",\n htmlContent: \"<div>hello</div>\",\n htmlType: 3,\n width: 0,\n height: 0,\n longitude: 0,\n latitude: 0,\n altitude: 0,\n align: 0,\n }\n ) {\n if (params.parentGuid == undefined) {\n params.parentGuid = StampUtil.createGuid();\n }\n if (params.guid == undefined) {\n params.guid = StampUtil.createGuid();\n }\n const param = [\n params.parentGuid,\n params.guid,\n params.htmlContent,\n params.htmlType || 0, //网页类型:0:相对路径的html网页,1:http网络路径, 2:本地路径,3:html字符串\n\n 0, //自适应:left\n 0, //自适应:top\n 0, //自适应:right\n 0, //自适应:bottom\n\n 0, //位置:left\n 0, //位置:top\n params.width, //位置:宽度\n params.height, //位置:高度\n\n 1, //是否POI:1:poi,0:非POI(窗口显示:一般不需要用到)\n\n params.longitude, //绑定位置:经度\n params.latitude, //绑定位置:纬度\n params.altitude, //绑定位置:高程\n params.align || 0, //align:0:左上、1:左中、2:左下、3:右上、4:右中、5:右下、6:上中、7:下中、8:居中\n ];\n const webui_interface = StampAPI.LibAx.webui_interface(\n StampUtil.getLibax()\n );\n webui_interface.create_webui(param);\n return params;\n }\n\n /**\n * 添加UI\n * @param params\n */\n addWebUIItem(\n params = {\n parentGuid: \"\",\n guid: \"\",\n htmlContent: \"<div>hello</div>\",\n htmlType: 3,\n width: 0,\n height: 0,\n longitude: 0,\n latitude: 0,\n altitude: 0,\n align: 0,\n }\n ) {\n if (params.parentGuid == undefined) {\n params.parentGuid = StampUtil.createGuid();\n }\n if (params.guid == undefined) {\n params.guid = StampUtil.createGuid();\n }\n const param = [\n params.parentGuid,\n params.guid,\n params.htmlContent,\n params.htmlType || 0, //网页类型:0:相对路径的html网页,1:http网络路径, 2:本地路径,3:html字符串\n\n 0, //自适应:left\n 0, //自适应:top\n 0, //自适应:right\n 0, //自适应:bottom\n\n 0, //位置:left\n 0, //位置:top\n params.width, //位置:宽度\n params.height, //位置:高度\n\n 1, //是否POI:1:poi,0:非POI(窗口显示:一般不需要用到)\n\n params.longitude, //绑定位置:经度\n params.latitude, //绑定位置:纬度\n params.altitude, //绑定位置:高程\n params.align || 0, //align:0:左上、1:左中、2:左下、3:右上、4:右中、5:右下、6:上中、7:下中、8:居中\n ];\n const webui_interface = StampAPI.LibAx.webui_interface(\n StampUtil.getLibax()\n );\n webui_interface.add_web_interface(param);\n }\n\n /**\n * 面板子对象显隐\n * @param params\n */\n setWebUIItemVisible(\n params = {\n parentGuid: \"\",\n guid: \"\",\n visible: false,\n }\n ) {\n params.parentGuid = params.parentGuid || this.webUIRootGuid;\n const param = [params.parentGuid, params.guid, params.visible];\n const webui_interface = StampAPI.LibAx.webui_interface(\n StampUtil.getLibax()\n );\n webui_interface.set_web_interface_visible(param);\n }\n\n /**\n * 整个面板显隐\n * @param params\n */\n setWebUIContainerVisible(\n params = {\n guid: \"\",\n visible: false,\n }\n ) {\n const param = [params.guid, params.visible];\n const webui_interface = StampAPI.LibAx.webui_interface(\n StampUtil.getLibax()\n );\n webui_interface.set_web_interface_visible(param);\n }\n\n /**\n * 移除面板子对象\n * @param params\n */\n removeWebUIItem(\n params = {\n parentGuid: \"\", //面板根guid\n guid: \"\", //面板子节点guid\n }\n ) {\n const param = [params.parentGuid, params.guid];\n const webui_interface = StampAPI.LibAx.webui_interface(\n StampUtil.getLibax()\n );\n webui_interface.remove_web_interface(param);\n for (let i = 0; i < this.webUIItems.length; i++) {\n if (params.guid == this.webUIItems[i].guid) {\n this.webUIItems.splice(i, 1);\n break;\n }\n }\n }\n\n /**\n * 移除面板\n * @param guid 面板根guid\n */\n removeWebUI(guid: string) {\n const param = [guid];\n const webui_interface = StampAPI.LibAx.webui_interface(\n StampUtil.getLibax()\n );\n webui_interface.remove_user_widget(param);\n }\n /**\n * 移除所有面板\n * @param guid 面板根guid\n */\n removeWebUIAll() {\n const webui_interface = StampAPI.LibAx.webui_interface(\n StampUtil.getLibax()\n );\n for (let i = 0; i < this.webUIItems.length; i++) {\n webui_interface.remove_user_widget([this.webUIItems[i].parentGuid]);\n }\n }\n /**\n * 修改面板子对象位置\n * @param params\n */\n setWebUIItemPosition(\n params = {\n parentGuid: \"\",\n guid: \"\",\n longitude: 0,\n latitude: 0,\n altitude: 0,\n }\n ) {\n const param = [\n params.parentGuid,\n params.guid,\n params.longitude,\n params.latitude,\n params.altitude,\n ];\n const webui_interface = StampAPI.LibAx.webui_interface(\n StampUtil.getLibax()\n );\n webui_interface.set_web_interface_position(param);\n }\n\n /**\n * 修改面板子对象大小(自适应)\n * @param params\n */\n setWebUIItemAnchors(\n params = {\n parentGuid: \"\",\n guid: \"\",\n left: 0,\n top: 0,\n bottom: 1,\n right: 1,\n }\n ) {\n const param = [\n params.parentGuid,\n params.guid,\n params.left,\n params.top,\n params.right,\n params.bottom,\n ];\n const webui_interface = StampAPI.LibAx.webui_interface(\n StampUtil.getLibax()\n );\n webui_interface.set_web_interface_anchors(param);\n }\n\n /**\n * 修改面板子对象偏移\n * @param params\n */\n setWebUIItemOffset(\n params = {\n parentGuid: \"\",\n guid: \"\",\n left: 0,\n top: 0,\n width: 500,\n height: 200,\n }\n ) {\n const param = [\n params.parentGuid,\n params.guid,\n params.left,\n params.top,\n params.width,\n params.height,\n ];\n const webui_interface = StampAPI.LibAx.webui_interface(\n StampUtil.getLibax()\n );\n webui_interface.set_web_interface_offset(param);\n }\n\n /**\n * 修改面板子对象停靠位置\n * @param params\n */\n setWebUIItemAlign(\n params = {\n parentGuid: \"\",\n guid: \"\",\n align: 0,\n }\n ) {\n const param = [params.parentGuid, params.guid, params.align];\n const webui_interface = StampAPI.LibAx.webui_interface(\n StampUtil.getLibax()\n );\n webui_interface.set_web_interface_align(param);\n }\n //#endregion\n\n //#region 车流穿梭\n createTrackScheme(params: any) {\n return new Promise((resolve) => {\n const mass_interface = StampAPI.LibAx.mass_interface(\n StampUtil.getLibax()\n );\n const shape_creator_interface = StampAPI.LibAx.shape_creator_interface(\n StampUtil.getLibax()\n );\n const name = params.name;\n const left_width = params.leftWidth || 7.2;\n const right_width = params.rightWidth || 7.2;\n const lane_width = params.laneWidth || 3.6; // lane_width = -1时不设置道宽\n const is_loop = false;\n const fly_height = 0;\n const speed = 15;\n mass_interface.create_track(\n name,\n left_width,\n right_width,\n lane_width,\n is_loop,\n fly_height,\n speed\n );\n\n mass_interface.OnMassLoaded = function (data: any) {\n resolve(data);\n shape_creator_interface.clear();\n };\n });\n }\n\n createTrackSchemeFromJson(trackId: any, jsonStr: any) {\n return new Promise((resolve) => {\n const mass_interface = StampAPI.LibAx.mass_interface(\n StampUtil.getLibax()\n );\n mass_interface.load_track(trackId, JSON.stringify(jsonStr));\n mass_interface.OnMassLoaded = function (data: any) {\n resolve(data);\n };\n });\n }\n /**\n *增加方案\n * @param params\n */\n addScheme(params: any) {\n return new Promise((resolve) => {\n const mass_interface = StampAPI.LibAx.mass_interface(\n StampUtil.getLibax()\n );\n const track_id = params.trackId;\n const crowd_size = params.crowdSize || 100;\n const mass_type = params.trackType || 3;\n const crowd_resource = params.crowdResource;\n mass_interface.add_scheme(\n track_id,\n crowd_size,\n mass_type,\n crowd_resource\n );\n mass_interface.OnMassSchemeChanged = function (data: any) {\n if (data.type == \"added\") {\n params.schemeGuid = data.scheme_guid;\n resolve(params);\n } else {\n resolve(params);\n }\n };\n });\n }\n /**\n * 移除方案:删除路径的同时需要移除方案\n * @param schemeId 方案guid\n */\n removeScheme(schemeId: string) {\n return new Promise((resolve) => {\n const mass_interface = StampAPI.LibAx.mass_interface(\n StampUtil.getLibax()\n );\n mass_interface.OnMassSchemeChanged = function (data: any) {\n resolve(data); //删除成功\n };\n mass_interface.remove_scheme(schemeId);\n });\n }\n /**\n * 播放\n */\n playMass() {\n const mass_interface = StampAPI.LibAx.mass_interface(StampUtil.getLibax());\n mass_interface.play_mass();\n }\n /**\n * 停止\n */\n stopMass() {\n const mass_interface = StampAPI.LibAx.mass_interface(StampUtil.getLibax());\n mass_interface.stop_mass();\n }\n /**\n * 卸载路径\n */\n unloadTrackScheme(trackID: any) {\n const mass_interface = StampAPI.LibAx.mass_interface(StampUtil.getLibax());\n mass_interface.unload_track(trackID);\n }\n //#endregion\n\n //#region 地质体\n /**\n * 加载钻孔\n * @param layerGuid\n * @param projectName\n */\n loadDrill(layerGuid: any, projectName: any) {\n const geology_interface = StampAPI.LibAx.geology_interface(StampAPI.lib_ax);\n geology_interface.OnLoadDrillsFinished = function (data: any) {\n geology_interface.OnLoadDrillsFinished = undefined;\n };\n geology_interface.load_drills_by_project(layerGuid, projectName, 2);\n }\n\n /**\n * 隐藏钻孔\n * @param layerGuid\n * @param projectName\n */\n unloadProjectLayer(layerGuid: any, projectName: any) {\n const geology_interface = StampAPI.LibAx.geology_interface(StampAPI.lib_ax);\n geology_interface.unload_drills_by_project(layerGuid, projectName);\n }\n\n /**\n * 自定义构建地质体\n * @param layerGuid\n * @param xValue\n * @param yValue\n */\n createSoilLayerByCustom(layerGuid: any, xValue: any, yValue: any) {\n return new Promise((resolve) => {\n const shape_creator_interface = StampAPI.LibAx.shape_creator_interface(\n StampAPI.lib_ax\n );\n const geology_interface = StampAPI.LibAx.geology_interface(\n StampAPI.lib_ax\n );\n StampUtil.setMouseCursor(4);\n geology_interface.create_soil_layer_by_custom(\n layerGuid,\n xValue,\n yValue,\n 2,\n 0,\n false\n );\n geology_interface.OnCreateSoilLayerFinished = function (data: any) {\n shape_creator_interface.clear();\n StampUtil.setMouseCursor();\n resolve(data.body_id);\n };\n });\n }\n\n /**\n * 整体构建地质体\n * @param layerGuid\n * @param projectName\n * @param xValue\n * @param yValue\n */\n createSoilLayerByProject(\n layerGuid: any,\n projectName: any,\n xValue: any,\n yValue: any\n ) {\n return new Promise((resolve) => {\n const geology_interface = StampAPI.LibAx.geology_interface(\n StampAPI.lib_ax\n );\n geology_interface.create_soil_layer_by_project(\n layerGuid,\n projectName,\n xValue,\n yValue,\n 2,\n 0,\n false\n );\n geology_interface.OnCreateSoilLayerFinished = function (data: any) {\n resolve(data.body_id);\n };\n });\n }\n\n /**\n * 移除地质体\n * @param layerGuid\n * @param bodyID\n */\n removeGeologicalBody(layerGuid: any, bodyID: any) {\n const geology_interface = StampAPI.LibAx.geology_interface(StampAPI.lib_ax);\n geology_interface.remove_geological_body(layerGuid, bodyID);\n }\n\n /**\n * 地质体图层列表\n * @param layerGuid\n * @param bodyID\n */\n getSoilLayers(layerGuid: any, bodyID: any) {\n return new Promise((resolve) => {\n const geology_interface = StampAPI.LibAx.geology_interface(\n StampAPI.lib_ax\n );\n geology_interface.OnGetSoilLayers = function (data: any) {\n geology_interface.OnGetSoilLayers = undefined;\n resolve(data);\n };\n geology_interface.get_soil_layers(layerGuid, bodyID);\n });\n }\n\n /**\n * 设置土壤可见性\n * @param layerGuid\n * @param bodyID\n * @param soilID\n * @param Visible\n */\n setSoilVisible(layerGuid: any, bodyID: any, soilID: any, Visible: any) {\n const geology_interface = StampAPI.LibAx.geology_interface(StampAPI.lib_ax);\n geology_interface.set_drill_visible(layerGuid, bodyID, soilID, Visible);\n }\n\n /**\n * 地质体水平剖切\n * @param layerGuid\n * @param bodyID\n * @param positive\n * @param depth\n */\n horizontalCutSoilLayer(\n layerGuid: any,\n bodyID: any,\n positive: boolean,\n depth: number\n ) {\n return new Promise((resolve) => {\n const geology_interface = StampAPI.LibAx.geology_interface(\n StampAPI.lib_ax\n );\n StampUtil.setMouseCursor(4);\n geology_interface.horizontal_cut_soil_layer(layerGuid, positive, depth);\n geology_interface.OnCutSoilLayerFinished = function (data: any) {\n StampAPI.LibAx.shape_creator_interface(StampAPI.lib_ax).clear();\n StampUtil.setMouseCursor();\n resolve(data);\n };\n });\n }\n\n /**\n * 地质体垂直剖切\n * @param layerGuid\n * @param bodyID\n * @param positive\n */\n verticalCutSoilLayer(layerGuid: any, bodyID: any, positive: boolean) {\n return new Promise((resolve) => {\n const geology_interface = StampAPI.LibAx.geology_interface(\n StampAPI.lib_ax\n );\n StampUtil.setMouseCursor(4);\n geology_interface.vertical_cut_soil_layer(layerGuid, positive);\n geology_interface.OnCutSoilLayerFinished = function (data: any) {\n StampAPI.LibAx.shape_creator_interface(StampAPI.lib_ax).clear();\n StampUtil.setMouseCursor();\n resolve(data);\n };\n });\n }\n\n /**\n * 剥层分析\n * @param layerGuid\n * @param distance\n */\n separateSoilLayer(layerGuid: any, distance: number) {\n const geology_interface = StampAPI.LibAx.geology_interface(StampAPI.lib_ax);\n geology_interface.separate_soil_layer(layerGuid, distance);\n }\n\n getLayerProfile(layerGuid: any) {\n return new Promise((resolve) => {\n const geology_interface = StampAPI.LibAx.geology_interface(\n StampAPI.lib_ax\n );\n StampUtil.setMouseCursor(4);\n geology_interface.get_layer_profile(layerGuid);\n geology_interface.OnGetProfile = function (data: any) {\n StampAPI.LibAx.shape_creator_interface(StampAPI.lib_ax).clear();\n StampUtil.setMouseCursor();\n resolve(data);\n };\n });\n }\n\n /**\n * 判断地址图层是否有数据\n * @param layerGuid\n */\n geologyLayerHasData(layerGuid: any) {\n return new Promise((resolve) => {\n const geology_interface = StampAPI.LibAx.geology_interface(\n StampAPI.lib_ax\n );\n geology_interface.OnHasData = function (data: any) {\n resolve(data);\n };\n geology_interface.has_data(layerGuid);\n });\n }\n\n /**\n * 获取地质体相关表\n * @param layerGuid\n * @returns\n */\n getTableNames(layerGuid: any) {\n return new Promise((resolve) => {\n const geology_interface = StampAPI.LibAx.geology_interface(\n StampAPI.lib_ax\n );\n geology_interface.OnGetTableNames = function (data: any) {\n resolve(data);\n };\n geology_interface.get_table_names(layerGuid);\n });\n }\n\n /**\n * 剖切复原地质体\n * @param layerGuid\n */\n resetGeomodelVisible(layerGuid: any) {\n const geology_interface = StampAPI.LibAx.geology_interface(StampAPI.lib_ax);\n geology_interface.reset_geomodel_visible(layerGuid);\n }\n\n /**\n * 获取土壤信息列表\n * @param layerGuid\n * @param bodyID\n */\n getSoilInfos(layerGuid: any, bodyID: any) {\n return new Promise((resolve) => {\n const geology_interface = StampAPI.LibAx.geology_interface(\n StampAPI.lib_ax\n );\n geology_interface.OnGetSoilInfos = function (data: any) {\n geology_interface.OnGetSoilInfos = undefined;\n resolve(data);\n };\n geology_interface.get_soil_infos(layerGuid, bodyID);\n });\n }\n /**\n * 拾取查询钻孔\n * @param callbackSuccess\n * @param callbackCancel\n */\n pickDrill(callbackSuccess: any, callbackCancel: any) {\n const query_interface = StampAPI.LibAx.query_interface(StampAPI.lib_ax);\n query_interface.OnPickObject = function (data: any) {\n typeof callbackSuccess === \"function\" &&\n data.guid &&\n callbackSuccess(data);\n };\n query_interface.OnPickObjectEx = function (data: any) {\n typeof callbackSuccess === \"function\" && callbackSuccess(data);\n };\n const earth =\n StampAPI.lib_ax.player.webRtcController.videoPlayer.videoElement;\n query_interface.pick_sub_object_ex();\n earth.oncontextmenu = () => {\n earth.oncontextmenu = null;\n query_interface.OnPickObject = undefined;\n query_interface.OnPickObjectEx = undefined;\n query_interface.finish_pick();\n StampUtil.setMouseCursor();\n typeof callbackCancel == \"function\" && callbackCancel();\n };\n }\n\n /**\n * 钻孔接地\n * @param layerGuid\n * @param projectName\n * @returns\n */\n clampDrill(layerGuid: any, projectName: any) {\n return new Promise((resolve) => {\n const geology_interface = StampAPI.LibAx.geology_interface(\n StampAPI.lib_ax\n );\n geology_interface.OnGetHolesDemHeightByBH = function (data: any) {\n resolve(data);\n };\n geology_interface.get_holes_dem_height_by_bh(layerGuid, projectName);\n });\n }\n\n /**\n * 获取图层的地质体id\n * @param layerGuid\n * @returns\n */\n getGeologicalbodyList(layerGuid: any) {\n return new Promise((resolve) => {\n const geology_interface = StampAPI.LibAx.geology_interface(\n StampAPI.lib_ax\n );\n geology_interface.OnGetGeologicalbodyList = function (data: any) {\n resolve(data);\n };\n geology_interface.get_geologicalbody_list(layerGuid);\n });\n }\n\n /**\n * 设置钻孔半径\n * @param layer_guid\n * @param ratio\n */\n setHoleRatio(layer_guid: any, ratio: any) {\n const geology_interface = StampAPI.LibAx.geology_interface(StampAPI.lib_ax);\n geology_interface.set_hole_ratio(layer_guid, ratio); // 半径=0.2*2米\n }\n\n /**\n * 获取钻孔的节点坐标\n * @param layer\n * @param drills\n * @returns\n */\n createDrillsProfile(layer: any, drills: any) {\n return new Promise((resolve) => {\n const geology_interface = StampAPI.LibAx.geology_interface(\n StampAPI.lib_ax\n );\n geology_interface.OnGetProfile = function (data: any) {\n resolve(data);\n };\n geology_interface.create_drills_profile(layer, drills);\n });\n }\n\n /**\n * 获取钻孔profile\n * @param layer\n * @param drills_guid\n * @returns\n */\n GetDrillProfileLayers(layer: any, drills_guid: any) {\n return new Promise((resolve) => {\n const geology_interface = StampAPI.LibAx.geology_interface(\n StampAPI.lib_ax\n );\n geology_interface.OnGetProfile = function (data: any) {\n resolve(data);\n };\n geology_interface.get_drills_profile(layer, drills_guid);\n });\n }\n\n GetMainLayerLines(layer: any, index: any) {\n return new Promise((resolve) => {\n const geology_interface = StampAPI.LibAx.geology_interface(\n StampAPI.lib_ax\n );\n geology_interface.OnGetProfile = function (data: any) {\n resolve(data);\n };\n geology_interface.get_main_layer_lines(layer, index);\n });\n }\n\n /**\n * 生成隧道/管线(方形)\n * @param points\n * @param width\n * @param height\n */\n generateTunnel(\n points: Array<any>,\n textureOrColor: any,\n width: number,\n height: number,\n isTexture: boolean\n ) {\n return new Promise((resolve) => {\n const params = [\n points,\n \"tunnel\",\n textureOrColor,\n width,\n height,\n true,\n isTexture,\n 0,\n 1,\n true,\n ];\n const terrain_manager_interface =\n StampAPI.lib_ax.terrain_manager_interface;\n terrain_manager_interface.OnTerrainManagerResult = function (data: any) {\n resolve(data);\n };\n terrain_manager_interface.generate_tunnel(params);\n });\n }\n\n /**\n * 生成隧道/管线(圆形)\n * @param points\n * @param width\n * @param height\n */\n generateTunnelRound(\n points: Array<any>,\n textureOrColor: any,\n radius: number,\n edges = 32,\n isTexture: boolean\n ) {\n return new Promise((resolve) => {\n const params = [\n points,\n \"round\",\n textureOrColor,\n radius,\n edges,\n true,\n isTexture,\n 0,\n 1,\n true,\n ];\n const terrain_manager_interface =\n StampAPI.lib_ax.terrain_manager_interface;\n terrain_manager_interface.OnTerrainManagerResult = function (data: any) {\n resolve(data);\n };\n terrain_manager_interface.generate_round_tunnel(params);\n });\n }\n\n /**\n * 生成隧道/管线(拱形)\n * @param points\n * @param width\n * @param height\n */\n generateTunnelArch(\n points: Array<any>,\n textureOrColor: any,\n width: number,\n height: number,\n isTexture: boolean\n ) {\n return new Promise((resolve) => {\n const params = [\n points,\n \"arch\",\n textureOrColor,\n width,\n height,\n true,\n isTexture,\n 0,\n 1,\n true,\n ];\n const terrain_manager_interface =\n StampAPI.lib_ax.terrain_manager_interface;\n terrain_manager_interface.OnTerrainManagerResult = function (data: any) {\n resolve(data);\n };\n terrain_manager_interface.generate_arch_tunnel(params);\n });\n }\n\n /**\n * 获取管线图例\n */\n getBlockLayerSymbol(layerid: string) {\n return new Promise((resolve: any) => {\n const stamp_frame = StampAPI.lib_ax.stamp_frame;\n stamp_frame.OnGetBlockLayerSymbol = function (data: any) {\n stamp_frame.OnGetBlockLayerSymbol = undefined;\n resolve(data);\n };\n stamp_frame.GetBlockLayerSymbolCommand(layerid);\n });\n }\n\n /**\n * 创建3d热力图\n * @param options\n */\n createHeatMap3d(options: any) {\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n const userdataObj = {} as any;\n userdataObj.type = 331;\n userdataObj.name = \"niagara heatmap\";\n userdataObj.guid = options.guid;\n userdataObj.action = \"add\";\n if (options.type == \"square\" || !options.type) {\n userdataObj.niagara_asset_path =\n \"/Engine/HeatMap/HeatMap_NiagaraSystem_square.HeatMap_NiagaraSystem_square\"; //柱状和锥形\n } else if (options.type == \"cone\") {\n userdataObj.niagara_asset_path =\n \"/Engine/HeatMap/HeatMap_NiagaraSystem_cone.HeatMap_NiagaraSystem_cone\";\n }\n userdataObj.float_params = [\"HeatMap_OffsetAlpha\", options.weight]; // 用来设置权重值 0-1之间\n userdataObj.selectable = 1;\n userdataObj.editable = 1;\n userdataObj.visible = 1;\n const params = [\n userdataObj,\n options.point.x,\n options.point.y,\n options.point.z,\n 0,\n 0,\n 0,\n options.scaleX || 1,\n options.scaleY || 1,\n options.scaleZ || 1,\n ];\n return new Promise((resolve) => {\n element_interface.OldOnAdded = element_interface.OnAdded;\n element_interface.OnAdded = () => {\n element_interface.OnAdded = element_interface.OldOnAdded;\n resolve(true);\n };\n StampUtil.addToUserDataArr(params[0]);\n element_interface.create_heatmap_params(params);\n });\n }\n\n /**\n * 创建3d热力图\n * @param options\n */\n createHeatMap3dBatch(optionsArr: any) {\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n const userdataArr: Array<any> = [];\n for (let i = 0; i < optionsArr.length; i++) {\n const options = optionsArr[i];\n const userdataObj = {} as any;\n userdataObj.type = 331;\n userdataObj.name = \"niagara heatmap\";\n userdataObj.guid = options.guid;\n userdataObj.action = \"add\";\n if (options.type == \"square\" || !options.type) {\n userdataObj.niagara_asset_path =\n \"/Engine/HeatMap/HeatMap_NiagaraSystem_square.HeatMap_NiagaraSystem_square\"; //柱状和锥形\n } else if (options.type == \"cone\") {\n userdataObj.niagara_asset_path =\n \"/Engine/HeatMap/HeatMap_NiagaraSystem_cone.HeatMap_NiagaraSystem_cone\";\n }\n userdataObj.float_params = [\"HeatMap_OffsetAlpha\", options.weight]; // 用来设置权重值 0-1之间\n userdataObj.selectable = 1;\n userdataObj.editable = 1;\n userdataObj.visible = 1;\n const params = [\n userdataObj,\n options.point.x,\n options.point.y,\n options.point.z,\n 0,\n 0,\n 0,\n options.scaleX || 1,\n options.scaleY || 1,\n options.scaleZ || 1,\n ];\n userdataArr.push(params);\n }\n\n return new Promise((resolve) => {\n element_interface.OldOnAdded = element_interface.OnAdded;\n element_interface.OnAdded = () => {\n element_interface.OnAdded = element_interface.OldOnAdded;\n resolve(true);\n };\n for (let i = 0; i < userdataArr.length; i++) {\n StampUtil.addToUserDataArr(userdataArr[i][0]);\n }\n element_interface.create_batch(userdataArr);\n });\n }\n\n /**\n * 绘制线,获取线点串、朝向、俯仰角度、距离等信息\n * @returns\n */\n getLineViewAngle() {\n return new Promise((resolve) => {\n StampUtil.createLine(null).then((res: any) => {\n StampUtil.clearShapeCreator();\n if (res && res.Points && res.Points.length >= 2) {\n const points: Array<any> = [];\n for (let i = 0; i < res.Points.length; i++) {\n points.push({\n x: res.Points[i].Longitude,\n y: res.Points[i].Latitude,\n z: res.Points[i].Altitude,\n });\n }\n const distance = Number(\n StampUtil.calcPointDistance(points[0], points[1]).toFixed(2)\n );\n StampUtil.calcHeading(points[0], points[1]).then((res: any) => {\n resolve({\n points: points,\n distance: distance,\n heading: res.heading,\n tilt: res.tilt,\n });\n });\n } else {\n resolve(null);\n }\n });\n });\n }\n\n /**\n * 根据两个点计算朝向和俯仰角度\n * @param fromPoint\n * @param toPoint\n * @returns\n */\n calcHeading(fromPoint: any, toPoint: any) {\n return new Promise((resolve) => {\n const geometry_algorithm_interface =\n StampUtil.getLibax().geometry_algorithm_interface;\n geometry_algorithm_interface.OnGeometryAlgorithmFinished = function (\n data: any\n ) {\n resolve(data);\n };\n geometry_algorithm_interface.calc_heading(fromPoint, toPoint);\n });\n }\n\n /**\n * 获取umg资源\n * @param guid\n * @returns\n */\n getUmgResources(guid: string) {\n return new Promise((resolve, reject) => {\n const vector_tile_layer_interface =\n StampAPI.LibAx.vector_tile_layer_interface(StampUtil.getLibax());\n vector_tile_layer_interface.OnRespondGet = function (data: any) {\n resolve(data);\n };\n vector_tile_layer_interface.get_umg_resources(guid); // 图层guid\n });\n }\n\n /**\n * 获取widget配置\n */\n getWidgetConfig() {\n return new Promise((resolve, reject) => {\n const vector_tile_layer_interface =\n StampAPI.LibAx.vector_tile_layer_interface(StampUtil.getLibax());\n vector_tile_layer_interface.OnRespondGet = function (data: any) {\n resolve(data);\n };\n vector_tile_layer_interface.get_widget_config();\n });\n }\n\n /**\n * 设置umg样式\n * @param params\n * @returns\n */\n setUmgStyle(params: any) {\n return new Promise((resolve, reject) => {\n const vector_tile_layer_interface =\n StampAPI.LibAx.vector_tile_layer_interface(StampUtil.getLibax());\n vector_tile_layer_interface.OnRespondGet = function (data: any) {\n vector_tile_layer_interface.OnRespondGet = undefined;\n resolve(data);\n };\n vector_tile_layer_interface.add_or_update_umg_style(params);\n });\n }\n\n // 会返回当前配置的所有表达式,如果是单一值会返回\"null_expression\"\n getUmgNum(guid: string) {\n return new Promise((resolve, reject) => {\n const vector_tile_layer_interface =\n StampAPI.LibAx.vector_tile_layer_interface(StampUtil.getLibax());\n vector_tile_layer_interface.OnRespondGet = function (data: any) {\n vector_tile_layer_interface.OnRespondGet = undefined;\n resolve(data);\n };\n vector_tile_layer_interface.get_umg_style_num(guid);\n });\n }\n\n // 参数格式 var params = [\n // \"84093c04-ad87-4fc2-a679-de31ec6539b0\", // 图层guid\n // \"'[fcode]' = '230107'\", // 表达式字符串\n // ];\n getUmgStyle(params: any) {\n return new Promise((resolve, reject) => {\n const vector_tile_layer_interface =\n StampAPI.LibAx.vector_tile_layer_interface(StampUtil.getLibax());\n vector_tile_layer_interface.OnRespondGet = function (data: any) {\n vector_tile_layer_interface.OnRespondGet = undefined;\n resolve(data);\n };\n vector_tile_layer_interface.get_umg_style(params);\n });\n }\n\n // 参数格式 var params = [\n // \"84093c04-ad87-4fc2-a679-de31ec6539b0\", // 图层guid\n // 2, // 移除样式的条数\n // \"'[fcode]' = '230107'\", // 表达式字符串\n // \"'[fcode]' = '230117'\", // 表达式字符串\n // ];\n removeUmgStyle(params: string) {\n return new Promise((resolve, reject) => {\n const vector_tile_layer_interface =\n StampAPI.LibAx.vector_tile_layer_interface(StampUtil.getLibax());\n vector_tile_layer_interface.OnRespondGet = function (data: any) {\n vector_tile_layer_interface.OnRespondGet = undefined;\n resolve(data);\n };\n vector_tile_layer_interface.remove_umg_style(params);\n });\n }\n\n // 参数格式 var params = [\n // \"84093c04-ad87-4fc2-a679-de31ec6539b0\", // 图层guid\n // \"/data/stamp_tmp/a9101bf6-bf66-47dd-86ec-2c9deb5536db.umg\" // 路径\n // ];\n saveUmgStyle(params: any) {\n return new Promise((resolve, reject) => {\n const vector_tile_layer_interface =\n StampAPI.LibAx.vector_tile_layer_interface(StampUtil.getLibax());\n vector_tile_layer_interface.OnRespondGet = function (data: any) {\n vector_tile_layer_interface.OnRespondGet = undefined;\n resolve(data);\n };\n vector_tile_layer_interface.save_umg_style(params);\n });\n }\n\n setUseUmgStyle(guid: string, isUse: boolean) {\n return new Promise((resolve, reject) => {\n const vector_tile_layer_interface =\n StampAPI.LibAx.vector_tile_layer_interface(StampUtil.getLibax());\n vector_tile_layer_interface.OnRespondGet = function (data: any) {\n vector_tile_layer_interface.OnRespondGet = undefined;\n resolve(data);\n };\n const params = [guid, !!isUse];\n vector_tile_layer_interface.set_use_umg_style(params);\n });\n }\n\n getUseUmgStyle(guid: string) {\n return new Promise((resolve, reject) => {\n const vector_tile_layer_interface =\n StampAPI.LibAx.vector_tile_layer_interface(StampUtil.getLibax());\n vector_tile_layer_interface.OnRespondGet = function (data: any) {\n resolve(data.use_umg_style);\n };\n vector_tile_layer_interface.get_use_umg_style(guid);\n });\n }\n\n /**\n * 影像卷帘图层\n */\n setRoll(params: any) {\n return new Promise((resolve) => {\n const environment_interface = StampUtil.getLibax().environment_interface;\n environment_interface.OnEnvironmentGet = (res: any) => {\n resolve(res);\n };\n environment_interface.set_roll_dom_layers(params);\n });\n }\n\n /**\n * 设置影像卷帘大小\n * @param add_factor\n */\n setRollPos(add_factor: number) {\n return new Promise((resolve) => {\n const environment_interface = StampUtil.getLibax().environment_interface;\n environment_interface.OnEnvironmentGet = (res: any) => {\n resolve(res);\n };\n environment_interface.set_roll_dom_split_pos(add_factor);\n });\n }\n\n /**\n * 设置c键最小俯仰角\n * @param angle\n */\n setLookDownMinTilt(angle: number) {\n const global_control_interface =\n StampUtil.getLibax().global_control_interface;\n global_control_interface.OnLookDownMinTilt = function () {};\n global_control_interface.set_look_down_min_tilt([angle]);\n }\n\n /**\n * 获取c键最小俯仰角\n * @returns\n */\n getLookDownMinTilt() {\n return new Promise<void>((resolve, reject) => {\n const global_control_interface =\n StampUtil.getLibax().global_control_interface;\n global_control_interface.OnLookDownMinTilt = function (data: any) {\n resolve(data);\n };\n global_control_interface.get_look_down_min_tilt();\n });\n }\n\n /**\n * 添加WMS服务图层\n */\n createWMSLayer(params: any) {\n const obj = {\n guid: params.guid || StampUtil.createGuid(),\n name: params.name || \"wms\",\n url: params.url, //必传 不能为空\n order: params.order || 0,\n visible: params.visible || true,\n visibleMaxLevel: params.visibleMaxLevel || 23,\n layers: params.layers || \"\",\n transparent: params.transparent || \"true\",\n version: params.version || \"1.3.0\",\n styles: params.styles || \"\",\n width: params.width || 512,\n height: params.height || 512,\n subDomains: params.subDomains || \"18010,18081,18082\",\n rect: params.rect || \"\",\n shadowType: params.shadowType || \"None\",\n isWebmercator: params.isWebmercator || false,\n };\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampAPI.lib_ax\n );\n layer_manager_interface.create_wms_layer(obj);\n }\n\n /**\n * 添加WMS服务图层\n */\n createWMTSLayer(params: any) {\n const obj = {\n guid: params.guid || StampUtil.createGuid(),\n name: params.name || \"wmts\",\n url: params.url, //必传 不能为空\n order: params.order || 0,\n visible: params.visible || true,\n spatialFile: params.spatialFile || \"\",\n levels: params.levels || { minLevel: 0, maxLevel: 13 },\n layerGroup: params.layerGroup || {},\n imageExt: params.imageExt || \"PNG\",\n visibleMaxLevel: params.visibleMaxLevel || 23,\n shadowType: params.shadowType || \"None\",\n };\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampAPI.lib_ax\n );\n layer_manager_interface.create_wmts_layer(obj);\n }\n\n /**\n * 创建uePOI\n * @param options\n * @returns\n */\n createUEPoi(options: any) {\n if (!options.guid) {\n options.guid = StampUtil.createGuid();\n }\n const element_interface = StampAPI.lib_ax.element_interface;\n if (StampUtil.createControlElementVisbile(options)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(options);\n });\n }\n const params = [\n options,\n options.longitude,\n options.latitude,\n options.altitude,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n ];\n if (options.action == \"modify\") {\n element_interface.modify_element(params);\n } else {\n element_interface.create_ue_poi_params(params);\n }\n element_interface.visible_range_element([params[0].guid, 0, 1000]);\n return StampUtil.createElementParams(params[0], options);\n }\n\n /**\n * 创建车流线\n * @param userdataObj\n * @returns\n */\n createElementTrafficFlowLine(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 333,\n name: \"trafficFlowLine\",\n action: \"add\", //add:添加 modify:修改\n Radius: 5.0,\n SpeedY: 1.0,\n selectable: 1,\n editable: 1,\n visible: 1,\n drawOrder: 1, //渲染顺序\n } as any\n ) {\n return new Promise((resolve) => {\n this.createPolyline(\n {\n lineWidth: 2,\n lineColor: 0xffff0000,\n },\n null\n ).then((res: any) => {\n if (!res || !res.Points) {\n return;\n }\n userdataObj.SpeedX = 0;\n userdataObj.action = \"add\";\n const params = [userdataObj];\n const points = [];\n for (let i = 0; i < res.Points.length; i++) {\n points.push({\n x: res.Points[i].X,\n y: res.Points[i].Y,\n z: res.Points[i].Z + 5,\n });\n params.push(res.Points[i].X, res.Points[i].Y, res.Points[i].Z);\n }\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n element_interface.OldOnAdded = element_interface.OnAdded;\n element_interface.OnAdded = (data: any) => {\n element_interface.OnAdded = element_interface.OldOnAdded;\n resolve(data);\n };\n element_interface.create_traffic_flow_line_params(params);\n userdataObj.points = points;\n StampUtil.addToUserDataArr(userdataObj);\n });\n });\n }\n\n /**\n * 参数化创建车流线\n * @param params\n * @returns\n */\n createElementTrafficFlowLineParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(),\n name: params.name || \"\",\n type:\n Number(params.type) || STAMP_RTTI.SE_RTTI_ELEMENT_TRAFFIC_FLOW_LINE,\n action: params.action || \"add\",\n Radius: params.Radius || 1,\n SpeedX: 0,\n SpeedY: params.SpeedY || 1,\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n visible: params.visible == undefined || Number(params.visible),\n drawOrder: 1, //渲染顺序\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_traffic_flow_line_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n\n /**\n * 创建od线\n * @param userdataObj\n * @returns\n */\n createElementODLine(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 334,\n name: \"odLine\",\n action: \"add\", //add:添加 modify:修改\n DrawType: 1,\n Curvature: 0.5,\n Color: \"#FF00D6FF\",\n Speed: 0.5,\n LineScale: 1, //线宽缩放比\n BaseOpacity: 0.02, //背景透明度\n DrawSpline: 0, // 是否绘制辅助的样条线\n selectable: 1,\n editable: 1,\n visible: 1,\n drawOrder: 1, //渲染顺序\n } as any\n ) {\n return new Promise((resolve) => {\n this.createPolyline(\n {\n lineWidth: 2,\n lineColor: 0xffff0000,\n },\n null\n ).then((res: any) => {\n if (!res || !res.Points) {\n return;\n }\n userdataObj.action = \"add\";\n const params = [userdataObj];\n const points = [];\n for (let i = 0; i < res.Points.length; i++) {\n points.push({\n x: res.Points[i].X,\n y: res.Points[i].Y,\n z: res.Points[i].Z,\n });\n params.push(res.Points[i].X, res.Points[i].Y, res.Points[i].Z);\n }\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n element_interface.OldOnAdded = element_interface.OnAdded;\n element_interface.OnAdded = (data: any) => {\n element_interface.OnAdded = element_interface.OldOnAdded;\n resolve(data);\n };\n element_interface.create_ue_spline_actor_params(params);\n userdataObj.points = points;\n StampUtil.addToUserDataArr(userdataObj);\n });\n });\n }\n\n /**\n * 参数化创建od线\n * @param params\n * @returns\n */\n createElementODLineParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(),\n name: params.name || \"\",\n type: Number(params.type) || STAMP_RTTI.SE_RTTI_ELEMENT_OD_LINE,\n action: params.action || \"add\",\n DrawType: params.DrawType,\n Curvature: params.Curvature || 0.5,\n Color: params.Color || \"#FF00D6FF\",\n Speed: params.Speed || 0.5,\n LineScale: params.LineScale || 1, //线宽缩放比\n BaseOpacity: params.BaseOpacity || 0.02, //背景透明度\n DrawSpline: params.DrawSpline, // 是否绘制辅助的样条线\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n visible: params.visible == undefined || Number(params.visible),\n drawOrder: 1, //渲染顺序\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_ue_spline_actor_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n\n /**\n * 创建od线圆环\n * @param userdataObj\n * @returns\n */\n createElementODLineCircle(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 336,\n name: \"odLineCircle\",\n action: \"add\", //add:添加 modify:修改\n DrawType: 1,\n Curvature: 0.5,\n Color: \"#FF00D6FF\",\n Speed: 0.5,\n LineScale: 1, //线宽缩放比\n BaseOpacity: 0.02, //背景透明度\n DrawSpline: 0, // 是否绘制辅助的样条线\n CircleScale: 100,\n CircleAHide: 0,\n CircleBHide: 0,\n selectable: 1,\n editable: 1,\n visible: 1,\n drawOrder: 1, //渲染顺序\n } as any\n ) {\n return new Promise((resolve) => {\n this.createPolyline(\n {\n lineWidth: 2,\n lineColor: 0xffff0000,\n },\n null\n ).then((res: any) => {\n if (!res || !res.Points) {\n return;\n }\n userdataObj.action = \"add\";\n const params = [userdataObj];\n const points = [];\n for (let i = 0; i < res.Points.length; i++) {\n points.push({\n x: res.Points[i].X,\n y: res.Points[i].Y,\n z: res.Points[i].Z,\n });\n params.push(res.Points[i].X, res.Points[i].Y, res.Points[i].Z);\n }\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n element_interface.OldOnAdded = element_interface.OnAdded;\n element_interface.OnAdded = (data: any) => {\n element_interface.OnAdded = element_interface.OldOnAdded;\n resolve(data);\n };\n element_interface.create_ue_spline_actor_params(params);\n userdataObj.points = points;\n StampUtil.addToUserDataArr(userdataObj);\n });\n });\n }\n\n /**\n * 参数化创建od线圆环\n * @param params\n * @returns\n */\n createElementODLineCircleParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(),\n name: params.name || \"\",\n type: Number(params.type) || STAMP_RTTI.SE_RTTI_ELEMENT_OD_LINE,\n action: params.action || \"add\",\n DrawType: params.DrawType,\n Curvature: params.Curvature || 0.5,\n Color: params.Color || \"#FF00D6FF\",\n Speed: params.Speed || 0.5,\n LineScale: params.LineScale, //线宽缩放比\n BaseOpacity: params.BaseOpacity || 0.02, //背景透明度\n DrawSpline: params.DrawSpline, // 是否绘制辅助的样条线\n CircleScale: params.CircleScale || 100,\n CircleAHide: params.CircleAHide,\n CircleBHide: params.CircleBHide,\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n visible: params.visible == undefined || Number(params.visible),\n drawOrder: 1, //渲染顺序\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj);\n } else {\n element_interface.create_ue_spline_actor_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n\n /**\n * 创建流动线\n * @param userdataObj\n * @returns\n */\n createElementSplineFlowLine(\n userdataObj = {\n guid: StampUtil.createGuid(),\n type: 334,\n name: \"odLineCircle\",\n action: \"add\", //add:添加 modify:修改\n Style: 0,\n SplineType: 1,\n MeshDirection: 0,\n Width: 1.0,\n Tilling: 300, // 纹理重复系数\n Speed: 1.0, //\n Loop: 0, // 是否回环\n DrawSpline: 0, // 是否绘制辅助的样条线\n selectable: 1,\n editable: 1,\n visible: 1,\n } as any\n ) {\n return new Promise((resolve) => {\n this.createPolyline(\n {\n lineWidth: 2,\n lineColor: 0xffff0000,\n },\n null\n ).then((res: any) => {\n if (!res || !res.Points) {\n return;\n }\n userdataObj.action = \"add\";\n const params = [userdataObj];\n const points = [];\n for (let i = 0; i < res.Points.length; i++) {\n points.push({\n x: res.Points[i].X,\n y: res.Points[i].Y,\n z: res.Points[i].Z + 5,\n });\n params.push(res.Points[i].X, res.Points[i].Y, res.Points[i].Z);\n }\n const element_interface = StampAPI.LibAx.element_interface(\n StampUtil.getLibax()\n );\n element_interface.OldOnAdded = element_interface.OnAdded;\n element_interface.OnAdded = (data: any) => {\n element_interface.OnAdded = element_interface.OldOnAdded;\n resolve(data);\n };\n element_interface.create_ue_spline_actor_params(params);\n userdataObj.points = points;\n StampUtil.addToUserDataArr(userdataObj);\n });\n });\n }\n\n /**\n * 参数化创建流动线\n * @param params\n * @returns\n */\n createElementSplineFlowLineParams(params: any) {\n if (!params.guid) {\n params.guid = StampUtil.createGuid();\n }\n const element_interface = StampUtil.getLibax().element_interface;\n if (StampUtil.createControlElementVisbile(params)) {\n //判断如果已存在,直接显示即可\n return new Promise((resolve) => {\n resolve(params);\n });\n }\n //需要将后台服务参数转为接口参数\n let paramObj = [\n {\n guid: params.guid || StampUtil.createGuid(),\n name: params.name || \"\",\n type: Number(params.type) || STAMP_RTTI.SE_RTTI_ELEMENT_OD_LINE,\n action: params.action || \"add\",\n Style: params.Style,\n SplineType: params.SplineType,\n MeshDirection: params.MeshDirection,\n Width: params.Width || 1.0,\n Tilling: params.Tilling || 300, // 纹理重复系数\n Speed: params.Speed || 1.0, //\n Loop: params.Loop, // 是否回环\n DrawSpline: params.DrawSpline, // 是否绘制辅助的样条线\n selectable:\n params.selectable == undefined ? 1 : Number(params.selectable),\n editable: params.editable == undefined ? 1 : Number(params.editable),\n visible: params.visible == undefined || Number(params.visible),\n },\n ] as any;\n const pointsArr = [];\n for (let i = 0; i < params.points.length; i++) {\n pointsArr.push(params.points[i].x);\n pointsArr.push(params.points[i].y);\n pointsArr.push(params.points[i].z);\n }\n paramObj = paramObj.concat(pointsArr);\n if (params.action == \"modify\") {\n element_interface.modify_element(paramObj[0]);\n } else {\n element_interface.create_ue_spline_actor_params(paramObj);\n }\n return StampUtil.createElementParams(paramObj[0], params);\n }\n\n iconFlash(data: any) {\n const element_interface = StampUtil.getLibax().element_interface;\n const params = [\n data.guid,\n data.isFlash, // 是否闪烁\n data.flashTime, // 闪烁时间\n data.flashColor, // 闪烁颜色\n ];\n\n element_interface.icon_flash(params);\n }\n\n setBluePrintPlayState(guid: string, playState: boolean) {\n const layer_manager_interface = StampAPI.LibAx.layer_manager_interface(\n StampAPI.lib_ax\n );\n layer_manager_interface.set_blueprint_play_state([guid, playState]);\n }\n\n setTerrainAltitudeScale(value: number) {\n const terrain_manager_interface = StampAPI.lib_ax.terrain_manager_interface;\n terrain_manager_interface.set_terrain_altitude_scale(value);\n }\n //#endregion\n //#region 2.5D出图\n beginGenerate(options: any) {\n return new Promise((resolve) => {\n const global_control_interface = StampAPI.LibAx.global_control_interface(\n StampAPI.lib_ax\n );\n const image_generator_control = StampAPI.LibAx.image_generator_control(\n StampAPI.lib_ax\n );\n const stamp_frame = StampAPI.LibAx.stamp_frame(StampAPI.lib_ax);\n const zip = new JSZip();\n const imageFolder: any = zip.folder(\"2.5DImage\");\n let totalCount = options.totalCount || 0;\n let cur_num = options.currentNum || 0;\n global_control_interface.OnFlytoFinished = function () {\n global_control_interface.OnFlytoFinished = undefined;\n StampUtil.getRootPath().then((res: any) => {\n const path = res.root_path + \"temp\\\\pic2.5\";\n image_generator_control.OnBeginGenerateFinished = function (\n data: any\n ) {\n totalCount = parseInt(data.image_count);\n if (totalCount > 0) {\n stamp_frame.OnDownloadFinished = function () {\n image_generator_control.generate_one();\n cur_num++;\n };\n image_generator_control.goto_image(cur_num);\n }\n };\n image_generator_control.begin_generate(path, options.points);\n });\n };\n global_control_interface.fly_to_lookat(\n options.points[0].x,\n options.points[0].y,\n options.points[0].z,\n options.heading,\n options.tilt,\n 0,\n options.range,\n 1\n );\n image_generator_control.OnGenerateOneFinished = function (\n file_name: any,\n file_buffer: any,\n file_len: any\n ) {\n // todo save\n let newFileName = file_name.split(\"\\\\\");\n newFileName = newFileName[newFileName.length - 1];\n imageFolder.file(newFileName, file_buffer, { binary: true });\n if (options.onProcess && typeof options.onProcess === \"function\") {\n const process = cur_num + \"/\" + totalCount;\n options.onProcess(process);\n }\n if (cur_num < totalCount) {\n image_generator_control.goto_image(cur_num);\n } else {\n image_generator_control.end_generate();\n stamp_frame.OnDownloadFinished = undefined;\n }\n };\n let endGenerateFlag = false; //防止未知原因有时候执行两次\n image_generator_control.OnEndGenerateFinished = function (\n file_name: any,\n file_buffer: any,\n file_len: any\n ) {\n if (endGenerateFlag) {\n return;\n }\n if (options.onComplete && typeof options.onComplete === \"function\") {\n options.onComplete(cur_num, totalCount);\n }\n zip\n .generateAsync({ type: \"blob\" })\n .then((content: Blob) => {\n // 保存到本地\n saveAs(content, \"2.5D出图.zip\");\n })\n .catch((err) => {\n console.error(\"ZIP 生成失败:\", err);\n });\n endGenerateFlag = true;\n resolve(null);\n };\n });\n }\n\n pauseGenerate() {\n const image_generator_control = StampAPI.LibAx.image_generator_control(\n StampAPI.lib_ax\n );\n image_generator_control.pause_generate();\n }\n\n resumeGenerate() {\n const image_generator_control = StampAPI.LibAx.image_generator_control(\n StampAPI.lib_ax\n );\n image_generator_control.resume_generate();\n }\n\n endGenerate() {\n const image_generator_control = StampAPI.LibAx.image_generator_control(\n StampAPI.lib_ax\n );\n const stamp_frame = StampAPI.LibAx.stamp_frame(StampAPI.lib_ax);\n image_generator_control.end_generate();\n stamp_frame.OnDownloadFinished = undefined;\n }\n //#endregion\n\n //#region 全景720截图\n beginCapture(params: any) {\n const panorama_720_shot_interface =\n StampAPI.LibAx.panorama_720_shot_interface(StampAPI.lib_ax);\n const stamp_frame = StampAPI.LibAx.stamp_frame(StampAPI.lib_ax);\n\n let g_current_index = 0;\n\n const g_panorama_params = [\n {\n imageName: params.guid + \"_top.jpg\",\n heading: 0.0,\n pitch: -90.0,\n },\n {\n imageName: params.guid + \"_left.jpg\",\n heading: 270.0,\n pitch: 0.0,\n },\n {\n imageName: params.guid + \"_front.jpg\",\n heading: 0.0,\n pitch: 0.0,\n },\n {\n imageName: params.guid + \"_right.jpg\",\n heading: 90.0,\n pitch: 0.0,\n },\n {\n imageName: params.guid + \"_back.jpg\",\n heading: 180.0,\n pitch: 0.0,\n },\n {\n imageName: params.guid + \"_bottom.jpg\",\n heading: 0,\n pitch: 90.0,\n },\n ] as any[];\n\n stamp_frame.OnDownloadFinished = function (data: any) {\n if (1 == data.Status) {\n //1:超时,0:正常加载完成,可以获取图片\n panorama_720_shot_interface.set_rotation(\n g_panorama_params[g_current_index]\n );\n } else {\n panorama_720_shot_interface.capture_frame();\n }\n };\n panorama_720_shot_interface.OnCaptureFinished = function (data: any) {\n const blob = new Blob([data], { type: \"image/jpeg\" });\n const url = URL.createObjectURL(blob);\n\n g_panorama_params[g_current_index].image = url;\n ++g_current_index;\n if (g_current_index >= g_panorama_params.length) {\n panorama_720_shot_interface.end_capture();\n return;\n }\n\n panorama_720_shot_interface.set_rotation(\n g_panorama_params[g_current_index]\n );\n };\n panorama_720_shot_interface.OnBeginCaptureFinished = function (data: any) {\n panorama_720_shot_interface.set_rotation(\n g_panorama_params[g_current_index]\n ); //触发OnDownloadFinished\n };\n panorama_720_shot_interface.OnEndCaptureFinished = function () {\n for (let i = 0, len = g_panorama_params.length; i < len; ++i) {\n (function (index) {\n const link = document.createElement(\"a\");\n\n link.setAttribute(\"download\", g_panorama_params[index].imageName);\n link.setAttribute(\"href\", g_panorama_params[index].image);\n link.click();\n\n setTimeout(function () {\n window.URL.revokeObjectURL(g_panorama_params[index].image);\n }, 100);\n })(i);\n }\n };\n\n panorama_720_shot_interface.begin_capture(params);\n }\n //#endregion\n})();\n\nexport default StampUtil;\n","/**\n * 动态脚本加载器\n *\n * 核心能力:在运行时通过创建 <script> 标签的方式加载外部 JS 文件,\n * 并返回 Promise,支持同 URL 去重(不会重复加载同一脚本)。\n *\n * 这是封装私有地图 SDK 的关键 —— 因为 playerControl.js / pixelstreaming.js\n * 这类脚本在 window 上注册全局变量(StampAPI、StampPixelStreaming),\n * 无法通过 ES module import 引入。\n */\n\n/** 已加载脚本的缓存,key 为 URL,value 为加载 Promise */\nconst scriptCache = new Map<string, Promise<void>>();\n\n/**\n * 动态加载一个 JS 脚本\n *\n * @param url 脚本的 URL 地址\n * @returns Promise,resolve 表示加载完成,reject 表示加载失败\n */\nexport function loadScript(url: string): Promise<void> {\n const cached = scriptCache.get(url);\n if (cached) {\n return cached;\n }\n\n const promise = new Promise<void>((resolve, reject) => {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.src = url;\n\n script.onload = () => resolve();\n script.onerror = () => {\n scriptCache.delete(url);\n reject(new Error(`[@stampgis/webrtc] 脚本加载失败: ${url}`));\n };\n\n const target =\n document.head || document.getElementsByTagName('head')[0] || document.body;\n target.appendChild(script);\n });\n\n scriptCache.set(url, promise);\n return promise;\n}\n\n/**\n * 等待全局变量就绪\n *\n * 脚本加载完成后,全局对象可能需要异步初始化。\n * 此函数轮询检查全局变量是否已挂载到 window 上。\n *\n * @param globalName 全局变量名\n * @param timeout 超时时间(毫秒),默认 10 秒\n * @param interval 轮询间隔(毫秒),默认 50 毫秒\n */\nexport function waitForGlobal(\n globalName: string,\n timeout = 10000,\n interval = 50,\n): Promise<unknown> {\n return new Promise((resolve, reject) => {\n const start = Date.now();\n\n function check() {\n const value = (window as unknown as Record<string, unknown>)[globalName];\n if (value !== undefined && value !== null) {\n resolve(value);\n return;\n }\n\n if (Date.now() - start >= timeout) {\n reject(\n new Error(\n `[@stampgis/webrtc] 等待全局变量 \"${globalName}\" 超时(${timeout}ms)`,\n ),\n );\n return;\n }\n\n setTimeout(check, interval);\n }\n\n check();\n });\n}\n"],"mappings":"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","names":["module","e","t","r","c","n","i","s","a","o","h","u","l","f","d","p","m","a","b","c","d","g","f","e","module","STAMP_RTTI","data","index","self","param","handler","points","res","JSZip","process"]}