@zacharyjia/tdt-cesium-plugin 1.0.3 → 1.0.4
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.
- package/dist/tdtplug.es.js +1 -1
- package/dist/tdtplug.es.js.map +1 -1
- package/dist/tdtplug.umd.js +1 -1
- package/dist/tdtplug.umd.js.map +1 -1
- package/package.json +1 -1
package/dist/tdtplug.es.js
CHANGED
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
* @author ZacharyJia <jia199474@gmail.com>
|
|
5
5
|
* @license MIT
|
|
6
6
|
*/
|
|
7
|
-
import{inflate as e}from"pako/lib/inflate.js";import{CustomHeightmapTerrainProvider as t,defaultValue as i,Ellipsoid as l,defined as o,DeveloperError as n,HeightmapTerrainData as r,Resource as a,Rectangle as s,TileAvailability as h,Cartesian2 as d,Cartesian3 as u,VerticalOrigin as c,HorizontalOrigin as g,Color as f,LabelStyle as m,combine as p,createGuid as b,Math as y,Entity as v,SceneTransforms as x}from"cesium";import{parse as T}from"protobufjs";function _(e,t,i,l,n,r){let a=e.tileXYToRectangle(i,l,n);return o(s.intersection(a,t,r))}function C(e){return T(e)}function S(e,t){return t.minX>=e.minX&&t.minX<=e.maxX&&t.minY>=e.minY&&t.minY<=e.maxY||t.maxX>=e.minX&&t.maxX<=e.maxX&&t.maxY>=e.minY&&t.maxY<=e.maxY||t.minX>=e.minX&&t.minX<=e.maxX&&t.maxY>=e.minY&&t.maxY<=e.maxY||t.maxX>=e.minX&&t.maxX<=e.maxX&&t.minY>=e.minY&&t.minY<=e.maxY}function I(e){let t=0;for(let i=0;i<e.length;i++)null!=e.charAt(i).match(/[^\x00-\xff]/gi)?t+=2:t+=1;return t}function O(e,t){let i=e.x,l=e.y,o=e.width,n=e.height,r=t.x,a=t.y,s=t.width,h=t.height;return!(r<=i&&r+s<=i||i<=r&&i+o<=r||a<=l&&a+h<=l||l<=a&&l+n<=a)}const w=C("option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;} ;message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Interate = 5;optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\tFontNameIndex=13 [default =0];optional int32\tFontSize=14 [default =18];optional uint32\tFontColor=15 [default =0];};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};").root.lookup("GEOPOI.PBPOITile"),P=C("option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;};enum enumZCoordType {eCloseGround = 0;eCloseSeaSurface = 1;eRelativelyGround = 2;eAbsolute = 3;};message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Interate = 5;optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\tFontNameIndex=13 [default =0];optional int32\tFontSize=14 [default =18];optional uint32\tFontColor=15 [default =0];optional enumZCoordType ZCoordType = 16 [default = eAbsolute];};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};").root.lookup("GEOPOI.PBPOITile"),L=C("option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;};enum enumZCoordType {eCloseGround = 0;eCloseSeaSurface = 1;eRelativelyGround = 2;eAbsolute = 3;};message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Priority = 5;repeated int32 Interates =6 [packed=true];optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\tFontNameIndex=13 [default =0];optional int32\tFontSize=14 [default =18];optional uint32\tFontColor=15 [default =0];optional enumZCoordType ZCoordType = 16 [default = eAbsolute];optional int32 FontStyle=17;optional int32 ShiningSize=18;};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};").root.lookup("GEOPOI.PBPOITile");function E(e){const t={stringTable:[],pois:[],enumGeometryType:[{ePoint:0},{eMultiLineString:1},{ePolygon:2}],enumZCoordType:[{eCloseGround:0},{eCloseSeaSurface:1},{eRelativelyGround:2},{eAbsolute:3}]};let i,l=new Uint8Array(e);try{i=L.decode(l)}catch(e){console.error(e.message)}if(!i)try{i=P.decode(l)}catch(e){console.error(e.message),i=w.decode(l)}t.version=parseInt(i.Version.toString()),t.titleKey=parseInt(i.TileKey.toString());for(let e=i.StringTable.s.length,l=0;l<e;l++)t.stringTable.push(i.StringTable.s[l].toString());let o=i.POIS.length;for(;o--;){const e={},l=i.POIS[o];e.oid=parseInt(l.OID.toString())+"_"+t.titleKey,e.name=l.Name.toString(),e.symbolID=parseInt(l.SymbolID.toString()),e.displayHeight=l.DisplayHeight,e.shiningColor=l.ShiningColor,e.fontNameIndex=l.FontNameIndex,e.fontSize=l.FontSize,e.fontColor=l.FontColor,l.ZCoordType&&(e.zCoordType=l.ZCoordType),e.geometryType=l.GeometryType,e.coordinate=l.Coordinates,e.priority=void 0===l.Priority?null:l.Priority,e.interates=void 0===l.Interates?null:l.Interates,e.fontStyle=void 0===l.FontStyle?null:l.FontStyle,e.shiningSize=void 0===l.ShiningSize?null:l.ShiningSize,t.pois.push(e)}return t}const z={font:"28px sans-serif",fontSize:28,fillColor:f.WHITE,scale:.5,outlineColor:f.BLACK,outlineWidth:5,style:m.FILL_AND_OUTLINE,showBackground:!1,backgroundColor:f.RED,backgroundPadding:new d(10,10),horizontalOrigin:g.CENTER,verticalOrigin:c.TOP,eyeOffset:u.ZERO,pixelOffset:new d(0,8)},D={horizontalOrigin:g.CENTER,verticalOrigin:c.CENTER,eyeOffset:u.ZERO,pixelOffset:d.ZERO,alignedAxis:u.ZERO,color:f.WHITE,rotation:0,scale:1,width:18,height:18};var G={GeoTerrainProvider:class extends t{constructor(e){if(e=i(e,{}),super({...e,callback:()=>{},ellipsoid:l.WGS84,width:64,height:64}),!o(e.url))throw new n("options.url is required.");this._dataType=i(e.dataType,"int16"),this._url=e.url,this._subdomains=e.subdomains,this._token=e.token,this._rectangles=[],this._topLevel=5,this._bottomLevel=12,this._terrainDataStructure={heightScale:.001,heightOffset:-1e3,elementsPerHeight:3,stride:4,elementMultiplier:256,isBigEndian:!0},this._availability=function(e){const t=[[[0,0,1,0]]],i=t.length,l=new h(e.tilingScheme,19);for(let e=0;e<i;++e){const i=t[e];for(let t=0;t<i.length;++t){const o=i[t];l.addAvailableTileRange(e,o[0],o[1],o[2],o[3])}}return l}(this)}get availability(){return this._availability}requestTileGeometry(t,i,l,o){if(l>=this._bottomLevel)return Promise.reject(`${l}该级别不发送请求!`);if(l<this._topLevel)return Promise.resolve(new r({buffer:this._getVHeightBuffer(),width:this._width,height:this._height,childTileMask:this._getChildTileMask(t,i,l),structure:this._terrainDataStructure}));let n="",s=this._url;Array.isArray(this._subdomains)&&this._subdomains.length&&(n=this._subdomains[(t+i)%this._subdomains.length],s=s.replace("{s}",n)),s=s.replace("{token}",this._token).replace("{x}",t).replace("{y}",i).replace("{z}",l+1);const h=a.fetchArrayBuffer({url:s,request:o});return h?h.then(t=>t.byteLength<1e3?Promise.reject("无效数据"):e(t)).then(e=>function(e,t,i,l,o){const n=new r({buffer:e._transformBuffer(t),width:e._width,height:e._height,childTileMask:e._getChildTileMask(l,o,i),structure:e._terrainDataStructure});return n._skirtHeight=6e3,e.availability.addAvailableTileRange(i,l,o,l,o),n}(this,e,l,t,i)):void 0}getTileDataAvailable(e,t,i){if(i<this._bottomLevel)return!0}_transformBuffer(e){let t=2;"int16"===this._dataType?t=2:"float"===this._dataType&&(t=4);let i=e;if(i.length!==22500*t)return null;let l,o,n,r,a=new ArrayBuffer(t),s=new DataView(a),h=this._width,d=this._height,u=new Uint8Array(h*d*4);for(let e=0;e<d;e++)for(let a=0;a<h;a++){n=parseInt(149*e/(d-1)),r=parseInt(149*a/(h-1)),o=t*(150*n+r),4===t?(s.setInt8(0,i[o]),s.setInt8(1,i[o+1]),s.setInt8(2,i[o+2]),s.setInt8(3,i[o+3]),l=s.getFloat32(0,!0)):l=i[o]+256*i[o+1],(1e4<l||l<-2e3)&&(l=0);let c=(l+1e3)/.001,g=4*(e*h+a);u[g]=c/65536,u[1+g]=(c-256*u[g]*256)/256,u[2+g]=c-256*u[g]*256-256*u[1+g],u[3+g]=255}return u}_getVHeightBuffer(){let e=this._vHeightBuffer;if(!o(e)){e=new Uint8ClampedArray(this._width*this._height*4);for(let t=0;t<this._width*this._height*4;)e[t++]=15,e[t++]=66,e[t++]=64,e[t++]=255;this._vHeightBuffer=e}return e}_getChildTileMask(e,t,i){let l=new s,n=this._tilingScheme,r=this._rectangles,a=n.tileXYToRectangle(e,t,i),h=0;for(let d=0;d<r.length&&15!==h;++d){let u=r[d];if(!(u.maxLevel<=i)){let r=u.rectangle,d=s.intersection(r,a,l);o(d)&&(_(n,r,2*e,2*t,i+1,l)&&(h|=4),_(n,r,2*e+1,2*t,i+1,l)&&(h|=8),_(n,r,2*e,2*t+1,i+1,l)&&(h|=1),_(n,r,2*e+1,2*t+1,i+1,l)&&(h|=2))}}return h}},GeoWTFS:class{constructor(e,t){if(!o(e))throw new n("viewer is required.");if(!o(t.url))throw new n("options.url is required.");t=i(t,{}),this.viewer=e,this.proxy=t.proxy,this.url=t.url,this.icoUrl=t.icoUrl,this.metadata=t.metadata,this.roadMetadata=t.roadMetadata,this.roadUrl=t.roadUrl,this.labelGraphics=p(t.labelGraphics,z,!0),this.billboardGraphics=p(t.billboardGraphics,D,!0),this.aotuCollide=!!t.aotuCollide,this.collisionPadding=i(t.collisionPadding,[3,5,3,5]),this.serverFirstStyle=!!t.serverFirstStyle,this.subdomains=t.subdomains||[],this.tileCache=[],this.labelCache=[],this._isInitial=!1,this._latelyGrid=[],this._latelyRefreshStamp=0,this._latelyCollisionStamp=0;const l=b();this._UUID="GEO_WTFS_LABEL_"+l,this._UUIDRoad="GEO_WTFS_LABEL_ROAD_"+l,this.viewer.camera.percentageChanged=.18,this.bindEvent()}bindEvent(){this.viewer.scene.camera.moveEnd.addEventListener(this._moveEnd,this),this.viewer.scene.camera.changed.addEventListener(this._changed,this)}_moveEnd(){clearTimeout(this._timer);const e=this.viewer.scene.globe._surface;if(e._tilesToRender.length<2||0<e._tileLoadQueueHigh.length)this._timer=setTimeout(()=>{this._moveEnd()},100);else{const e=this.getTilesToRender();if(this.compareArray(e,this._latelyGrid))return;this._queueCall(e),this.delaySynchronous()}}_changed(){const e=(new Date).getTime(),t=e-this._latelyRefreshStamp,i=e-this._latelyCollisionStamp;300<t&&this._moveEnd(),150<i&&this.collisionDetection()}getTilesToRender(){const e=this.viewer.scene.globe._surface._tilesToRender.map(function(e){return{x:e.x,y:e.y,level:e.level,boundBox:{minX:y.toDegrees(e.rectangle.west),minY:y.toDegrees(e.rectangle.south),maxX:y.toDegrees(e.rectangle.east),maxY:y.toDegrees(e.rectangle.north)}}}).sort(function(e,t){return t.level-e.level}),t=[e[0].level];for(let i=0;i<e.length;i++)e[i].level!==t[t.length-1]&&(t.push(e[i].level),4<t.length&&(e.splice(i,1/0),i--));return e}compareArray(e,t){let i=!1;for(let l=0;l<e.length;l++){let o=!1;for(let i=0;i<t.length;i++)if(e[l].x===t[i].x&&e[l].y===t[i].y&&e[l].level===t[i].level){o=!0;break}if(!o){i=!0;break}}return!i}_queueCall(e){this._latelyGrid=e,this._latelyRefreshStamp=(new Date).getTime();let t=e.length;for(;t--;){const i=e[t];if(this.metadata&&S(this.metadata.boundBox,i.boundBox)){if(this.metadata.minLevel>i.level+1||this.metadata.maxLevel<i.level+1)return;const e=this.getCacheTile(i.x,i.y,i.level,0);if(e)this.addLabelAndIco(e);else{const e=this.subdomains.length?(i.x+i.y)%this.subdomains.length:"";let t=this.getTileUrl().replace("{x}",i.x).replace("{y}",i.y).replace("{z}",i.level+1).replace("{s}",e);const l=new XMLHttpRequest;l.open("GET",t,!0),l.responseType="arraybuffer";const o=this;l.onload=function(){if(!(l.status<200||300<=l.status)){const e=o.cutString(l.response);let t;e?(t=E(e),t.x=this.tile.x,t.y=this.tile.y,t.z=this.tile.z,t.t=0,o.addCacheTile(t),o.addLabelAndIco(t)):(t={x:this.tile.x,y:this.tile.y,z:this.tile.z,t:0},o.addCacheTile(t),o.delaySynchronous())}},l.onerror=function(e){console.error(e)},l.send(),l.tile={x:i.x,y:i.y,z:i.level+1}}}if(this.roadMetadata&&S(this.roadMetadata.boundBox,i.boundBox)){if(this.roadMetadata.minLevel>i.level+1||this.roadMetadata.maxLevel<i.level+1)return;const e=this.getCacheTile(i.x,i.y,i.level,0);if(e)this.addLabelAndIco(e);else{const e=this.subdomains.length?(i.x+i.y)%this.subdomains.length:"",t=this.getRoadTileUrl().replace("{x}",i.x).replace("{y}",i.y).replace("{z}",i.level+1).replace("{s}",e),l=new XMLHttpRequest;l.open("GET",t,!0),l.responseType="json";const o=this;l.onload=function(){if(!(l.status<200||300<=l.status)){const e=l.response;let t;e?(t={pois:e.map(e=>({oid:e.LabelPoint.X+"_"+e.LabelPoint.Y,name:e.Feature.properties.Name,coordinate:[e.LabelPoint.X,e.LabelPoint.Y,e.LabelPoint.Z?e.LabelPoint.Z:0]})),x:this.tile.x,y:this.tile.y,z:this.tile.z,t:1},o.addCacheTile(t),o.addLabelAndIco(t)):(t={x:this.tile.x,y:this.tile.y,z:this.tile.z,t:1},o.addCacheTile(t),o.delaySynchronous())}},l.onerror=function(e){console.error(e)},l.send(),l.tile={x:i.x,y:i.y,z:i.level+1}}}}}cutString(e){if(!e)return"";let t=e.byteLength;return t<=28?"":e.slice(19,t-9)}addCacheTile(e){999<this.tileCache.length&&this.tileCache.splice(0,500),this.removeCacheTile(e.x,e.y,e.z,e.t),this.tileCache.push(e)}getCacheTile(e,t,i,l){let o=this.tileCache.length;for(;o--;){const n=this.tileCache[o];if(n.x===e&&n.y===t&&n.z===i&&n.t===l)return n}return null}removeCacheTile(e,t,i,l){let o=this.tileCache.length;for(;o--;){const n=this.tileCache[o];if(n.x===e&&n.y===t&&n.z===i&&n.t===l)return void this.tileCache.splice(o,1)}}getCacheLabel(e){let t=this.labelCache.length;for(;t--;){const i=this.labelCache[t];if(i.name===this._UUID&&i.oid===e)return i}return null}addCacheLabel(e){999<this.labelCache.length&&this.labelCache.splice(0,250),this.removeCacheLabel(e.oid),e.timestamp=(new Date).getTime(),this.labelCache.push(e)}removeCacheLabel(e){let t=this.labelCache.length;for(;t--;)if(this.labelCache[t].name===this._UUID&&this.labelCache[t].oid===e)return void this.labelCache.splice(t,1)}HexadecimalConversion(e){if(4278190080===e)return"#000000";let t=4278190080|parseInt(-Number(e));if(e="",(t=t.toString(16).substring(1)).length<6)for(let i=6-t.length,l=0;l<i;l++)e+="0";return"#"+e+t}addLabelAndIco(e){if(e.pois&&e.pois.length){let t=e.pois.length;for(;t--;){const i=e.pois[t];let l=this.getCacheLabel(i.oid);!l&&(l=this.createLabel(i,e)),this.addCacheLabel(l)}}this.delaySynchronous()}createLabel(e,t){if(e){const i={show:!0,position:u.fromDegrees(...e.coordinate),label:{text:e.name}};if(Object.assign(i.label,this.labelGraphics),this.serverFirstStyle&&(void 0!==e.fontSize&&(i.label.font=e.fontSize+"px ",void 0!==e.fontNameIndex&&t.stringTable&&t.stringTable[e.fontNameIndex]?i.label.font+=t.stringTable[e.fontNameIndex]:i.label.font+="sans-serif",this.labelGraphics.bold||1===e.fontStyle&&3===e.fontStyle||(i.label.font="bold "+i.label.font),2===e.fontStyle&&3===e.fontStyle||(i.label.font="italic "+i.label.font)),void 0!==e.fontColor&&(i.label.fillColor=f.fromCssColorString(this.HexadecimalConversion(e.fontColor))),void 0!==e.shiningColor&&(i.label.outlineColor=f.fromCssColorString(this.HexadecimalConversion(e.shiningColor))),"number"==typeof e.shiningSize&&(i.label.outlineWidth=e.shiningSize),void 0!==e.showBackground&&(i.label.showBackground=e.showBackground),void 0!==e.backgroundColor&&(i.label.backgroundColor=e.backgroundColor),void 0!==e.backgroundPadding&&(i.label.backgroundPadding=e.backgroundPadding),void 0!==e.eyeOffset&&(i.label.eyeOffset=e.eyeOffset),void 0!==e.pixelOffset&&(i.label.pixelOffset=e.pixelOffset),void 0!==e.style&&(i.label.style=e.style),void 0!==e.scale&&(i.label.scale=e.scale),t.t||(void 0!==e.verticalOrigin&&(i.label.verticalOrigin=e.verticalOrigin),void 0!==e.horizontalOrigin&&(i.label.horizontalOrigin=e.horizontalOrigin))),void 0!==e.symbolID&&-1<e.symbolID){const l=this.subdomains.length?(t.x+t.y)%this.subdomains.length:"";i.billboard={image:this.getIcoUrl().replace("{id}",t.symbolID).replace("{s}",this.subdomains[l])},Object.assign(i.billboard,this.billboardGraphics),this.serverFirstStyle&&(void 0!==e.displayHeight&&(i.billboard.width=e.displayHeight,i.billboard.height=e.displayHeight),void 0!==e.eyeOffset&&(i.billboard.eyeOffset=e.eyeOffset),void 0!==e.pixelOffset&&(i.billboard.pixelOffset=e.pixelOffset),void 0!==e.rotation&&(i.billboard.rotation=e.rotation),void 0!==e.alignedAxis&&(i.billboard.alignedAxis=e.alignedAxis),void 0!==e.color&&(i.billboard.color=e.color),void 0!==e.scale&&(i.billboard.scale=e.scale),t.t||(void 0!==e.verticalOrigin&&(i.billboard.verticalOrigin=e.verticalOrigin),void 0!==e.horizontalOrigin&&(i.billboard.horizontalOrigin=e.horizontalOrigin)))}t.t&&(i.label.verticalOrigin=c.CENTER,i.label.horizontalOrigin=g.CENTER,i.billboard.verticalOrigin=c.CENTER,i.billboard.horizontalOrigin=g.CENTER);const l=new v(i);return l.name=t.x?this._UUIDRoad:this._UUID,l.oid=e.oid,l.priority=e.priority||0,l.xyz=t.x+"_"+t.y+"_"+(t.z-1),l}}getIcoUrl(){return(this.proxy?this.proxy.proxy:"")+this.icoUrl}getTileUrl(){return(this.proxy?this.proxy.proxy:"")+this.url}getRoadTileUrl(){return(this.proxy?this.proxy.proxy:"")+this.roadUrl}delaySynchronous(){clearTimeout(this._timer2),this._timer2=setTimeout(()=>{this.synchronousLabel()},100)}synchronousLabel(){let e=this.labelCache.length;for(;e--;){const t=this.labelCache[e];t.timestamp>=this._latelyRefreshStamp&&!this.viewer.entities.contains(t)&&(this._isInitial&&this.aotuCollide&&(t.show=!1),this.viewer.entities.add(t))}if(!this._isInitial){let e=this.viewer.entities.values.length;for(;e--;){const t=this.viewer.entities.values[e];!t.name||t.name!==this._UUID&&t.name!==this._UUIDRoad||t.timestamp<this._latelyRefreshStamp&&(this.viewer.entities.remove(t),e--)}this.aotuCollide&&this.collisionDetection()}}collisionDetection(){const e=this.viewer.entities.values;let t=[],i=[],l=e.length;for(;l--;){const i=e[l];if(i.name&&(i.name===this._UUID||i.name===this._UUIDRoad)){let e,l;e=x.wgs84ToDrawingBufferCoordinates(this.viewer.scene,i.position.getValue(0)),i.show=!0,l=this.getLabelReact({point:e,entity:i}),i.collisionBox=l;let o=null,n=t.length;for(;!o&&n--;)t[n].xyz===i.xyz&&(o=t[n]);o||(o={xzy:i.xyz,entities:[]},t.push(o),o.entities.push(i))}}let o=t.length;for(;o--;){const e=t[o];e.entities.sort(function(e,t){return e.priority-t.priority});for(let t=0;t<e.entities.length;t++){const l=e.entities[t];if(l.show){for(let i=t+1;i<e.entities.length;i++)e.entities[i].show&&O(l.collisionBox,e.entities[i].collisionBox)&&(e.entities[i].show=!1);i.push(l)}}}let n=i.length;for(;n--;)if(i[n].show){i.sort(function(e,t){return e.priority-t.priority});for(let e=n+1;e<i.length;e++)i[e].show&&O(i[n].collisionBox,i[e].collisionBox)&&(i[e].show=!1)}}getLabelReact(e){const{point:t,entity:i}=e;let l=parseInt(i.label.font);l=0<l?l:15;const o=i.label.text.getValue(0).split("\n");let n=0;for(let e=0;e<o.length;e++){let t=I(o[e])/2;n<t&&(n=t)}let r=i.billboard?i.billboard.width.getValue(0)*i.billboard.scale.getValue(0):1,a=i.billboard?i.billboard.height.getValue(0)*i.billboard.scale.getValue(0):1;return{x:(t?t.x:-999)-r/2-this.collisionPadding[3],y:(t?t.y:-999)-a/2-this.collisionPadding[0],width:l*i.label.scale.getValue(0)*n+i.label.pixelOffset.getValue(0).x+r+this.collisionPadding[1],height:l*i.label.scale.getValue(0)*n+i.label.pixelOffset.getValue(0).y+r+this.collisionPadding[2]}}initTDT(e){let t=0;this._isInitial=!0,this._queueCall(e);const i=setInterval(()=>{3<t&&(this._isInitial=!1,clearInterval(i)),t%2==0&&this.aotuCollide&&this.collisionDetection(),t++},600);return this}getPropertyValue(e,t,i,l){return void 0!==t[e]?t[e]:void 0!==i[e]?i[e]:l}unbindEvent(){this.viewer.scene.camera.moveEnd.removeEventListener(this._moveEnd,this),this.viewer.scene.camera.changed.removeEventListener(this._changed,this)}activate(){this._latelyGrid=[],this._moveEnd()}destroy(){let e=this.viewer.entities.values.length;for(;e--;){const t=this.viewer.entities.values[e];!t.name||t.name!==this._UUID&&t.name!==this._UUIDRoad||(this.viewer.entities.remove(t),e--)}this.viewer.camera.percentageChanged=.5,this.unbindEvent(),this.handler=this.handler&&this.handler.destroy(),this.proxy=void 0,this.viewer=void 0,this.url=void 0,this.labelGraphics=void 0,this.billboardGraphics=void 0,this.aotuCollide=void 0,this.collisionPadding=void 0,this.tileCache=void 0,this.labelCache=void 0,this._latelyGrid=void 0,this._latelyRefreshStamp=void 0,this._roadTileset=void 0}getLabelVisibility(e){if(!e)return!1;const t=this.viewer.canvas.getBoundingClientRect();return!(e.x<-10||e.x>t.right+10||e.y<-10||e.y>t.bottom+10)}}};export{G as default};
|
|
7
|
+
import{inflate as e}from"pako/lib/inflate.js";import{CustomHeightmapTerrainProvider as t,Ellipsoid as i,defined as l,DeveloperError as o,HeightmapTerrainData as n,Resource as r,Rectangle as a,TileAvailability as s,Cartesian2 as h,Cartesian3 as d,VerticalOrigin as u,HorizontalOrigin as c,Color as g,LabelStyle as f,combine as m,createGuid as p,Math as b,Entity as y,SceneTransforms as v}from"cesium";import{parse as x}from"protobufjs";function T(e,t,i,o,n,r){let s=e.tileXYToRectangle(i,o,n);return l(a.intersection(s,t,r))}function _(e){return x(e)}function C(e,t){return t.minX>=e.minX&&t.minX<=e.maxX&&t.minY>=e.minY&&t.minY<=e.maxY||t.maxX>=e.minX&&t.maxX<=e.maxX&&t.maxY>=e.minY&&t.maxY<=e.maxY||t.minX>=e.minX&&t.minX<=e.maxX&&t.maxY>=e.minY&&t.maxY<=e.maxY||t.maxX>=e.minX&&t.maxX<=e.maxX&&t.minY>=e.minY&&t.minY<=e.maxY}function S(e){let t=0;for(let i=0;i<e.length;i++)null!=e.charAt(i).match(/[^\x00-\xff]/gi)?t+=2:t+=1;return t}function I(e,t){let i=e.x,l=e.y,o=e.width,n=e.height,r=t.x,a=t.y,s=t.width,h=t.height;return!(r<=i&&r+s<=i||i<=r&&i+o<=r||a<=l&&a+h<=l||l<=a&&l+n<=a)}const O=_("option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;} ;message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Interate = 5;optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\tFontNameIndex=13 [default =0];optional int32\tFontSize=14 [default =18];optional uint32\tFontColor=15 [default =0];};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};").root.lookup("GEOPOI.PBPOITile"),w=_("option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;};enum enumZCoordType {eCloseGround = 0;eCloseSeaSurface = 1;eRelativelyGround = 2;eAbsolute = 3;};message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Interate = 5;optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\tFontNameIndex=13 [default =0];optional int32\tFontSize=14 [default =18];optional uint32\tFontColor=15 [default =0];optional enumZCoordType ZCoordType = 16 [default = eAbsolute];};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};").root.lookup("GEOPOI.PBPOITile"),P=_("option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;};enum enumZCoordType {eCloseGround = 0;eCloseSeaSurface = 1;eRelativelyGround = 2;eAbsolute = 3;};message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Priority = 5;repeated int32 Interates =6 [packed=true];optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\tFontNameIndex=13 [default =0];optional int32\tFontSize=14 [default =18];optional uint32\tFontColor=15 [default =0];optional enumZCoordType ZCoordType = 16 [default = eAbsolute];optional int32 FontStyle=17;optional int32 ShiningSize=18;};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};").root.lookup("GEOPOI.PBPOITile");function L(e){const t={stringTable:[],pois:[],enumGeometryType:[{ePoint:0},{eMultiLineString:1},{ePolygon:2}],enumZCoordType:[{eCloseGround:0},{eCloseSeaSurface:1},{eRelativelyGround:2},{eAbsolute:3}]};let i,l=new Uint8Array(e);try{i=P.decode(l)}catch(e){console.error(e.message)}if(!i)try{i=w.decode(l)}catch(e){console.error(e.message),i=O.decode(l)}t.version=parseInt(i.Version.toString()),t.titleKey=parseInt(i.TileKey.toString());for(let e=i.StringTable.s.length,l=0;l<e;l++)t.stringTable.push(i.StringTable.s[l].toString());let o=i.POIS.length;for(;o--;){const e={},l=i.POIS[o];e.oid=parseInt(l.OID.toString())+"_"+t.titleKey,e.name=l.Name.toString(),e.symbolID=parseInt(l.SymbolID.toString()),e.displayHeight=l.DisplayHeight,e.shiningColor=l.ShiningColor,e.fontNameIndex=l.FontNameIndex,e.fontSize=l.FontSize,e.fontColor=l.FontColor,l.ZCoordType&&(e.zCoordType=l.ZCoordType),e.geometryType=l.GeometryType,e.coordinate=l.Coordinates,e.priority=void 0===l.Priority?null:l.Priority,e.interates=void 0===l.Interates?null:l.Interates,e.fontStyle=void 0===l.FontStyle?null:l.FontStyle,e.shiningSize=void 0===l.ShiningSize?null:l.ShiningSize,t.pois.push(e)}return t}const E={font:"28px sans-serif",fontSize:28,fillColor:g.WHITE,scale:.5,outlineColor:g.BLACK,outlineWidth:5,style:f.FILL_AND_OUTLINE,showBackground:!1,backgroundColor:g.RED,backgroundPadding:new h(10,10),horizontalOrigin:c.CENTER,verticalOrigin:u.TOP,eyeOffset:d.ZERO,pixelOffset:new h(0,8)},z={horizontalOrigin:c.CENTER,verticalOrigin:u.CENTER,eyeOffset:d.ZERO,pixelOffset:h.ZERO,alignedAxis:d.ZERO,color:g.WHITE,rotation:0,scale:1,width:18,height:18};var D={GeoTerrainProvider:class extends t{constructor(e){if(e=e??{},super({...e,callback:()=>{},ellipsoid:i.WGS84,width:64,height:64}),!l(e.url))throw new o("options.url is required.");this._dataType=e.dataType??"int16",this._url=e.url,this._subdomains=e.subdomains,this._token=e.token,this._rectangles=[],this._topLevel=5,this._bottomLevel=12,this._terrainDataStructure={heightScale:.001,heightOffset:-1e3,elementsPerHeight:3,stride:4,elementMultiplier:256,isBigEndian:!0},this._availability=function(e){const t=[[[0,0,1,0]]],i=t.length,l=new s(e.tilingScheme,19);for(let e=0;e<i;++e){const i=t[e];for(let t=0;t<i.length;++t){const o=i[t];l.addAvailableTileRange(e,o[0],o[1],o[2],o[3])}}return l}(this)}get availability(){return this._availability}requestTileGeometry(t,i,l,o){if(l>=this._bottomLevel)return Promise.reject(`${l}该级别不发送请求!`);if(l<this._topLevel)return Promise.resolve(new n({buffer:this._getVHeightBuffer(),width:this._width,height:this._height,childTileMask:this._getChildTileMask(t,i,l),structure:this._terrainDataStructure}));let a="",s=this._url;Array.isArray(this._subdomains)&&this._subdomains.length&&(a=this._subdomains[(t+i)%this._subdomains.length],s=s.replace("{s}",a)),s=s.replace("{token}",this._token).replace("{x}",t).replace("{y}",i).replace("{z}",l+1);const h=r.fetchArrayBuffer({url:s,request:o});return h?h.then(t=>t.byteLength<1e3?Promise.reject("无效数据"):e(t)).then(e=>function(e,t,i,l,o){const r=new n({buffer:e._transformBuffer(t),width:e._width,height:e._height,childTileMask:e._getChildTileMask(l,o,i),structure:e._terrainDataStructure});return r._skirtHeight=6e3,e.availability.addAvailableTileRange(i,l,o,l,o),r}(this,e,l,t,i)):void 0}getTileDataAvailable(e,t,i){if(i<this._bottomLevel)return!0}_transformBuffer(e){let t=2;"int16"===this._dataType?t=2:"float"===this._dataType&&(t=4);let i=e;if(i.length!==22500*t)return null;let l,o,n,r,a=new ArrayBuffer(t),s=new DataView(a),h=this._width,d=this._height,u=new Uint8Array(h*d*4);for(let e=0;e<d;e++)for(let a=0;a<h;a++){n=parseInt(149*e/(d-1)),r=parseInt(149*a/(h-1)),o=t*(150*n+r),4===t?(s.setInt8(0,i[o]),s.setInt8(1,i[o+1]),s.setInt8(2,i[o+2]),s.setInt8(3,i[o+3]),l=s.getFloat32(0,!0)):l=i[o]+256*i[o+1],(1e4<l||l<-2e3)&&(l=0);let c=(l+1e3)/.001,g=4*(e*h+a);u[g]=c/65536,u[1+g]=(c-256*u[g]*256)/256,u[2+g]=c-256*u[g]*256-256*u[1+g],u[3+g]=255}return u}_getVHeightBuffer(){let e=this._vHeightBuffer;if(!l(e)){e=new Uint8ClampedArray(this._width*this._height*4);for(let t=0;t<this._width*this._height*4;)e[t++]=15,e[t++]=66,e[t++]=64,e[t++]=255;this._vHeightBuffer=e}return e}_getChildTileMask(e,t,i){let o=new a,n=this._tilingScheme,r=this._rectangles,s=n.tileXYToRectangle(e,t,i),h=0;for(let d=0;d<r.length&&15!==h;++d){let u=r[d];if(!(u.maxLevel<=i)){let r=u.rectangle,d=a.intersection(r,s,o);l(d)&&(T(n,r,2*e,2*t,i+1,o)&&(h|=4),T(n,r,2*e+1,2*t,i+1,o)&&(h|=8),T(n,r,2*e,2*t+1,i+1,o)&&(h|=1),T(n,r,2*e+1,2*t+1,i+1,o)&&(h|=2))}}return h}},GeoWTFS:class{constructor(e,t){if(!l(e))throw new o("viewer is required.");if(!l((t=t??{}).url))throw new o("options.url is required.");this.viewer=e,this.proxy=t.proxy,this.url=t.url,this.icoUrl=t.icoUrl,this.metadata=t.metadata,this.roadMetadata=t.roadMetadata,this.roadUrl=t.roadUrl,this.labelGraphics=m(t.labelGraphics,E,!0),this.billboardGraphics=m(t.billboardGraphics,z,!0),this.aotuCollide=!!t.aotuCollide,this.collisionPadding=t.collisionPadding??[3,5,3,5],this.serverFirstStyle=!!t.serverFirstStyle,this.subdomains=t.subdomains||[],this.tileCache=[],this.labelCache=[],this._isInitial=!1,this._latelyGrid=[],this._latelyRefreshStamp=0,this._latelyCollisionStamp=0;const i=p();this._UUID="GEO_WTFS_LABEL_"+i,this._UUIDRoad="GEO_WTFS_LABEL_ROAD_"+i,this.viewer.camera.percentageChanged=.18,this.bindEvent()}bindEvent(){this.viewer.scene.camera.moveEnd.addEventListener(this._moveEnd,this),this.viewer.scene.camera.changed.addEventListener(this._changed,this)}_moveEnd(){clearTimeout(this._timer);const e=this.viewer.scene.globe._surface;if(e._tilesToRender.length<2||0<e._tileLoadQueueHigh.length)this._timer=setTimeout(()=>{this._moveEnd()},100);else{const e=this.getTilesToRender();if(this.compareArray(e,this._latelyGrid))return;this._queueCall(e),this.delaySynchronous()}}_changed(){const e=(new Date).getTime(),t=e-this._latelyRefreshStamp,i=e-this._latelyCollisionStamp;300<t&&this._moveEnd(),150<i&&this.collisionDetection()}getTilesToRender(){const e=this.viewer.scene.globe._surface._tilesToRender.map(function(e){return{x:e.x,y:e.y,level:e.level,boundBox:{minX:b.toDegrees(e.rectangle.west),minY:b.toDegrees(e.rectangle.south),maxX:b.toDegrees(e.rectangle.east),maxY:b.toDegrees(e.rectangle.north)}}}).sort(function(e,t){return t.level-e.level}),t=[e[0].level];for(let i=0;i<e.length;i++)e[i].level!==t[t.length-1]&&(t.push(e[i].level),4<t.length&&(e.splice(i,1/0),i--));return e}compareArray(e,t){let i=!1;for(let l=0;l<e.length;l++){let o=!1;for(let i=0;i<t.length;i++)if(e[l].x===t[i].x&&e[l].y===t[i].y&&e[l].level===t[i].level){o=!0;break}if(!o){i=!0;break}}return!i}_queueCall(e){this._latelyGrid=e,this._latelyRefreshStamp=(new Date).getTime();let t=e.length;for(;t--;){const i=e[t];if(this.metadata&&C(this.metadata.boundBox,i.boundBox)){if(this.metadata.minLevel>i.level+1||this.metadata.maxLevel<i.level+1)return;const e=this.getCacheTile(i.x,i.y,i.level,0);if(e)this.addLabelAndIco(e);else{const e=this.subdomains.length?(i.x+i.y)%this.subdomains.length:"";let t=this.getTileUrl().replace("{x}",i.x).replace("{y}",i.y).replace("{z}",i.level+1).replace("{s}",e);const l=new XMLHttpRequest;l.open("GET",t,!0),l.responseType="arraybuffer";const o=this;l.onload=function(){if(!(l.status<200||300<=l.status)){const e=o.cutString(l.response);let t;e?(t=L(e),t.x=this.tile.x,t.y=this.tile.y,t.z=this.tile.z,t.t=0,o.addCacheTile(t),o.addLabelAndIco(t)):(t={x:this.tile.x,y:this.tile.y,z:this.tile.z,t:0},o.addCacheTile(t),o.delaySynchronous())}},l.onerror=function(e){console.error(e)},l.send(),l.tile={x:i.x,y:i.y,z:i.level+1}}}if(this.roadMetadata&&C(this.roadMetadata.boundBox,i.boundBox)){if(this.roadMetadata.minLevel>i.level+1||this.roadMetadata.maxLevel<i.level+1)return;const e=this.getCacheTile(i.x,i.y,i.level,0);if(e)this.addLabelAndIco(e);else{const e=this.subdomains.length?(i.x+i.y)%this.subdomains.length:"",t=this.getRoadTileUrl().replace("{x}",i.x).replace("{y}",i.y).replace("{z}",i.level+1).replace("{s}",e),l=new XMLHttpRequest;l.open("GET",t,!0),l.responseType="json";const o=this;l.onload=function(){if(!(l.status<200||300<=l.status)){const e=l.response;let t;e?(t={pois:e.map(e=>({oid:e.LabelPoint.X+"_"+e.LabelPoint.Y,name:e.Feature.properties.Name,coordinate:[e.LabelPoint.X,e.LabelPoint.Y,e.LabelPoint.Z?e.LabelPoint.Z:0]})),x:this.tile.x,y:this.tile.y,z:this.tile.z,t:1},o.addCacheTile(t),o.addLabelAndIco(t)):(t={x:this.tile.x,y:this.tile.y,z:this.tile.z,t:1},o.addCacheTile(t),o.delaySynchronous())}},l.onerror=function(e){console.error(e)},l.send(),l.tile={x:i.x,y:i.y,z:i.level+1}}}}}cutString(e){if(!e)return"";let t=e.byteLength;return t<=28?"":e.slice(19,t-9)}addCacheTile(e){999<this.tileCache.length&&this.tileCache.splice(0,500),this.removeCacheTile(e.x,e.y,e.z,e.t),this.tileCache.push(e)}getCacheTile(e,t,i,l){let o=this.tileCache.length;for(;o--;){const n=this.tileCache[o];if(n.x===e&&n.y===t&&n.z===i&&n.t===l)return n}return null}removeCacheTile(e,t,i,l){let o=this.tileCache.length;for(;o--;){const n=this.tileCache[o];if(n.x===e&&n.y===t&&n.z===i&&n.t===l)return void this.tileCache.splice(o,1)}}getCacheLabel(e){let t=this.labelCache.length;for(;t--;){const i=this.labelCache[t];if(i.name===this._UUID&&i.oid===e)return i}return null}addCacheLabel(e){999<this.labelCache.length&&this.labelCache.splice(0,250),this.removeCacheLabel(e.oid),e.timestamp=(new Date).getTime(),this.labelCache.push(e)}removeCacheLabel(e){let t=this.labelCache.length;for(;t--;)if(this.labelCache[t].name===this._UUID&&this.labelCache[t].oid===e)return void this.labelCache.splice(t,1)}HexadecimalConversion(e){if(4278190080===e)return"#000000";let t=4278190080|parseInt(-Number(e));if(e="",(t=t.toString(16).substring(1)).length<6)for(let i=6-t.length,l=0;l<i;l++)e+="0";return"#"+e+t}addLabelAndIco(e){if(e.pois&&e.pois.length){let t=e.pois.length;for(;t--;){const i=e.pois[t];let l=this.getCacheLabel(i.oid);!l&&(l=this.createLabel(i,e)),this.addCacheLabel(l)}}this.delaySynchronous()}createLabel(e,t){if(e){const i={show:!0,position:d.fromDegrees(...e.coordinate),label:{text:e.name}};if(Object.assign(i.label,this.labelGraphics),this.serverFirstStyle&&(void 0!==e.fontSize&&(i.label.font=e.fontSize+"px ",void 0!==e.fontNameIndex&&t.stringTable&&t.stringTable[e.fontNameIndex]?i.label.font+=t.stringTable[e.fontNameIndex]:i.label.font+="sans-serif",this.labelGraphics.bold||1===e.fontStyle&&3===e.fontStyle||(i.label.font="bold "+i.label.font),2===e.fontStyle&&3===e.fontStyle||(i.label.font="italic "+i.label.font)),void 0!==e.fontColor&&(i.label.fillColor=g.fromCssColorString(this.HexadecimalConversion(e.fontColor))),void 0!==e.shiningColor&&(i.label.outlineColor=g.fromCssColorString(this.HexadecimalConversion(e.shiningColor))),"number"==typeof e.shiningSize&&(i.label.outlineWidth=e.shiningSize),void 0!==e.showBackground&&(i.label.showBackground=e.showBackground),void 0!==e.backgroundColor&&(i.label.backgroundColor=e.backgroundColor),void 0!==e.backgroundPadding&&(i.label.backgroundPadding=e.backgroundPadding),void 0!==e.eyeOffset&&(i.label.eyeOffset=e.eyeOffset),void 0!==e.pixelOffset&&(i.label.pixelOffset=e.pixelOffset),void 0!==e.style&&(i.label.style=e.style),void 0!==e.scale&&(i.label.scale=e.scale),t.t||(void 0!==e.verticalOrigin&&(i.label.verticalOrigin=e.verticalOrigin),void 0!==e.horizontalOrigin&&(i.label.horizontalOrigin=e.horizontalOrigin))),void 0!==e.symbolID&&-1<e.symbolID){const l=this.subdomains.length?(t.x+t.y)%this.subdomains.length:"";i.billboard={image:this.getIcoUrl().replace("{id}",t.symbolID).replace("{s}",this.subdomains[l])},Object.assign(i.billboard,this.billboardGraphics),this.serverFirstStyle&&(void 0!==e.displayHeight&&(i.billboard.width=e.displayHeight,i.billboard.height=e.displayHeight),void 0!==e.eyeOffset&&(i.billboard.eyeOffset=e.eyeOffset),void 0!==e.pixelOffset&&(i.billboard.pixelOffset=e.pixelOffset),void 0!==e.rotation&&(i.billboard.rotation=e.rotation),void 0!==e.alignedAxis&&(i.billboard.alignedAxis=e.alignedAxis),void 0!==e.color&&(i.billboard.color=e.color),void 0!==e.scale&&(i.billboard.scale=e.scale),t.t||(void 0!==e.verticalOrigin&&(i.billboard.verticalOrigin=e.verticalOrigin),void 0!==e.horizontalOrigin&&(i.billboard.horizontalOrigin=e.horizontalOrigin)))}t.t&&(i.label.verticalOrigin=u.CENTER,i.label.horizontalOrigin=c.CENTER,i.billboard.verticalOrigin=u.CENTER,i.billboard.horizontalOrigin=c.CENTER);const l=new y(i);return l.name=t.x?this._UUIDRoad:this._UUID,l.oid=e.oid,l.priority=e.priority||0,l.xyz=t.x+"_"+t.y+"_"+(t.z-1),l}}getIcoUrl(){return(this.proxy?this.proxy.proxy:"")+this.icoUrl}getTileUrl(){return(this.proxy?this.proxy.proxy:"")+this.url}getRoadTileUrl(){return(this.proxy?this.proxy.proxy:"")+this.roadUrl}delaySynchronous(){clearTimeout(this._timer2),this._timer2=setTimeout(()=>{this.synchronousLabel()},100)}synchronousLabel(){let e=this.labelCache.length;for(;e--;){const t=this.labelCache[e];t.timestamp>=this._latelyRefreshStamp&&!this.viewer.entities.contains(t)&&(this._isInitial&&this.aotuCollide&&(t.show=!1),this.viewer.entities.add(t))}if(!this._isInitial){let e=this.viewer.entities.values.length;for(;e--;){const t=this.viewer.entities.values[e];!t.name||t.name!==this._UUID&&t.name!==this._UUIDRoad||t.timestamp<this._latelyRefreshStamp&&(this.viewer.entities.remove(t),e--)}this.aotuCollide&&this.collisionDetection()}}collisionDetection(){const e=this.viewer.entities.values;let t=[],i=[],l=e.length;for(;l--;){const i=e[l];if(i.name&&(i.name===this._UUID||i.name===this._UUIDRoad)){let e,l;e=v.wgs84ToDrawingBufferCoordinates(this.viewer.scene,i.position.getValue(0)),i.show=!0,l=this.getLabelReact({point:e,entity:i}),i.collisionBox=l;let o=null,n=t.length;for(;!o&&n--;)t[n].xyz===i.xyz&&(o=t[n]);o||(o={xzy:i.xyz,entities:[]},t.push(o),o.entities.push(i))}}let o=t.length;for(;o--;){const e=t[o];e.entities.sort(function(e,t){return e.priority-t.priority});for(let t=0;t<e.entities.length;t++){const l=e.entities[t];if(l.show){for(let i=t+1;i<e.entities.length;i++)e.entities[i].show&&I(l.collisionBox,e.entities[i].collisionBox)&&(e.entities[i].show=!1);i.push(l)}}}let n=i.length;for(;n--;)if(i[n].show){i.sort(function(e,t){return e.priority-t.priority});for(let e=n+1;e<i.length;e++)i[e].show&&I(i[n].collisionBox,i[e].collisionBox)&&(i[e].show=!1)}}getLabelReact(e){const{point:t,entity:i}=e;let l=parseInt(i.label.font);l=0<l?l:15;const o=i.label.text.getValue(0).split("\n");let n=0;for(let e=0;e<o.length;e++){let t=S(o[e])/2;n<t&&(n=t)}let r=i.billboard?i.billboard.width.getValue(0)*i.billboard.scale.getValue(0):1,a=i.billboard?i.billboard.height.getValue(0)*i.billboard.scale.getValue(0):1;return{x:(t?t.x:-999)-r/2-this.collisionPadding[3],y:(t?t.y:-999)-a/2-this.collisionPadding[0],width:l*i.label.scale.getValue(0)*n+i.label.pixelOffset.getValue(0).x+r+this.collisionPadding[1],height:l*i.label.scale.getValue(0)*n+i.label.pixelOffset.getValue(0).y+r+this.collisionPadding[2]}}initTDT(e){let t=0;this._isInitial=!0,this._queueCall(e);const i=setInterval(()=>{3<t&&(this._isInitial=!1,clearInterval(i)),t%2==0&&this.aotuCollide&&this.collisionDetection(),t++},600);return this}getPropertyValue(e,t,i,l){return void 0!==t[e]?t[e]:void 0!==i[e]?i[e]:l}unbindEvent(){this.viewer.scene.camera.moveEnd.removeEventListener(this._moveEnd,this),this.viewer.scene.camera.changed.removeEventListener(this._changed,this)}activate(){this._latelyGrid=[],this._moveEnd()}destroy(){let e=this.viewer.entities.values.length;for(;e--;){const t=this.viewer.entities.values[e];!t.name||t.name!==this._UUID&&t.name!==this._UUIDRoad||(this.viewer.entities.remove(t),e--)}this.viewer.camera.percentageChanged=.5,this.unbindEvent(),this.handler=this.handler&&this.handler.destroy(),this.proxy=void 0,this.viewer=void 0,this.url=void 0,this.labelGraphics=void 0,this.billboardGraphics=void 0,this.aotuCollide=void 0,this.collisionPadding=void 0,this.tileCache=void 0,this.labelCache=void 0,this._latelyGrid=void 0,this._latelyRefreshStamp=void 0,this._roadTileset=void 0}getLabelVisibility(e){if(!e)return!1;const t=this.viewer.canvas.getBoundingClientRect();return!(e.x<-10||e.x>t.right+10||e.y<-10||e.y>t.bottom+10)}}};export{D as default};
|
|
8
8
|
//# sourceMappingURL=tdtplug.es.js.map
|
package/dist/tdtplug.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tdtplug.es.js","sources":["../src/GeoTerrainProvider.js","../src/util.js","../src/GeoWTFS.js","../src/index.js"],"sourcesContent":["import {inflate} from 'pako/lib/inflate.js'\nimport {\n defaultValue,\n defined,\n DeveloperError,\n Ellipsoid,\n Resource,\n HeightmapTerrainData,\n Rectangle,\n TileAvailability,\n CustomHeightmapTerrainProvider\n} from 'cesium'\n\nfunction f(e, x, d, t, _, h) {\n let i = e.tileXYToRectangle(d, t, _);\n return defined(Rectangle.intersection(i, x, h));\n}\n\nfunction createAvailability(provider) {\n const overallAvailability = [[[0, 0, 1, 0]]]\n const length = overallAvailability.length;\n const availability = new TileAvailability(provider.tilingScheme, 19);\n for (let level = 0; level < length; ++level) {\n const levelRanges = overallAvailability[level];\n for (let i = 0; i < levelRanges.length; ++i) {\n const range = levelRanges[i];\n availability.addAvailableTileRange(\n level,\n range[0],\n range[1],\n range[2],\n range[3],\n );\n }\n }\n return availability\n}\n\nfunction createHeightmapTerrainData(provider, buffer, level, x, y) {\n const terrainData = new HeightmapTerrainData({\n buffer: provider._transformBuffer(buffer),\n width: provider._width,\n height: provider._height,\n childTileMask: provider._getChildTileMask(x, y, level),\n structure: provider._terrainDataStructure\n });\n terrainData._skirtHeight = 6000;\n provider.availability.addAvailableTileRange(level, x, y, x, y)\n return terrainData;\n}\n\nclass GeoTerrainProvider extends CustomHeightmapTerrainProvider {\n constructor(options) {\n options = defaultValue(options, {});\n super({\n ...options,\n // 必需,虽然 requestTileGeometry 被重写了\n callback: () => undefined,\n ellipsoid: Ellipsoid.WGS84,\n width: 64,\n height: 64,\n });\n if (!defined(options.url)) throw new DeveloperError('options.url is required.');\n this._dataType = defaultValue(options.dataType, 'int16');\n this._url = options.url;\n this._subdomains = options.subdomains;\n this._token = options.token;\n\n this._rectangles = [];\n this._topLevel = 5;\n // 实测天地图支持 l=12,从 l=13 开始返回空数据;\n this._bottomLevel = 12;\n this._terrainDataStructure = {\n heightScale: 0.001,\n heightOffset: -1000,\n elementsPerHeight: 3,\n stride: 4,\n elementMultiplier: 256,\n isBigEndian: true\n }\n this._availability = createAvailability(this);\n }\n\n get availability() {\n return this._availability\n }\n\n requestTileGeometry(x, y, level, request) {\n if (level >= this._bottomLevel) return Promise.reject(`${level}该级别不发送请求!`);\n if (level < this._topLevel) {\n return Promise.resolve(new HeightmapTerrainData({\n buffer: this._getVHeightBuffer(),\n width: this._width,\n height: this._height,\n childTileMask: this._getChildTileMask(x, y, level),\n structure: this._terrainDataStructure\n }));\n }\n\n let s = '', url = this._url;\n if (Array.isArray(this._subdomains) && this._subdomains.length) {\n s = this._subdomains[(x + y) % this._subdomains.length];\n url = url.replace('{s}', s);\n }\n url = url.replace('{token}', this._token).replace('{x}', x).replace('{y}', y).replace('{z}', level + 1);\n\n const tileResource = Resource.fetchArrayBuffer({url, request});\n if (!tileResource) return undefined;\n\n return tileResource\n .then(buffer => {\n if (buffer.byteLength < 1000) return Promise.reject('无效数据');\n return inflate(buffer);\n })\n .then(uint8Array => {\n return createHeightmapTerrainData(this, uint8Array, level, x, y);\n });\n }\n\n getTileDataAvailable(e, x, d) {\n if (d < this._bottomLevel) return true;\n }\n\n _transformBuffer(e) {\n let x = 2;\n if (this._dataType === 'int16') {\n x = 2\n } else if (this._dataType === 'float') {\n x = 4\n }\n let d = e;\n if (d.length !== 22500 * x) return null;\n let t, _, n, a,\n r = new ArrayBuffer(x),\n o = new DataView(r),\n s = this._width, c = this._height, h = new Uint8Array(s * c * 4);\n for (let f = 0; f < c; f++)\n for (let l = 0; l < s; l++) {\n n = parseInt(149 * f / (c - 1));\n a = parseInt(149 * l / (s - 1));\n _ = x * (150 * n + a);\n if (4 === x) {\n o.setInt8(0, d[_]);\n o.setInt8(1, d[_ + 1]);\n o.setInt8(2, d[_ + 2]);\n o.setInt8(3, d[_ + 3]);\n t = o.getFloat32(0, true);\n } else {\n t = d[_] + 256 * d[_ + 1]\n }\n if (10000 < t || t < -2000) t = 0;\n let u = (t + 1000) / 0.001, i = 4 * (f * s + l);\n h[i] = u / 65536;\n h[1 + i] = (u - 256 * h[i] * 256) / 256;\n h[2 + i] = u - 256 * h[i] * 256 - 256 * h[1 + i];\n h[3 + i] = 255;\n }\n return h;\n }\n\n _getVHeightBuffer() {\n let e = this._vHeightBuffer;\n if (!defined(e)) {\n e = new Uint8ClampedArray(this._width * this._height * 4);\n for (let x = 0; x < this._width * this._height * 4;) {\n e[x++] = 15;\n e[x++] = 66;\n e[x++] = 64;\n e[x++] = 255;\n }\n this._vHeightBuffer = e;\n }\n return e;\n }\n\n _getChildTileMask(x, d, t) {\n let h = new Rectangle()\n let _ = this._tilingScheme, i = this._rectangles, n = _.tileXYToRectangle(x, d, t), a = 0;\n for (let r = 0; r < i.length && 15 !== a; ++r) {\n let o = i[r];\n if (!(o.maxLevel <= t)) {\n let s = o.rectangle, c = Rectangle.intersection(s, n, h);\n if (defined(c)) {\n if (f(_, s, 2 * x, 2 * d, t + 1, h)) {\n (a |= 4)\n }\n if (f(_, s, 2 * x + 1, 2 * d, t + 1, h)) {\n (a |= 8)\n }\n if (f(_, s, 2 * x, 2 * d + 1, t + 1, h)) {\n (a |= 1)\n }\n if (f(_, s, 2 * x + 1, 2 * d + 1, t + 1, h)) {\n (a |= 2)\n }\n }\n }\n }\n return a;\n }\n}\n\nexport default GeoTerrainProvider\n","import {parse} from \"protobufjs\"\nexport function loadProto(str) {\n return parse(str)\n}\n","import {\n Cartesian2,\n Cartesian3,\n Color,\n createGuid,\n defaultValue,\n defined,\n DeveloperError,\n Entity,\n HorizontalOrigin,\n LabelStyle,\n Math as CMath,\n SceneTransforms,\n VerticalOrigin,\n combine\n} from \"cesium\"\nimport {loadProto} from \"./util\";\n\n\nfunction o(e, x) {\n return x.minX >= e.minX && x.minX <= e.maxX && x.minY>= e.minY && x.minY <= e.maxY ||\n (x.maxX >= e.minX && x.maxX <= e.maxX && x.maxY >= e.minY && x.maxY <= e.maxY ||\n (x.minX>= e.minX && x.minX <= e.maxX && x.maxY >= e.minY && x.maxY <= e.maxY ||\n x.maxX >= e.minX && x.maxX <= e.maxX && x.minY >= e.minY && x.minY <= e.maxY));\n}\n\nfunction s(e) {\n let x = 0;\n for (let d = 0; d < e.length; d++) {\n if (null != e.charAt(d).match(/[^\\x00-\\xff]/gi)) {\n x += 2;\n } else {\n x += 1;\n }\n }\n return x;\n}\n\nfunction h(e, x) {\n let d = e.x, t = e.y, _ = e.width, i = e.height, n = x.x, a = x.y, r = x.width, o = x.height;\n return !(n <= d && n + r <= d) && (!(d <= n && d + _ <= n) && (!(a <= t && a + o <= t) && !(t <= a && t + i <= a)));\n}\n\nconst proto = loadProto('option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;} ;message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Interate = 5;optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\\tFontNameIndex=13 [default =0];optional int32\\tFontSize=14 [default =18];optional uint32\\tFontColor=15 [default =0];};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};').root.lookup('GEOPOI.PBPOITile')\nconst proto1 = loadProto('option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;};enum enumZCoordType {eCloseGround = 0;eCloseSeaSurface = 1;eRelativelyGround = 2;eAbsolute = 3;};message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Interate = 5;optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\\tFontNameIndex=13 [default =0];optional int32\\tFontSize=14 [default =18];optional uint32\\tFontColor=15 [default =0];optional enumZCoordType ZCoordType = 16 [default = eAbsolute];};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};').root.lookup('GEOPOI.PBPOITile')\nconst proto2 = loadProto('option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;};enum enumZCoordType {eCloseGround = 0;eCloseSeaSurface = 1;eRelativelyGround = 2;eAbsolute = 3;};message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Priority = 5;repeated int32 Interates =6 [packed=true];optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\\tFontNameIndex=13 [default =0];optional int32\\tFontSize=14 [default =18];optional uint32\\tFontColor=15 [default =0];optional enumZCoordType ZCoordType = 16 [default = eAbsolute];optional int32 FontStyle=17;optional int32 ShiningSize=18;};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};').root.lookup('GEOPOI.PBPOITile')\n\nfunction parseData(data) {\n const d = {\n stringTable: [],\n pois: [],\n enumGeometryType: [\n {ePoint: 0},\n {eMultiLineString: 1},\n {ePolygon: 2}\n ],\n enumZCoordType: [\n {eCloseGround: 0},\n {eCloseSeaSurface: 1},\n {eRelativelyGround: 2},\n {eAbsolute: 3}\n ]\n }\n let i, n = new Uint8Array(data);\n try {\n i = proto2.decode(n);\n } catch (e) {\n console.error(e.message);\n }\n if(!i){\n try {\n i = proto1.decode(n);\n } catch (e) {\n console.error(e.message);\n i = proto.decode(n);\n }\n }\n d.version = parseInt(i.Version.toString());\n d.titleKey = parseInt(i.TileKey.toString());\n for (let a = i.StringTable.s.length, r = 0; r < a; r++)\n d.stringTable.push(i.StringTable.s[r].toString());\n let len = i.POIS.length;\n while (len--){\n const x = {}, e = i.POIS[len];\n x.oid = parseInt(e.OID.toString()) + '_' + d.titleKey;\n x.name = e.Name.toString();\n x.symbolID = parseInt(e.SymbolID.toString());\n x.displayHeight = e.DisplayHeight;\n x.shiningColor = e.ShiningColor;\n x.fontNameIndex = e.FontNameIndex;\n x.fontSize = e.FontSize;\n x.fontColor = e.FontColor;\n if (e.ZCoordType) {\n (x.zCoordType = e.ZCoordType)\n }\n x.geometryType = e.GeometryType;\n x.coordinate = e.Coordinates;\n x.priority = typeof e.Priority === 'undefined' ? null : e.Priority;\n x.interates = typeof e.Interates === 'undefined' ? null : e.Interates;\n x.fontStyle = typeof e.FontStyle === 'undefined' ? null : e.FontStyle;\n x.shiningSize = typeof e.ShiningSize === 'undefined' ? null : e.ShiningSize;\n d.pois.push(x);\n }\n return d\n}\n\nconst defaultLabelGraphics = {\n font:\"28px sans-serif\",\n fontSize: 28,\n fillColor: Color.WHITE,\n scale: 0.5,\n outlineColor: Color.BLACK,\n outlineWidth: 5,\n style: LabelStyle.FILL_AND_OUTLINE,\n showBackground:false,\n backgroundColor: Color.RED,\n backgroundPadding:new Cartesian2(10, 10),\n horizontalOrigin:HorizontalOrigin.CENTER,\n verticalOrigin: VerticalOrigin.TOP,\n eyeOffset: Cartesian3.ZERO,\n pixelOffset:new Cartesian2(0, 8)\n}\n\nconst defaultBillboardGraphics = {\n horizontalOrigin: HorizontalOrigin.CENTER,\n verticalOrigin: VerticalOrigin.CENTER,\n eyeOffset: Cartesian3.ZERO,\n pixelOffset: Cartesian2.ZERO,\n alignedAxis: Cartesian3.ZERO,\n color: Color.WHITE,\n rotation:0,\n scale:1,\n width:18,\n height:18\n}\n\nclass GeoWTFS {\n constructor(viewer, options) {\n if (!defined(viewer)) throw new DeveloperError('viewer is required.');\n if(!defined(options.url)) throw new DeveloperError('options.url is required.');\n options = defaultValue(options, {});\n this.viewer = viewer;\n this.proxy = options.proxy;\n this.url = options.url;\n this.icoUrl = options.icoUrl;\n this.metadata = options.metadata;\n this.roadMetadata = options.roadMetadata;\n this.roadUrl = options.roadUrl;\n this.labelGraphics = combine(options.labelGraphics, defaultLabelGraphics, true);\n this.billboardGraphics = combine(options.billboardGraphics, defaultBillboardGraphics, true);\n this.aotuCollide = !!options.aotuCollide;\n this.collisionPadding = defaultValue(options.collisionPadding, [3, 5, 3, 5]);\n this.serverFirstStyle = !!options.serverFirstStyle;\n this.subdomains = options.subdomains || [];\n this.tileCache= [];\n this.labelCache = [];\n this._isInitial = false;\n this._latelyGrid = [];\n this._latelyRefreshStamp = 0;\n this._latelyCollisionStamp = 0;\n const guid = createGuid();\n this._UUID = 'GEO_WTFS_LABEL_' + guid;\n this._UUIDRoad = 'GEO_WTFS_LABEL_ROAD_' + guid;\n this.viewer.camera.percentageChanged = 0.18;\n this.bindEvent();\n }\n\n bindEvent(){\n this.viewer.scene.camera.moveEnd.addEventListener(this._moveEnd, this);\n this.viewer.scene.camera.changed.addEventListener(this._changed, this);\n }\n\n _moveEnd(){\n clearTimeout(this._timer);\n const surface = this.viewer.scene.globe._surface;\n if (surface._tilesToRender.length < 2 || 0 < surface._tileLoadQueueHigh.length) {\n this._timer = setTimeout(() => {\n this._moveEnd();\n }, 100);\n } else {\n const tiles = this.getTilesToRender();\n if (this.compareArray(tiles, this._latelyGrid)) return;\n this._queueCall(tiles);\n this.delaySynchronous();\n }\n }\n\n _changed(){\n const now = new Date().getTime(), x = now - this._latelyRefreshStamp, d = now - this._latelyCollisionStamp;\n if (300 < x) {\n this._moveEnd()\n }\n if (150 < d) {\n this.collisionDetection()\n }\n }\n\n getTilesToRender(){\n const tiles = this.viewer.scene.globe._surface._tilesToRender.map(function (e) {\n return {\n x: e.x,\n y: e.y,\n level: e.level,\n boundBox: {\n minX: CMath.toDegrees(e.rectangle.west),\n minY: CMath.toDegrees(e.rectangle.south),\n maxX: CMath.toDegrees(e.rectangle.east),\n maxY: CMath.toDegrees(e.rectangle.north)\n }\n }\n }).sort(function (a, b) {\n return b.level - a.level;\n });\n const x = [tiles[0].level]\n for (let i = 0; i < tiles.length; i++) {\n if(tiles[i].level !== x[x.length - 1]){\n x.push(tiles[i].level);\n if(4 < x.length){\n tiles.splice(i, Infinity);\n i--;\n }\n }\n }\n return tiles\n }\n\n compareArray(tiles, latelyGrid){\n let flag = false;\n for (let t = 0; t < tiles.length; t++) {\n let _ = false;\n for (let i = 0; i < latelyGrid.length; i++)\n if (tiles[t].x === latelyGrid[i].x && tiles[t].y === latelyGrid[i].y && tiles[t].level === latelyGrid[i].level) {\n _ = true;\n break;\n }\n if (!_) {\n flag = true;\n break;\n }\n }\n return !flag;\n }\n\n _queueCall(tiles){\n this._latelyGrid = tiles;\n this._latelyRefreshStamp = new Date().getTime();\n let len = tiles.length;\n while (len--){\n const tile = tiles[len];\n if(this.metadata && o(this.metadata.boundBox, tile.boundBox)){\n if(this.metadata.minLevel > tile.level + 1 || this.metadata.maxLevel < tile.level + 1) return;\n const cacheTile = this.getCacheTile(tile.x, tile.y, tile.level, 0);\n if(cacheTile) {\n this.addLabelAndIco(cacheTile);\n }else {\n const s = this.subdomains.length ? (tile.x + tile.y) % this.subdomains.length : '';\n let url = this.getTileUrl().replace('{x}', tile.x).replace('{y}', tile.y)\n .replace('{z}', tile.level + 1).replace('{s}', s);\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.responseType = 'arraybuffer';\n const that = this;\n xhr.onload = function () {\n if(!(xhr.status < 200 || 300 <= xhr.status)){\n const res = that.cutString(xhr.response);\n let tileData;\n if(res){\n tileData = parseData(res);\n tileData.x = this.tile.x;\n tileData.y = this.tile.y;\n tileData.z = this.tile.z;\n tileData.t = 0;\n that.addCacheTile(tileData);\n that.addLabelAndIco(tileData);\n }else {\n tileData = {\n x: this.tile.x,\n y: this.tile.y,\n z: this.tile.z,\n t: 0\n }\n that.addCacheTile(tileData);\n that.delaySynchronous();\n }\n }\n }\n xhr.onerror = function (e) {\n console.error(e);\n }\n xhr.send();\n xhr.tile = {\n x: tile.x,\n y: tile.y,\n z: tile.level + 1\n };\n }\n }\n if(this.roadMetadata && o(this.roadMetadata.boundBox, tile.boundBox)){\n if(this.roadMetadata.minLevel > tile.level + 1 || this.roadMetadata.maxLevel < tile.level + 1) return;\n const cacheTile = this.getCacheTile(tile.x, tile.y, tile.level, 0);\n if(cacheTile) {\n this.addLabelAndIco(cacheTile);\n }else {\n const s = this.subdomains.length ? (tile.x + tile.y) % this.subdomains.length : '';\n const url = this.getRoadTileUrl().replace('{x}', tile.x).replace('{y}', tile.y)\n .replace('{z}', tile.level + 1).replace('{s}', s);\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.responseType = 'json';\n const that = this;\n xhr.onload = function () {\n if(!(xhr.status < 200 || 300 <= xhr.status)){\n const res = xhr.response;\n let tileData;\n if(res){\n tileData = {\n pois: res.map(e => {\n return{\n oid: e.LabelPoint.X + '_' + e.LabelPoint.Y,\n name: e.Feature.properties.Name,\n coordinate: [e.LabelPoint.X, e.LabelPoint.Y, e.LabelPoint.Z ? e.LabelPoint.Z : 0]\n }\n }),\n x: this.tile.x,\n y: this.tile.y,\n z: this.tile.z,\n t: 1\n }\n that.addCacheTile(tileData);\n that.addLabelAndIco(tileData);\n }else {\n tileData = {\n x: this.tile.x,\n y: this.tile.y,\n z: this.tile.z,\n t: 1\n }\n that.addCacheTile(tileData);\n that.delaySynchronous();\n }\n }\n }\n xhr.onerror = function (e) {\n console.error(e);\n }\n xhr.send();\n xhr.tile = {\n x: tile.x,\n y: tile.y,\n z: tile.level + 1\n };\n }\n }\n }\n }\n\n cutString(e){\n if (!e) return '';\n let x = e.byteLength;\n if (x <= 28) {\n return '';\n } else {\n return e.slice(19, x - 9);\n }\n }\n\n addCacheTile(Tile){\n if (999 < this.tileCache.length) {\n (this.tileCache.splice(0, 500))\n }\n this.removeCacheTile(Tile.x, Tile.y, Tile.z, Tile.t);\n this.tileCache.push(Tile);\n }\n\n getCacheTile(x, y, z, t){\n let len = this.tileCache.length;\n while (len--){\n const tileCache = this.tileCache[len];\n if(tileCache.x === x && tileCache.y === y && tileCache.z === z && tileCache.t === t) return tileCache;\n }\n return null;\n }\n\n removeCacheTile(x, y, z, t){\n let i = this.tileCache.length;\n while (i--){\n const cacheTile = this.tileCache[i];\n if(cacheTile.x === x && cacheTile.y === y && cacheTile.z === z && cacheTile.t === t){\n this.tileCache.splice(i, 1);\n return\n }\n }\n }\n\n getCacheLabel(id){\n let i = this.labelCache.length;\n while (i--){\n const cacheLabel = this.labelCache[i];\n if(cacheLabel.name === this._UUID && cacheLabel.oid === id) return cacheLabel\n }\n return null;\n }\n\n addCacheLabel(label){\n if(999 < this.labelCache.length){\n this.labelCache.splice(0, 250);\n }\n this.removeCacheLabel(label.oid);\n label.timestamp = new Date().getTime();\n this.labelCache.push(label)\n }\n\n removeCacheLabel(id){\n let i = this.labelCache.length;\n while (i--){\n if (this.labelCache[i].name === this._UUID && this.labelCache[i].oid === id){\n this.labelCache.splice(i, 1);\n return;\n }\n }\n }\n\n HexadecimalConversion(e){\n if (4278190080 === e) return '#000000';\n let x = 4278190080 | parseInt(-Number(e));\n e = '';\n if ((x = x.toString(16).substring(1)).length < 6)\n for (let d = 6 - x.length, t = 0; t < d; t++) e += '0';\n return '#' + e + x;\n }\n\n addLabelAndIco(tile){\n if (tile.pois && tile.pois.length){\n let i = tile.pois.length\n while (i--){\n const item = tile.pois[i]\n let label = this.getCacheLabel(item.oid);\n !label && (label = this.createLabel(item, tile));\n this.addCacheLabel(label);\n }\n }\n this.delaySynchronous();\n }\n\n createLabel(poi, tile){\n if(poi) {\n const entityOption = {\n show: true,\n position: Cartesian3.fromDegrees(...poi.coordinate),\n label: {text: poi.name}\n }\n Object.assign(entityOption.label, this.labelGraphics);\n if(this.serverFirstStyle){\n if(undefined !== poi.fontSize){\n entityOption.label.font = poi.fontSize + 'px ';\n if(undefined !== poi.fontNameIndex && tile.stringTable && tile.stringTable[poi.fontNameIndex]){\n entityOption.label.font += tile.stringTable[poi.fontNameIndex];\n } else {\n entityOption.label.font += 'sans-serif'\n }\n if(!this.labelGraphics.bold && (1 !== poi.fontStyle || 3 !== poi.fontStyle)) {\n entityOption.label.font = 'bold ' + entityOption.label.font;\n }\n if(2 !== poi.fontStyle || 3 !== poi.fontStyle) {\n entityOption.label.font = 'italic ' + entityOption.label.font;\n }\n }\n if(undefined !== poi.fontColor){\n entityOption.label.fillColor = Color.fromCssColorString(this.HexadecimalConversion(poi.fontColor));\n }\n if(undefined !== poi.shiningColor){\n entityOption.label.outlineColor = Color.fromCssColorString(this.HexadecimalConversion(poi.shiningColor));\n }\n if(typeof poi.shiningSize === 'number'){\n entityOption.label.outlineWidth = poi.shiningSize;\n }\n if(undefined !== poi.showBackground){\n entityOption.label.showBackground = poi.showBackground;\n }\n if(undefined !== poi.backgroundColor){\n entityOption.label.backgroundColor = poi.backgroundColor;\n }\n if(undefined !== poi.backgroundPadding){\n entityOption.label.backgroundPadding = poi.backgroundPadding;\n }\n if(undefined !== poi.eyeOffset){\n entityOption.label.eyeOffset = poi.eyeOffset;\n }\n if(undefined !== poi.pixelOffset) {\n entityOption.label.pixelOffset = poi.pixelOffset;\n }\n if(undefined !== poi.style){\n entityOption.label.style = poi.style;\n }\n if(undefined !== poi.scale){\n entityOption.label.scale = poi.scale;\n }\n if(!tile.t){\n if(undefined !== poi.verticalOrigin){\n entityOption.label.verticalOrigin = poi.verticalOrigin;\n }\n if(undefined !== poi.horizontalOrigin){\n entityOption.label.horizontalOrigin = poi.horizontalOrigin;\n }\n }\n }\n if(undefined !== poi.symbolID && -1 < poi.symbolID){\n const s = this.subdomains.length ? (tile.x + tile.y) % this.subdomains.length : '';\n entityOption.billboard = {image: this.getIcoUrl().replace('{id}', tile.symbolID).replace('{s}', this.subdomains[s])};\n Object.assign(entityOption.billboard, this.billboardGraphics)\n if(this.serverFirstStyle){\n if(undefined !== poi.displayHeight){\n entityOption.billboard.width = poi.displayHeight;\n entityOption.billboard.height = poi.displayHeight;\n }\n if (undefined !== poi.eyeOffset) {\n entityOption.billboard.eyeOffset = poi.eyeOffset;\n }\n if (undefined !== poi.pixelOffset) {\n entityOption.billboard.pixelOffset = poi.pixelOffset;\n }\n if (undefined !== poi.rotation) {\n // (_['billboard']['rotation'] = e['rotation'])\n entityOption.billboard.rotation = poi.rotation;\n }\n if (undefined !== poi.alignedAxis) {\n entityOption.billboard.alignedAxis = poi.alignedAxis;\n }\n if (undefined !== poi.color) {\n entityOption.billboard.color = poi.color;\n }\n if (undefined !== poi.scale) {\n entityOption.billboard.scale = poi.scale;\n }\n if(!tile.t){\n if(undefined !== poi.verticalOrigin){\n entityOption.billboard.verticalOrigin = poi.verticalOrigin\n }\n if(undefined !== poi.horizontalOrigin){\n entityOption.billboard.horizontalOrigin = poi.horizontalOrigin\n }\n }\n }\n }\n if(tile.t) {\n entityOption.label.verticalOrigin = VerticalOrigin.CENTER;\n entityOption.label.horizontalOrigin = HorizontalOrigin.CENTER;\n entityOption.billboard.verticalOrigin = VerticalOrigin.CENTER;\n entityOption.billboard.horizontalOrigin = HorizontalOrigin.CENTER;\n }\n const entity = new Entity(entityOption);\n entity.name = tile.x ? this._UUIDRoad : this._UUID;\n entity.oid = poi.oid;\n entity.priority = poi.priority || 0;\n entity.xyz = tile.x + '_' + tile.y + '_' + (tile.z - 1);\n return entity\n }\n }\n\n getIcoUrl(){\n return (this.proxy ? this.proxy.proxy : '') + this.icoUrl;\n }\n\n getTileUrl(){\n return (this.proxy ? this.proxy.proxy : '') + this.url;\n }\n\n getRoadTileUrl(){\n return (this.proxy ? this.proxy.proxy : '') + this.roadUrl;\n }\n\n delaySynchronous(){\n clearTimeout(this._timer2);\n this._timer2 = setTimeout(() => {\n this.synchronousLabel();\n }, 100);\n }\n\n synchronousLabel(){\n let i = this.labelCache.length;\n while (i--){\n const label = this.labelCache[i];\n label.timestamp >= this._latelyRefreshStamp && !this.viewer.entities.contains(label)\n && (this._isInitial && this.aotuCollide && (label.show = false), this.viewer.entities.add(label));\n }\n if(!this._isInitial){\n let j = this.viewer.entities.values.length;\n while (j--){\n const entity = this.viewer.entities.values[j]\n !entity.name || entity.name !== this._UUID && entity.name !== this._UUIDRoad ||\n entity.timestamp < this._latelyRefreshStamp && (this.viewer.entities.remove(entity), j--);\n }\n if(this.aotuCollide) this.collisionDetection()\n }\n }\n\n /**\n * 碰撞检测\n */\n collisionDetection(){\n const entities = this.viewer.entities.values;\n let d = [], s =[], len = entities.length;\n while (len--) {\n const entity = entities[len];\n if(entity.name && (entity.name === this._UUID || entity.name === this._UUIDRoad)){\n let point, i;\n point = SceneTransforms.wgs84ToDrawingBufferCoordinates(this.viewer.scene, entity.position.getValue(0));\n entity.show = true;\n i = this.getLabelReact({point, entity});\n entity.collisionBox = i;\n let n = null, a = d.length;\n while (!n && a--){\n if(d[a].xyz === entity.xyz) n = d[a]\n }\n if(!n){\n n = {xzy: entity.xyz, entities: []};\n d.push(n);\n n.entities.push(entity);\n }\n }\n }\n let dLen = d.length;\n while (dLen--){\n const item = d[dLen];\n item.entities.sort(function (a, b) {return a.priority- b.priority;});\n for (let i = 0; i < item.entities.length; i++) {\n const oItem = item.entities[i];\n if(oItem.show){\n for (let j = i + 1; j < item.entities.length; j++) {\n if(item.entities[j].show && h(oItem.collisionBox, item.entities[j].collisionBox)){\n item.entities[j].show = false;\n }\n }\n s.push(oItem);\n }\n }\n }\n let m = s.length;\n while (m--){\n if(s[m].show){\n s.sort(function (a, b) {return a.priority - b.priority});\n for (let i = m + 1; i < s.length; i++) {\n s[i].show && h(s[m].collisionBox, s[i].collisionBox) && (s[i].show = false);\n }\n }\n }\n }\n\n /**\n * 获取label的区域\n * @param data\n * @return {{x: number, width: *, y: number, height: *}}\n */\n getLabelReact(data){\n const {point, entity} = data;\n let fontSize = parseInt(entity.label.font);\n fontSize = 0 < fontSize ? fontSize : 15;\n const d = entity.label.text.getValue(0).split('\\n');\n let t = 0;\n for (let i = 0; i < d.length; i++) {\n let n = s(d[i]) / 2;\n if(t < n) t = n;\n }\n let a = entity.billboard ? entity.billboard.width.getValue(0) * entity.billboard.scale.getValue(0) : 1;\n let r = entity.billboard ? entity.billboard.height.getValue(0) * entity.billboard.scale.getValue(0) : 1;\n return {\n x: (point ? point.x : -999) - a / 2 - this.collisionPadding[3],\n y: (point ? point.y : -999) - r / 2 - this.collisionPadding[0],\n width: fontSize * entity.label.scale.getValue(0) * t + entity.label.pixelOffset.getValue(0).x + a + this.collisionPadding[1],\n height: fontSize * entity.label.scale.getValue(0) * t + entity.label.pixelOffset.getValue(0).y + a + this.collisionPadding[2]\n }\n }\n\n initTDT(e){\n let x = 0;\n this._isInitial = true;\n this._queueCall(e);\n const t = setInterval(() => {\n if (3 < x) {\n this._isInitial = false;\n clearInterval(t);\n }\n if (x % 2 === 0 && this.aotuCollide) {\n this.collisionDetection()\n }\n x++;\n }, 600);\n return this;\n }\n\n getPropertyValue(e, x, d, t){\n if (undefined !== x[e]) {\n return x[e];\n } else {\n return undefined !== d[e] ? d[e] : t;\n }\n }\n\n unbindEvent(){\n this.viewer.scene.camera.moveEnd.removeEventListener(this._moveEnd, this);\n this.viewer.scene.camera.changed.removeEventListener(this._changed, this);\n }\n\n activate(){\n this._latelyGrid= [];\n this._moveEnd();\n }\n\n destroy(){\n let i = this.viewer.entities.values.length;\n while (i--){\n const entity = this.viewer.entities.values[i];\n !entity.name || entity.name !== this._UUID && entity.name !== this._UUIDRoad || (this.viewer.entities.remove(entity), i--);\n }\n this.viewer.camera.percentageChanged = 0.5;\n this.unbindEvent();\n this.handler = this.handler && this.handler.destroy();\n this.proxy = undefined;\n this.viewer = undefined;\n this.url = undefined;\n this.labelGraphics = undefined;\n this.billboardGraphics = undefined;\n this.aotuCollide = undefined;\n this.collisionPadding = undefined;\n this.tileCache = undefined;\n this.labelCache = undefined;\n this._latelyGrid = undefined;\n this._latelyRefreshStamp = undefined;\n this._roadTileset = undefined;\n }\n\n getLabelVisibility(Label){\n if (!Label) return false;\n const x = this.viewer.canvas.getBoundingClientRect();\n return !(Label.x < -10 || Label.x > x.right + 10) && !(Label.y < -10 || Label.y > x.bottom + 10);\n }\n}\n\nexport default GeoWTFS\n","import GeoTerrainProvider from './GeoTerrainProvider'\nimport GeoWTFS from './GeoWTFS'\n\nexport default {\n GeoTerrainProvider,\n GeoWTFS\n}\n"],"names":["f","e","x","d","t","_","h","i","tileXYToRectangle","defined","Rectangle","intersection","loadProto","str","parse","o","minX","maxX","minY","maxY","s","length","charAt","match","y","width","height","n","a","r","proto","root","lookup","proto1","proto2","parseData","data","stringTable","pois","enumGeometryType","ePoint","eMultiLineString","ePolygon","enumZCoordType","eCloseGround","eCloseSeaSurface","eRelativelyGround","eAbsolute","Uint8Array","decode","console","error","message","version","parseInt","Version","toString","titleKey","TileKey","StringTable","push","len","POIS","oid","OID","name","Name","symbolID","SymbolID","displayHeight","DisplayHeight","shiningColor","ShiningColor","fontNameIndex","FontNameIndex","fontSize","FontSize","fontColor","FontColor","ZCoordType","zCoordType","geometryType","GeometryType","coordinate","Coordinates","priority","Priority","interates","Interates","fontStyle","FontStyle","shiningSize","ShiningSize","defaultLabelGraphics","font","fillColor","Color","WHITE","scale","outlineColor","BLACK","outlineWidth","style","LabelStyle","FILL_AND_OUTLINE","showBackground","backgroundColor","RED","backgroundPadding","Cartesian2","horizontalOrigin","HorizontalOrigin","CENTER","verticalOrigin","VerticalOrigin","TOP","eyeOffset","Cartesian3","ZERO","pixelOffset","defaultBillboardGraphics","alignedAxis","color","rotation","index","GeoTerrainProvider","CustomHeightmapTerrainProvider","constructor","options","defaultValue","super","callback","ellipsoid","Ellipsoid","WGS84","url","DeveloperError","this","_dataType","dataType","_url","_subdomains","subdomains","_token","token","_rectangles","_topLevel","_bottomLevel","_terrainDataStructure","heightScale","heightOffset","elementsPerHeight","stride","elementMultiplier","isBigEndian","_availability","provider","overallAvailability","availability","TileAvailability","tilingScheme","level","levelRanges","range","addAvailableTileRange","createAvailability","requestTileGeometry","request","Promise","reject","resolve","HeightmapTerrainData","buffer","_getVHeightBuffer","_width","_height","childTileMask","_getChildTileMask","structure","Array","isArray","replace","tileResource","Resource","fetchArrayBuffer","then","byteLength","inflate","uint8Array","terrainData","_transformBuffer","_skirtHeight","createHeightmapTerrainData","getTileDataAvailable","ArrayBuffer","DataView","c","l","setInt8","getFloat32","u","_vHeightBuffer","Uint8ClampedArray","_tilingScheme","maxLevel","rectangle","GeoWTFS","viewer","proxy","icoUrl","metadata","roadMetadata","roadUrl","labelGraphics","combine","billboardGraphics","aotuCollide","collisionPadding","serverFirstStyle","tileCache","labelCache","_isInitial","_latelyGrid","_latelyRefreshStamp","_latelyCollisionStamp","guid","createGuid","_UUID","_UUIDRoad","camera","percentageChanged","bindEvent","scene","moveEnd","addEventListener","_moveEnd","changed","_changed","clearTimeout","_timer","surface","globe","_surface","_tilesToRender","_tileLoadQueueHigh","setTimeout","tiles","getTilesToRender","compareArray","_queueCall","delaySynchronous","now","Date","getTime","collisionDetection","map","boundBox","CMath","toDegrees","west","south","east","north","sort","b","splice","Infinity","latelyGrid","flag","tile","minLevel","cacheTile","getCacheTile","addLabelAndIco","getTileUrl","xhr","XMLHttpRequest","open","responseType","that","onload","status","res","cutString","response","tileData","z","addCacheTile","onerror","send","getRoadTileUrl","LabelPoint","X","Y","Feature","properties","Z","slice","Tile","removeCacheTile","getCacheLabel","id","cacheLabel","addCacheLabel","label","removeCacheLabel","timestamp","HexadecimalConversion","Number","substring","item","createLabel","poi","entityOption","show","position","fromDegrees","text","Object","assign","undefined","bold","fromCssColorString","billboard","image","getIcoUrl","entity","Entity","xyz","_timer2","synchronousLabel","entities","contains","add","j","values","remove","point","SceneTransforms","wgs84ToDrawingBufferCoordinates","getValue","getLabelReact","collisionBox","xzy","dLen","oItem","m","split","initTDT","setInterval","clearInterval","getPropertyValue","unbindEvent","removeEventListener","activate","destroy","handler","_roadTileset","getLabelVisibility","Label","canvas","getBoundingClientRect","right","bottom"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tdtplug.es.js","sources":["../src/GeoTerrainProvider.js","../src/util.js","../src/GeoWTFS.js","../src/index.js"],"sourcesContent":["import {inflate} from 'pako/lib/inflate.js'\nimport {\n defined,\n DeveloperError,\n Ellipsoid,\n Resource,\n HeightmapTerrainData,\n Rectangle,\n TileAvailability,\n CustomHeightmapTerrainProvider\n} from 'cesium'\n\nfunction f(e, x, d, t, _, h) {\n let i = e.tileXYToRectangle(d, t, _);\n return defined(Rectangle.intersection(i, x, h));\n}\n\nfunction createAvailability(provider) {\n const overallAvailability = [[[0, 0, 1, 0]]]\n const length = overallAvailability.length;\n const availability = new TileAvailability(provider.tilingScheme, 19);\n for (let level = 0; level < length; ++level) {\n const levelRanges = overallAvailability[level];\n for (let i = 0; i < levelRanges.length; ++i) {\n const range = levelRanges[i];\n availability.addAvailableTileRange(\n level,\n range[0],\n range[1],\n range[2],\n range[3],\n );\n }\n }\n return availability\n}\n\nfunction createHeightmapTerrainData(provider, buffer, level, x, y) {\n const terrainData = new HeightmapTerrainData({\n buffer: provider._transformBuffer(buffer),\n width: provider._width,\n height: provider._height,\n childTileMask: provider._getChildTileMask(x, y, level),\n structure: provider._terrainDataStructure\n });\n terrainData._skirtHeight = 6000;\n provider.availability.addAvailableTileRange(level, x, y, x, y)\n return terrainData;\n}\n\nclass GeoTerrainProvider extends CustomHeightmapTerrainProvider {\n constructor(options) {\n options = options ?? {};\n super({\n ...options,\n // 必需,虽然 requestTileGeometry 被重写了\n callback: () => undefined,\n ellipsoid: Ellipsoid.WGS84,\n width: 64,\n height: 64,\n });\n if (!defined(options.url)) throw new DeveloperError('options.url is required.');\n this._dataType = options.dataType ?? 'int16';\n this._url = options.url;\n this._subdomains = options.subdomains;\n this._token = options.token;\n\n this._rectangles = [];\n this._topLevel = 5;\n // 实测天地图支持 l=12,从 l=13 开始返回空数据;\n this._bottomLevel = 12;\n this._terrainDataStructure = {\n heightScale: 0.001,\n heightOffset: -1000,\n elementsPerHeight: 3,\n stride: 4,\n elementMultiplier: 256,\n isBigEndian: true\n }\n this._availability = createAvailability(this);\n }\n\n get availability() {\n return this._availability\n }\n\n requestTileGeometry(x, y, level, request) {\n if (level >= this._bottomLevel) return Promise.reject(`${level}该级别不发送请求!`);\n if (level < this._topLevel) {\n return Promise.resolve(new HeightmapTerrainData({\n buffer: this._getVHeightBuffer(),\n width: this._width,\n height: this._height,\n childTileMask: this._getChildTileMask(x, y, level),\n structure: this._terrainDataStructure\n }));\n }\n\n let s = '', url = this._url;\n if (Array.isArray(this._subdomains) && this._subdomains.length) {\n s = this._subdomains[(x + y) % this._subdomains.length];\n url = url.replace('{s}', s);\n }\n url = url.replace('{token}', this._token).replace('{x}', x).replace('{y}', y).replace('{z}', level + 1);\n\n const tileResource = Resource.fetchArrayBuffer({url, request});\n if (!tileResource) return undefined;\n\n return tileResource\n .then(buffer => {\n if (buffer.byteLength < 1000) return Promise.reject('无效数据');\n return inflate(buffer);\n })\n .then(uint8Array => {\n return createHeightmapTerrainData(this, uint8Array, level, x, y);\n });\n }\n\n getTileDataAvailable(e, x, d) {\n if (d < this._bottomLevel) return true;\n }\n\n _transformBuffer(e) {\n let x = 2;\n if (this._dataType === 'int16') {\n x = 2\n } else if (this._dataType === 'float') {\n x = 4\n }\n let d = e;\n if (d.length !== 22500 * x) return null;\n let t, _, n, a,\n r = new ArrayBuffer(x),\n o = new DataView(r),\n s = this._width, c = this._height, h = new Uint8Array(s * c * 4);\n for (let f = 0; f < c; f++)\n for (let l = 0; l < s; l++) {\n n = parseInt(149 * f / (c - 1));\n a = parseInt(149 * l / (s - 1));\n _ = x * (150 * n + a);\n if (4 === x) {\n o.setInt8(0, d[_]);\n o.setInt8(1, d[_ + 1]);\n o.setInt8(2, d[_ + 2]);\n o.setInt8(3, d[_ + 3]);\n t = o.getFloat32(0, true);\n } else {\n t = d[_] + 256 * d[_ + 1]\n }\n if (10000 < t || t < -2000) t = 0;\n let u = (t + 1000) / 0.001, i = 4 * (f * s + l);\n h[i] = u / 65536;\n h[1 + i] = (u - 256 * h[i] * 256) / 256;\n h[2 + i] = u - 256 * h[i] * 256 - 256 * h[1 + i];\n h[3 + i] = 255;\n }\n return h;\n }\n\n _getVHeightBuffer() {\n let e = this._vHeightBuffer;\n if (!defined(e)) {\n e = new Uint8ClampedArray(this._width * this._height * 4);\n for (let x = 0; x < this._width * this._height * 4;) {\n e[x++] = 15;\n e[x++] = 66;\n e[x++] = 64;\n e[x++] = 255;\n }\n this._vHeightBuffer = e;\n }\n return e;\n }\n\n _getChildTileMask(x, d, t) {\n let h = new Rectangle()\n let _ = this._tilingScheme, i = this._rectangles, n = _.tileXYToRectangle(x, d, t), a = 0;\n for (let r = 0; r < i.length && 15 !== a; ++r) {\n let o = i[r];\n if (!(o.maxLevel <= t)) {\n let s = o.rectangle, c = Rectangle.intersection(s, n, h);\n if (defined(c)) {\n if (f(_, s, 2 * x, 2 * d, t + 1, h)) {\n (a |= 4)\n }\n if (f(_, s, 2 * x + 1, 2 * d, t + 1, h)) {\n (a |= 8)\n }\n if (f(_, s, 2 * x, 2 * d + 1, t + 1, h)) {\n (a |= 1)\n }\n if (f(_, s, 2 * x + 1, 2 * d + 1, t + 1, h)) {\n (a |= 2)\n }\n }\n }\n }\n return a;\n }\n}\n\nexport default GeoTerrainProvider\n","import {parse} from \"protobufjs\"\nexport function loadProto(str) {\n return parse(str)\n}\n","import {\n Cartesian2,\n Cartesian3,\n Color,\n createGuid,\n defined,\n DeveloperError,\n Entity,\n HorizontalOrigin,\n LabelStyle,\n Math as CMath,\n SceneTransforms,\n VerticalOrigin,\n combine\n} from \"cesium\"\nimport {loadProto} from \"./util\";\n\n\nfunction o(e, x) {\n return x.minX >= e.minX && x.minX <= e.maxX && x.minY>= e.minY && x.minY <= e.maxY ||\n (x.maxX >= e.minX && x.maxX <= e.maxX && x.maxY >= e.minY && x.maxY <= e.maxY ||\n (x.minX>= e.minX && x.minX <= e.maxX && x.maxY >= e.minY && x.maxY <= e.maxY ||\n x.maxX >= e.minX && x.maxX <= e.maxX && x.minY >= e.minY && x.minY <= e.maxY));\n}\n\nfunction s(e) {\n let x = 0;\n for (let d = 0; d < e.length; d++) {\n if (null != e.charAt(d).match(/[^\\x00-\\xff]/gi)) {\n x += 2;\n } else {\n x += 1;\n }\n }\n return x;\n}\n\nfunction h(e, x) {\n let d = e.x, t = e.y, _ = e.width, i = e.height, n = x.x, a = x.y, r = x.width, o = x.height;\n return !(n <= d && n + r <= d) && (!(d <= n && d + _ <= n) && (!(a <= t && a + o <= t) && !(t <= a && t + i <= a)));\n}\n\nconst proto = loadProto('option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;} ;message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Interate = 5;optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\\tFontNameIndex=13 [default =0];optional int32\\tFontSize=14 [default =18];optional uint32\\tFontColor=15 [default =0];};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};').root.lookup('GEOPOI.PBPOITile')\nconst proto1 = loadProto('option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;};enum enumZCoordType {eCloseGround = 0;eCloseSeaSurface = 1;eRelativelyGround = 2;eAbsolute = 3;};message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Interate = 5;optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\\tFontNameIndex=13 [default =0];optional int32\\tFontSize=14 [default =18];optional uint32\\tFontColor=15 [default =0];optional enumZCoordType ZCoordType = 16 [default = eAbsolute];};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};').root.lookup('GEOPOI.PBPOITile')\nconst proto2 = loadProto('option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;};enum enumZCoordType {eCloseGround = 0;eCloseSeaSurface = 1;eRelativelyGround = 2;eAbsolute = 3;};message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Priority = 5;repeated int32 Interates =6 [packed=true];optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\\tFontNameIndex=13 [default =0];optional int32\\tFontSize=14 [default =18];optional uint32\\tFontColor=15 [default =0];optional enumZCoordType ZCoordType = 16 [default = eAbsolute];optional int32 FontStyle=17;optional int32 ShiningSize=18;};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};').root.lookup('GEOPOI.PBPOITile')\n\nfunction parseData(data) {\n const d = {\n stringTable: [],\n pois: [],\n enumGeometryType: [\n {ePoint: 0},\n {eMultiLineString: 1},\n {ePolygon: 2}\n ],\n enumZCoordType: [\n {eCloseGround: 0},\n {eCloseSeaSurface: 1},\n {eRelativelyGround: 2},\n {eAbsolute: 3}\n ]\n }\n let i, n = new Uint8Array(data);\n try {\n i = proto2.decode(n);\n } catch (e) {\n console.error(e.message);\n }\n if(!i){\n try {\n i = proto1.decode(n);\n } catch (e) {\n console.error(e.message);\n i = proto.decode(n);\n }\n }\n d.version = parseInt(i.Version.toString());\n d.titleKey = parseInt(i.TileKey.toString());\n for (let a = i.StringTable.s.length, r = 0; r < a; r++)\n d.stringTable.push(i.StringTable.s[r].toString());\n let len = i.POIS.length;\n while (len--){\n const x = {}, e = i.POIS[len];\n x.oid = parseInt(e.OID.toString()) + '_' + d.titleKey;\n x.name = e.Name.toString();\n x.symbolID = parseInt(e.SymbolID.toString());\n x.displayHeight = e.DisplayHeight;\n x.shiningColor = e.ShiningColor;\n x.fontNameIndex = e.FontNameIndex;\n x.fontSize = e.FontSize;\n x.fontColor = e.FontColor;\n if (e.ZCoordType) {\n (x.zCoordType = e.ZCoordType)\n }\n x.geometryType = e.GeometryType;\n x.coordinate = e.Coordinates;\n x.priority = typeof e.Priority === 'undefined' ? null : e.Priority;\n x.interates = typeof e.Interates === 'undefined' ? null : e.Interates;\n x.fontStyle = typeof e.FontStyle === 'undefined' ? null : e.FontStyle;\n x.shiningSize = typeof e.ShiningSize === 'undefined' ? null : e.ShiningSize;\n d.pois.push(x);\n }\n return d\n}\n\nconst defaultLabelGraphics = {\n font:\"28px sans-serif\",\n fontSize: 28,\n fillColor: Color.WHITE,\n scale: 0.5,\n outlineColor: Color.BLACK,\n outlineWidth: 5,\n style: LabelStyle.FILL_AND_OUTLINE,\n showBackground:false,\n backgroundColor: Color.RED,\n backgroundPadding:new Cartesian2(10, 10),\n horizontalOrigin:HorizontalOrigin.CENTER,\n verticalOrigin: VerticalOrigin.TOP,\n eyeOffset: Cartesian3.ZERO,\n pixelOffset:new Cartesian2(0, 8)\n}\n\nconst defaultBillboardGraphics = {\n horizontalOrigin: HorizontalOrigin.CENTER,\n verticalOrigin: VerticalOrigin.CENTER,\n eyeOffset: Cartesian3.ZERO,\n pixelOffset: Cartesian2.ZERO,\n alignedAxis: Cartesian3.ZERO,\n color: Color.WHITE,\n rotation:0,\n scale:1,\n width:18,\n height:18\n}\n\nclass GeoWTFS {\n constructor(viewer, options) {\n if (!defined(viewer)) throw new DeveloperError('viewer is required.');\n options = options ?? {};\n if(!defined(options.url)) throw new DeveloperError('options.url is required.');\n this.viewer = viewer;\n this.proxy = options.proxy;\n this.url = options.url;\n this.icoUrl = options.icoUrl;\n this.metadata = options.metadata;\n this.roadMetadata = options.roadMetadata;\n this.roadUrl = options.roadUrl;\n this.labelGraphics = combine(options.labelGraphics, defaultLabelGraphics, true);\n this.billboardGraphics = combine(options.billboardGraphics, defaultBillboardGraphics, true);\n this.aotuCollide = !!options.aotuCollide;\n this.collisionPadding = options.collisionPadding ?? [3, 5, 3, 5];\n this.serverFirstStyle = !!options.serverFirstStyle;\n this.subdomains = options.subdomains || [];\n this.tileCache= [];\n this.labelCache = [];\n this._isInitial = false;\n this._latelyGrid = [];\n this._latelyRefreshStamp = 0;\n this._latelyCollisionStamp = 0;\n const guid = createGuid();\n this._UUID = 'GEO_WTFS_LABEL_' + guid;\n this._UUIDRoad = 'GEO_WTFS_LABEL_ROAD_' + guid;\n this.viewer.camera.percentageChanged = 0.18;\n this.bindEvent();\n }\n\n bindEvent(){\n this.viewer.scene.camera.moveEnd.addEventListener(this._moveEnd, this);\n this.viewer.scene.camera.changed.addEventListener(this._changed, this);\n }\n\n _moveEnd(){\n clearTimeout(this._timer);\n const surface = this.viewer.scene.globe._surface;\n if (surface._tilesToRender.length < 2 || 0 < surface._tileLoadQueueHigh.length) {\n this._timer = setTimeout(() => {\n this._moveEnd();\n }, 100);\n } else {\n const tiles = this.getTilesToRender();\n if (this.compareArray(tiles, this._latelyGrid)) return;\n this._queueCall(tiles);\n this.delaySynchronous();\n }\n }\n\n _changed(){\n const now = new Date().getTime(), x = now - this._latelyRefreshStamp, d = now - this._latelyCollisionStamp;\n if (300 < x) {\n this._moveEnd()\n }\n if (150 < d) {\n this.collisionDetection()\n }\n }\n\n getTilesToRender(){\n const tiles = this.viewer.scene.globe._surface._tilesToRender.map(function (e) {\n return {\n x: e.x,\n y: e.y,\n level: e.level,\n boundBox: {\n minX: CMath.toDegrees(e.rectangle.west),\n minY: CMath.toDegrees(e.rectangle.south),\n maxX: CMath.toDegrees(e.rectangle.east),\n maxY: CMath.toDegrees(e.rectangle.north)\n }\n }\n }).sort(function (a, b) {\n return b.level - a.level;\n });\n const x = [tiles[0].level]\n for (let i = 0; i < tiles.length; i++) {\n if(tiles[i].level !== x[x.length - 1]){\n x.push(tiles[i].level);\n if(4 < x.length){\n tiles.splice(i, Infinity);\n i--;\n }\n }\n }\n return tiles\n }\n\n compareArray(tiles, latelyGrid){\n let flag = false;\n for (let t = 0; t < tiles.length; t++) {\n let _ = false;\n for (let i = 0; i < latelyGrid.length; i++)\n if (tiles[t].x === latelyGrid[i].x && tiles[t].y === latelyGrid[i].y && tiles[t].level === latelyGrid[i].level) {\n _ = true;\n break;\n }\n if (!_) {\n flag = true;\n break;\n }\n }\n return !flag;\n }\n\n _queueCall(tiles){\n this._latelyGrid = tiles;\n this._latelyRefreshStamp = new Date().getTime();\n let len = tiles.length;\n while (len--){\n const tile = tiles[len];\n if(this.metadata && o(this.metadata.boundBox, tile.boundBox)){\n if(this.metadata.minLevel > tile.level + 1 || this.metadata.maxLevel < tile.level + 1) return;\n const cacheTile = this.getCacheTile(tile.x, tile.y, tile.level, 0);\n if(cacheTile) {\n this.addLabelAndIco(cacheTile);\n }else {\n const s = this.subdomains.length ? (tile.x + tile.y) % this.subdomains.length : '';\n let url = this.getTileUrl().replace('{x}', tile.x).replace('{y}', tile.y)\n .replace('{z}', tile.level + 1).replace('{s}', s);\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.responseType = 'arraybuffer';\n const that = this;\n xhr.onload = function () {\n if(!(xhr.status < 200 || 300 <= xhr.status)){\n const res = that.cutString(xhr.response);\n let tileData;\n if(res){\n tileData = parseData(res);\n tileData.x = this.tile.x;\n tileData.y = this.tile.y;\n tileData.z = this.tile.z;\n tileData.t = 0;\n that.addCacheTile(tileData);\n that.addLabelAndIco(tileData);\n }else {\n tileData = {\n x: this.tile.x,\n y: this.tile.y,\n z: this.tile.z,\n t: 0\n }\n that.addCacheTile(tileData);\n that.delaySynchronous();\n }\n }\n }\n xhr.onerror = function (e) {\n console.error(e);\n }\n xhr.send();\n xhr.tile = {\n x: tile.x,\n y: tile.y,\n z: tile.level + 1\n };\n }\n }\n if(this.roadMetadata && o(this.roadMetadata.boundBox, tile.boundBox)){\n if(this.roadMetadata.minLevel > tile.level + 1 || this.roadMetadata.maxLevel < tile.level + 1) return;\n const cacheTile = this.getCacheTile(tile.x, tile.y, tile.level, 0);\n if(cacheTile) {\n this.addLabelAndIco(cacheTile);\n }else {\n const s = this.subdomains.length ? (tile.x + tile.y) % this.subdomains.length : '';\n const url = this.getRoadTileUrl().replace('{x}', tile.x).replace('{y}', tile.y)\n .replace('{z}', tile.level + 1).replace('{s}', s);\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.responseType = 'json';\n const that = this;\n xhr.onload = function () {\n if(!(xhr.status < 200 || 300 <= xhr.status)){\n const res = xhr.response;\n let tileData;\n if(res){\n tileData = {\n pois: res.map(e => {\n return{\n oid: e.LabelPoint.X + '_' + e.LabelPoint.Y,\n name: e.Feature.properties.Name,\n coordinate: [e.LabelPoint.X, e.LabelPoint.Y, e.LabelPoint.Z ? e.LabelPoint.Z : 0]\n }\n }),\n x: this.tile.x,\n y: this.tile.y,\n z: this.tile.z,\n t: 1\n }\n that.addCacheTile(tileData);\n that.addLabelAndIco(tileData);\n }else {\n tileData = {\n x: this.tile.x,\n y: this.tile.y,\n z: this.tile.z,\n t: 1\n }\n that.addCacheTile(tileData);\n that.delaySynchronous();\n }\n }\n }\n xhr.onerror = function (e) {\n console.error(e);\n }\n xhr.send();\n xhr.tile = {\n x: tile.x,\n y: tile.y,\n z: tile.level + 1\n };\n }\n }\n }\n }\n\n cutString(e){\n if (!e) return '';\n let x = e.byteLength;\n if (x <= 28) {\n return '';\n } else {\n return e.slice(19, x - 9);\n }\n }\n\n addCacheTile(Tile){\n if (999 < this.tileCache.length) {\n (this.tileCache.splice(0, 500))\n }\n this.removeCacheTile(Tile.x, Tile.y, Tile.z, Tile.t);\n this.tileCache.push(Tile);\n }\n\n getCacheTile(x, y, z, t){\n let len = this.tileCache.length;\n while (len--){\n const tileCache = this.tileCache[len];\n if(tileCache.x === x && tileCache.y === y && tileCache.z === z && tileCache.t === t) return tileCache;\n }\n return null;\n }\n\n removeCacheTile(x, y, z, t){\n let i = this.tileCache.length;\n while (i--){\n const cacheTile = this.tileCache[i];\n if(cacheTile.x === x && cacheTile.y === y && cacheTile.z === z && cacheTile.t === t){\n this.tileCache.splice(i, 1);\n return\n }\n }\n }\n\n getCacheLabel(id){\n let i = this.labelCache.length;\n while (i--){\n const cacheLabel = this.labelCache[i];\n if(cacheLabel.name === this._UUID && cacheLabel.oid === id) return cacheLabel\n }\n return null;\n }\n\n addCacheLabel(label){\n if(999 < this.labelCache.length){\n this.labelCache.splice(0, 250);\n }\n this.removeCacheLabel(label.oid);\n label.timestamp = new Date().getTime();\n this.labelCache.push(label)\n }\n\n removeCacheLabel(id){\n let i = this.labelCache.length;\n while (i--){\n if (this.labelCache[i].name === this._UUID && this.labelCache[i].oid === id){\n this.labelCache.splice(i, 1);\n return;\n }\n }\n }\n\n HexadecimalConversion(e){\n if (4278190080 === e) return '#000000';\n let x = 4278190080 | parseInt(-Number(e));\n e = '';\n if ((x = x.toString(16).substring(1)).length < 6)\n for (let d = 6 - x.length, t = 0; t < d; t++) e += '0';\n return '#' + e + x;\n }\n\n addLabelAndIco(tile){\n if (tile.pois && tile.pois.length){\n let i = tile.pois.length\n while (i--){\n const item = tile.pois[i]\n let label = this.getCacheLabel(item.oid);\n !label && (label = this.createLabel(item, tile));\n this.addCacheLabel(label);\n }\n }\n this.delaySynchronous();\n }\n\n createLabel(poi, tile){\n if(poi) {\n const entityOption = {\n show: true,\n position: Cartesian3.fromDegrees(...poi.coordinate),\n label: {text: poi.name}\n }\n Object.assign(entityOption.label, this.labelGraphics);\n if(this.serverFirstStyle){\n if(undefined !== poi.fontSize){\n entityOption.label.font = poi.fontSize + 'px ';\n if(undefined !== poi.fontNameIndex && tile.stringTable && tile.stringTable[poi.fontNameIndex]){\n entityOption.label.font += tile.stringTable[poi.fontNameIndex];\n } else {\n entityOption.label.font += 'sans-serif'\n }\n if(!this.labelGraphics.bold && (1 !== poi.fontStyle || 3 !== poi.fontStyle)) {\n entityOption.label.font = 'bold ' + entityOption.label.font;\n }\n if(2 !== poi.fontStyle || 3 !== poi.fontStyle) {\n entityOption.label.font = 'italic ' + entityOption.label.font;\n }\n }\n if(undefined !== poi.fontColor){\n entityOption.label.fillColor = Color.fromCssColorString(this.HexadecimalConversion(poi.fontColor));\n }\n if(undefined !== poi.shiningColor){\n entityOption.label.outlineColor = Color.fromCssColorString(this.HexadecimalConversion(poi.shiningColor));\n }\n if(typeof poi.shiningSize === 'number'){\n entityOption.label.outlineWidth = poi.shiningSize;\n }\n if(undefined !== poi.showBackground){\n entityOption.label.showBackground = poi.showBackground;\n }\n if(undefined !== poi.backgroundColor){\n entityOption.label.backgroundColor = poi.backgroundColor;\n }\n if(undefined !== poi.backgroundPadding){\n entityOption.label.backgroundPadding = poi.backgroundPadding;\n }\n if(undefined !== poi.eyeOffset){\n entityOption.label.eyeOffset = poi.eyeOffset;\n }\n if(undefined !== poi.pixelOffset) {\n entityOption.label.pixelOffset = poi.pixelOffset;\n }\n if(undefined !== poi.style){\n entityOption.label.style = poi.style;\n }\n if(undefined !== poi.scale){\n entityOption.label.scale = poi.scale;\n }\n if(!tile.t){\n if(undefined !== poi.verticalOrigin){\n entityOption.label.verticalOrigin = poi.verticalOrigin;\n }\n if(undefined !== poi.horizontalOrigin){\n entityOption.label.horizontalOrigin = poi.horizontalOrigin;\n }\n }\n }\n if(undefined !== poi.symbolID && -1 < poi.symbolID){\n const s = this.subdomains.length ? (tile.x + tile.y) % this.subdomains.length : '';\n entityOption.billboard = {image: this.getIcoUrl().replace('{id}', tile.symbolID).replace('{s}', this.subdomains[s])};\n Object.assign(entityOption.billboard, this.billboardGraphics)\n if(this.serverFirstStyle){\n if(undefined !== poi.displayHeight){\n entityOption.billboard.width = poi.displayHeight;\n entityOption.billboard.height = poi.displayHeight;\n }\n if (undefined !== poi.eyeOffset) {\n entityOption.billboard.eyeOffset = poi.eyeOffset;\n }\n if (undefined !== poi.pixelOffset) {\n entityOption.billboard.pixelOffset = poi.pixelOffset;\n }\n if (undefined !== poi.rotation) {\n // (_['billboard']['rotation'] = e['rotation'])\n entityOption.billboard.rotation = poi.rotation;\n }\n if (undefined !== poi.alignedAxis) {\n entityOption.billboard.alignedAxis = poi.alignedAxis;\n }\n if (undefined !== poi.color) {\n entityOption.billboard.color = poi.color;\n }\n if (undefined !== poi.scale) {\n entityOption.billboard.scale = poi.scale;\n }\n if(!tile.t){\n if(undefined !== poi.verticalOrigin){\n entityOption.billboard.verticalOrigin = poi.verticalOrigin\n }\n if(undefined !== poi.horizontalOrigin){\n entityOption.billboard.horizontalOrigin = poi.horizontalOrigin\n }\n }\n }\n }\n if(tile.t) {\n entityOption.label.verticalOrigin = VerticalOrigin.CENTER;\n entityOption.label.horizontalOrigin = HorizontalOrigin.CENTER;\n entityOption.billboard.verticalOrigin = VerticalOrigin.CENTER;\n entityOption.billboard.horizontalOrigin = HorizontalOrigin.CENTER;\n }\n const entity = new Entity(entityOption);\n entity.name = tile.x ? this._UUIDRoad : this._UUID;\n entity.oid = poi.oid;\n entity.priority = poi.priority || 0;\n entity.xyz = tile.x + '_' + tile.y + '_' + (tile.z - 1);\n return entity\n }\n }\n\n getIcoUrl(){\n return (this.proxy ? this.proxy.proxy : '') + this.icoUrl;\n }\n\n getTileUrl(){\n return (this.proxy ? this.proxy.proxy : '') + this.url;\n }\n\n getRoadTileUrl(){\n return (this.proxy ? this.proxy.proxy : '') + this.roadUrl;\n }\n\n delaySynchronous(){\n clearTimeout(this._timer2);\n this._timer2 = setTimeout(() => {\n this.synchronousLabel();\n }, 100);\n }\n\n synchronousLabel(){\n let i = this.labelCache.length;\n while (i--){\n const label = this.labelCache[i];\n label.timestamp >= this._latelyRefreshStamp && !this.viewer.entities.contains(label)\n && (this._isInitial && this.aotuCollide && (label.show = false), this.viewer.entities.add(label));\n }\n if(!this._isInitial){\n let j = this.viewer.entities.values.length;\n while (j--){\n const entity = this.viewer.entities.values[j]\n !entity.name || entity.name !== this._UUID && entity.name !== this._UUIDRoad ||\n entity.timestamp < this._latelyRefreshStamp && (this.viewer.entities.remove(entity), j--);\n }\n if(this.aotuCollide) this.collisionDetection()\n }\n }\n\n /**\n * 碰撞检测\n */\n collisionDetection(){\n const entities = this.viewer.entities.values;\n let d = [], s =[], len = entities.length;\n while (len--) {\n const entity = entities[len];\n if(entity.name && (entity.name === this._UUID || entity.name === this._UUIDRoad)){\n let point, i;\n point = SceneTransforms.wgs84ToDrawingBufferCoordinates(this.viewer.scene, entity.position.getValue(0));\n entity.show = true;\n i = this.getLabelReact({point, entity});\n entity.collisionBox = i;\n let n = null, a = d.length;\n while (!n && a--){\n if(d[a].xyz === entity.xyz) n = d[a]\n }\n if(!n){\n n = {xzy: entity.xyz, entities: []};\n d.push(n);\n n.entities.push(entity);\n }\n }\n }\n let dLen = d.length;\n while (dLen--){\n const item = d[dLen];\n item.entities.sort(function (a, b) {return a.priority- b.priority;});\n for (let i = 0; i < item.entities.length; i++) {\n const oItem = item.entities[i];\n if(oItem.show){\n for (let j = i + 1; j < item.entities.length; j++) {\n if(item.entities[j].show && h(oItem.collisionBox, item.entities[j].collisionBox)){\n item.entities[j].show = false;\n }\n }\n s.push(oItem);\n }\n }\n }\n let m = s.length;\n while (m--){\n if(s[m].show){\n s.sort(function (a, b) {return a.priority - b.priority});\n for (let i = m + 1; i < s.length; i++) {\n s[i].show && h(s[m].collisionBox, s[i].collisionBox) && (s[i].show = false);\n }\n }\n }\n }\n\n /**\n * 获取label的区域\n * @param data\n * @return {{x: number, width: *, y: number, height: *}}\n */\n getLabelReact(data){\n const {point, entity} = data;\n let fontSize = parseInt(entity.label.font);\n fontSize = 0 < fontSize ? fontSize : 15;\n const d = entity.label.text.getValue(0).split('\\n');\n let t = 0;\n for (let i = 0; i < d.length; i++) {\n let n = s(d[i]) / 2;\n if(t < n) t = n;\n }\n let a = entity.billboard ? entity.billboard.width.getValue(0) * entity.billboard.scale.getValue(0) : 1;\n let r = entity.billboard ? entity.billboard.height.getValue(0) * entity.billboard.scale.getValue(0) : 1;\n return {\n x: (point ? point.x : -999) - a / 2 - this.collisionPadding[3],\n y: (point ? point.y : -999) - r / 2 - this.collisionPadding[0],\n width: fontSize * entity.label.scale.getValue(0) * t + entity.label.pixelOffset.getValue(0).x + a + this.collisionPadding[1],\n height: fontSize * entity.label.scale.getValue(0) * t + entity.label.pixelOffset.getValue(0).y + a + this.collisionPadding[2]\n }\n }\n\n initTDT(e){\n let x = 0;\n this._isInitial = true;\n this._queueCall(e);\n const t = setInterval(() => {\n if (3 < x) {\n this._isInitial = false;\n clearInterval(t);\n }\n if (x % 2 === 0 && this.aotuCollide) {\n this.collisionDetection()\n }\n x++;\n }, 600);\n return this;\n }\n\n getPropertyValue(e, x, d, t){\n if (undefined !== x[e]) {\n return x[e];\n } else {\n return undefined !== d[e] ? d[e] : t;\n }\n }\n\n unbindEvent(){\n this.viewer.scene.camera.moveEnd.removeEventListener(this._moveEnd, this);\n this.viewer.scene.camera.changed.removeEventListener(this._changed, this);\n }\n\n activate(){\n this._latelyGrid= [];\n this._moveEnd();\n }\n\n destroy(){\n let i = this.viewer.entities.values.length;\n while (i--){\n const entity = this.viewer.entities.values[i];\n !entity.name || entity.name !== this._UUID && entity.name !== this._UUIDRoad || (this.viewer.entities.remove(entity), i--);\n }\n this.viewer.camera.percentageChanged = 0.5;\n this.unbindEvent();\n this.handler = this.handler && this.handler.destroy();\n this.proxy = undefined;\n this.viewer = undefined;\n this.url = undefined;\n this.labelGraphics = undefined;\n this.billboardGraphics = undefined;\n this.aotuCollide = undefined;\n this.collisionPadding = undefined;\n this.tileCache = undefined;\n this.labelCache = undefined;\n this._latelyGrid = undefined;\n this._latelyRefreshStamp = undefined;\n this._roadTileset = undefined;\n }\n\n getLabelVisibility(Label){\n if (!Label) return false;\n const x = this.viewer.canvas.getBoundingClientRect();\n return !(Label.x < -10 || Label.x > x.right + 10) && !(Label.y < -10 || Label.y > x.bottom + 10);\n }\n}\n\nexport default GeoWTFS\n","import GeoTerrainProvider from './GeoTerrainProvider'\nimport GeoWTFS from './GeoWTFS'\n\nexport default {\n GeoTerrainProvider,\n GeoWTFS\n}\n"],"names":["f","e","x","d","t","_","h","i","tileXYToRectangle","defined","Rectangle","intersection","loadProto","str","parse","o","minX","maxX","minY","maxY","s","length","charAt","match","y","width","height","n","a","r","proto","root","lookup","proto1","proto2","parseData","data","stringTable","pois","enumGeometryType","ePoint","eMultiLineString","ePolygon","enumZCoordType","eCloseGround","eCloseSeaSurface","eRelativelyGround","eAbsolute","Uint8Array","decode","console","error","message","version","parseInt","Version","toString","titleKey","TileKey","StringTable","push","len","POIS","oid","OID","name","Name","symbolID","SymbolID","displayHeight","DisplayHeight","shiningColor","ShiningColor","fontNameIndex","FontNameIndex","fontSize","FontSize","fontColor","FontColor","ZCoordType","zCoordType","geometryType","GeometryType","coordinate","Coordinates","priority","Priority","interates","Interates","fontStyle","FontStyle","shiningSize","ShiningSize","defaultLabelGraphics","font","fillColor","Color","WHITE","scale","outlineColor","BLACK","outlineWidth","style","LabelStyle","FILL_AND_OUTLINE","showBackground","backgroundColor","RED","backgroundPadding","Cartesian2","horizontalOrigin","HorizontalOrigin","CENTER","verticalOrigin","VerticalOrigin","TOP","eyeOffset","Cartesian3","ZERO","pixelOffset","defaultBillboardGraphics","alignedAxis","color","rotation","index","GeoTerrainProvider","CustomHeightmapTerrainProvider","constructor","options","super","callback","ellipsoid","Ellipsoid","WGS84","url","DeveloperError","this","_dataType","dataType","_url","_subdomains","subdomains","_token","token","_rectangles","_topLevel","_bottomLevel","_terrainDataStructure","heightScale","heightOffset","elementsPerHeight","stride","elementMultiplier","isBigEndian","_availability","provider","overallAvailability","availability","TileAvailability","tilingScheme","level","levelRanges","range","addAvailableTileRange","createAvailability","requestTileGeometry","request","Promise","reject","resolve","HeightmapTerrainData","buffer","_getVHeightBuffer","_width","_height","childTileMask","_getChildTileMask","structure","Array","isArray","replace","tileResource","Resource","fetchArrayBuffer","then","byteLength","inflate","uint8Array","terrainData","_transformBuffer","_skirtHeight","createHeightmapTerrainData","getTileDataAvailable","ArrayBuffer","DataView","c","l","setInt8","getFloat32","u","_vHeightBuffer","Uint8ClampedArray","_tilingScheme","maxLevel","rectangle","GeoWTFS","viewer","proxy","icoUrl","metadata","roadMetadata","roadUrl","labelGraphics","combine","billboardGraphics","aotuCollide","collisionPadding","serverFirstStyle","tileCache","labelCache","_isInitial","_latelyGrid","_latelyRefreshStamp","_latelyCollisionStamp","guid","createGuid","_UUID","_UUIDRoad","camera","percentageChanged","bindEvent","scene","moveEnd","addEventListener","_moveEnd","changed","_changed","clearTimeout","_timer","surface","globe","_surface","_tilesToRender","_tileLoadQueueHigh","setTimeout","tiles","getTilesToRender","compareArray","_queueCall","delaySynchronous","now","Date","getTime","collisionDetection","map","boundBox","CMath","toDegrees","west","south","east","north","sort","b","splice","Infinity","latelyGrid","flag","tile","minLevel","cacheTile","getCacheTile","addLabelAndIco","getTileUrl","xhr","XMLHttpRequest","open","responseType","that","onload","status","res","cutString","response","tileData","z","addCacheTile","onerror","send","getRoadTileUrl","LabelPoint","X","Y","Feature","properties","Z","slice","Tile","removeCacheTile","getCacheLabel","id","cacheLabel","addCacheLabel","label","removeCacheLabel","timestamp","HexadecimalConversion","Number","substring","item","createLabel","poi","entityOption","show","position","fromDegrees","text","Object","assign","undefined","bold","fromCssColorString","billboard","image","getIcoUrl","entity","Entity","xyz","_timer2","synchronousLabel","entities","contains","add","j","values","remove","point","SceneTransforms","wgs84ToDrawingBufferCoordinates","getValue","getLabelReact","collisionBox","xzy","dLen","oItem","m","split","initTDT","setInterval","clearInterval","getPropertyValue","unbindEvent","removeEventListener","activate","destroy","handler","_roadTileset","getLabelVisibility","Label","canvas","getBoundingClientRect","right","bottom"],"mappings":"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"}
|
package/dist/tdtplug.umd.js
CHANGED
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
* @author ZacharyJia <jia199474@gmail.com>
|
|
5
5
|
* @license MIT
|
|
6
6
|
*/
|
|
7
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("pako/lib/inflate.js"),require("cesium"),require("protobufjs")):"function"==typeof define&&define.amd?define(["pako/lib/inflate.js","cesium","protobufjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).TdtPlug=t(e.pako,e.Cesium,e.protobuf)}(this,function(e,t,i){"use strict";function l(e,i,l,o,n,r){let a=e.tileXYToRectangle(l,o,n);return t.defined(t.Rectangle.intersection(a,i,r))}class o extends t.CustomHeightmapTerrainProvider{constructor(e){if(e=t.defaultValue(e,{}),super({...e,callback:()=>{},ellipsoid:t.Ellipsoid.WGS84,width:64,height:64}),!t.defined(e.url))throw new t.DeveloperError("options.url is required.");this._dataType=t.defaultValue(e.dataType,"int16"),this._url=e.url,this._subdomains=e.subdomains,this._token=e.token,this._rectangles=[],this._topLevel=5,this._bottomLevel=12,this._terrainDataStructure={heightScale:.001,heightOffset:-1e3,elementsPerHeight:3,stride:4,elementMultiplier:256,isBigEndian:!0},this._availability=function(e){const i=[[[0,0,1,0]]],l=i.length,o=new t.TileAvailability(e.tilingScheme,19);for(let e=0;e<l;++e){const t=i[e];for(let i=0;i<t.length;++i){const l=t[i];o.addAvailableTileRange(e,l[0],l[1],l[2],l[3])}}return o}(this)}get availability(){return this._availability}requestTileGeometry(i,l,o,n){if(o>=this._bottomLevel)return Promise.reject(`${o}该级别不发送请求!`);if(o<this._topLevel)return Promise.resolve(new t.HeightmapTerrainData({buffer:this._getVHeightBuffer(),width:this._width,height:this._height,childTileMask:this._getChildTileMask(i,l,o),structure:this._terrainDataStructure}));let r="",a=this._url;Array.isArray(this._subdomains)&&this._subdomains.length&&(r=this._subdomains[(i+l)%this._subdomains.length],a=a.replace("{s}",r)),a=a.replace("{token}",this._token).replace("{x}",i).replace("{y}",l).replace("{z}",o+1);const s=t.Resource.fetchArrayBuffer({url:a,request:n});return s?s.then(t=>t.byteLength<1e3?Promise.reject("无效数据"):e.inflate(t)).then(e=>function(e,i,l,o,n){const r=new t.HeightmapTerrainData({buffer:e._transformBuffer(i),width:e._width,height:e._height,childTileMask:e._getChildTileMask(o,n,l),structure:e._terrainDataStructure});return r._skirtHeight=6e3,e.availability.addAvailableTileRange(l,o,n,o,n),r}(this,e,o,i,l)):void 0}getTileDataAvailable(e,t,i){if(i<this._bottomLevel)return!0}_transformBuffer(e){let t=2;"int16"===this._dataType?t=2:"float"===this._dataType&&(t=4);let i=e;if(i.length!==22500*t)return null;let l,o,n,r,a=new ArrayBuffer(t),s=new DataView(a),h=this._width,d=this._height,u=new Uint8Array(h*d*4);for(let e=0;e<d;e++)for(let a=0;a<h;a++){n=parseInt(149*e/(d-1)),r=parseInt(149*a/(h-1)),o=t*(150*n+r),4===t?(s.setInt8(0,i[o]),s.setInt8(1,i[o+1]),s.setInt8(2,i[o+2]),s.setInt8(3,i[o+3]),l=s.getFloat32(0,!0)):l=i[o]+256*i[o+1],(1e4<l||l<-2e3)&&(l=0);let c=(l+1e3)/.001,g=4*(e*h+a);u[g]=c/65536,u[1+g]=(c-256*u[g]*256)/256,u[2+g]=c-256*u[g]*256-256*u[1+g],u[3+g]=255}return u}_getVHeightBuffer(){let e=this._vHeightBuffer;if(!t.defined(e)){e=new Uint8ClampedArray(this._width*this._height*4);for(let t=0;t<this._width*this._height*4;)e[t++]=15,e[t++]=66,e[t++]=64,e[t++]=255;this._vHeightBuffer=e}return e}_getChildTileMask(e,i,o){let n=new t.Rectangle,r=this._tilingScheme,a=this._rectangles,s=r.tileXYToRectangle(e,i,o),h=0;for(let d=0;d<a.length&&15!==h;++d){let u=a[d];if(!(u.maxLevel<=o)){let a=u.rectangle,d=t.Rectangle.intersection(a,s,n);t.defined(d)&&(l(r,a,2*e,2*i,o+1,n)&&(h|=4),l(r,a,2*e+1,2*i,o+1,n)&&(h|=8),l(r,a,2*e,2*i+1,o+1,n)&&(h|=1),l(r,a,2*e+1,2*i+1,o+1,n)&&(h|=2))}}return h}}function n(e){return i.parse(e)}function r(e,t){return t.minX>=e.minX&&t.minX<=e.maxX&&t.minY>=e.minY&&t.minY<=e.maxY||t.maxX>=e.minX&&t.maxX<=e.maxX&&t.maxY>=e.minY&&t.maxY<=e.maxY||t.minX>=e.minX&&t.minX<=e.maxX&&t.maxY>=e.minY&&t.maxY<=e.maxY||t.maxX>=e.minX&&t.maxX<=e.maxX&&t.minY>=e.minY&&t.minY<=e.maxY}function a(e){let t=0;for(let i=0;i<e.length;i++)null!=e.charAt(i).match(/[^\x00-\xff]/gi)?t+=2:t+=1;return t}function s(e,t){let i=e.x,l=e.y,o=e.width,n=e.height,r=t.x,a=t.y,s=t.width,h=t.height;return!(r<=i&&r+s<=i||i<=r&&i+o<=r||a<=l&&a+h<=l||l<=a&&l+n<=a)}const h=n("option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;} ;message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Interate = 5;optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\tFontNameIndex=13 [default =0];optional int32\tFontSize=14 [default =18];optional uint32\tFontColor=15 [default =0];};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};").root.lookup("GEOPOI.PBPOITile"),d=n("option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;};enum enumZCoordType {eCloseGround = 0;eCloseSeaSurface = 1;eRelativelyGround = 2;eAbsolute = 3;};message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Interate = 5;optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\tFontNameIndex=13 [default =0];optional int32\tFontSize=14 [default =18];optional uint32\tFontColor=15 [default =0];optional enumZCoordType ZCoordType = 16 [default = eAbsolute];};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};").root.lookup("GEOPOI.PBPOITile"),u=n("option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;};enum enumZCoordType {eCloseGround = 0;eCloseSeaSurface = 1;eRelativelyGround = 2;eAbsolute = 3;};message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Priority = 5;repeated int32 Interates =6 [packed=true];optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\tFontNameIndex=13 [default =0];optional int32\tFontSize=14 [default =18];optional uint32\tFontColor=15 [default =0];optional enumZCoordType ZCoordType = 16 [default = eAbsolute];optional int32 FontStyle=17;optional int32 ShiningSize=18;};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};").root.lookup("GEOPOI.PBPOITile");function c(e){const t={stringTable:[],pois:[],enumGeometryType:[{ePoint:0},{eMultiLineString:1},{ePolygon:2}],enumZCoordType:[{eCloseGround:0},{eCloseSeaSurface:1},{eRelativelyGround:2},{eAbsolute:3}]};let i,l=new Uint8Array(e);try{i=u.decode(l)}catch(e){console.error(e.message)}if(!i)try{i=d.decode(l)}catch(e){console.error(e.message),i=h.decode(l)}t.version=parseInt(i.Version.toString()),t.titleKey=parseInt(i.TileKey.toString());for(let e=i.StringTable.s.length,l=0;l<e;l++)t.stringTable.push(i.StringTable.s[l].toString());let o=i.POIS.length;for(;o--;){const e={},l=i.POIS[o];e.oid=parseInt(l.OID.toString())+"_"+t.titleKey,e.name=l.Name.toString(),e.symbolID=parseInt(l.SymbolID.toString()),e.displayHeight=l.DisplayHeight,e.shiningColor=l.ShiningColor,e.fontNameIndex=l.FontNameIndex,e.fontSize=l.FontSize,e.fontColor=l.FontColor,l.ZCoordType&&(e.zCoordType=l.ZCoordType),e.geometryType=l.GeometryType,e.coordinate=l.Coordinates,e.priority=void 0===l.Priority?null:l.Priority,e.interates=void 0===l.Interates?null:l.Interates,e.fontStyle=void 0===l.FontStyle?null:l.FontStyle,e.shiningSize=void 0===l.ShiningSize?null:l.ShiningSize,t.pois.push(e)}return t}const g={font:"28px sans-serif",fontSize:28,fillColor:t.Color.WHITE,scale:.5,outlineColor:t.Color.BLACK,outlineWidth:5,style:t.LabelStyle.FILL_AND_OUTLINE,showBackground:!1,backgroundColor:t.Color.RED,backgroundPadding:new t.Cartesian2(10,10),horizontalOrigin:t.HorizontalOrigin.CENTER,verticalOrigin:t.VerticalOrigin.TOP,eyeOffset:t.Cartesian3.ZERO,pixelOffset:new t.Cartesian2(0,8)},f={horizontalOrigin:t.HorizontalOrigin.CENTER,verticalOrigin:t.VerticalOrigin.CENTER,eyeOffset:t.Cartesian3.ZERO,pixelOffset:t.Cartesian2.ZERO,alignedAxis:t.Cartesian3.ZERO,color:t.Color.WHITE,rotation:0,scale:1,width:18,height:18};var p={GeoTerrainProvider:o,GeoWTFS:class{constructor(e,i){if(!t.defined(e))throw new t.DeveloperError("viewer is required.");if(!t.defined(i.url))throw new t.DeveloperError("options.url is required.");i=t.defaultValue(i,{}),this.viewer=e,this.proxy=i.proxy,this.url=i.url,this.icoUrl=i.icoUrl,this.metadata=i.metadata,this.roadMetadata=i.roadMetadata,this.roadUrl=i.roadUrl,this.labelGraphics=t.combine(i.labelGraphics,g,!0),this.billboardGraphics=t.combine(i.billboardGraphics,f,!0),this.aotuCollide=!!i.aotuCollide,this.collisionPadding=t.defaultValue(i.collisionPadding,[3,5,3,5]),this.serverFirstStyle=!!i.serverFirstStyle,this.subdomains=i.subdomains||[],this.tileCache=[],this.labelCache=[],this._isInitial=!1,this._latelyGrid=[],this._latelyRefreshStamp=0,this._latelyCollisionStamp=0;const l=t.createGuid();this._UUID="GEO_WTFS_LABEL_"+l,this._UUIDRoad="GEO_WTFS_LABEL_ROAD_"+l,this.viewer.camera.percentageChanged=.18,this.bindEvent()}bindEvent(){this.viewer.scene.camera.moveEnd.addEventListener(this._moveEnd,this),this.viewer.scene.camera.changed.addEventListener(this._changed,this)}_moveEnd(){clearTimeout(this._timer);const e=this.viewer.scene.globe._surface;if(e._tilesToRender.length<2||0<e._tileLoadQueueHigh.length)this._timer=setTimeout(()=>{this._moveEnd()},100);else{const e=this.getTilesToRender();if(this.compareArray(e,this._latelyGrid))return;this._queueCall(e),this.delaySynchronous()}}_changed(){const e=(new Date).getTime(),t=e-this._latelyRefreshStamp,i=e-this._latelyCollisionStamp;300<t&&this._moveEnd(),150<i&&this.collisionDetection()}getTilesToRender(){const e=this.viewer.scene.globe._surface._tilesToRender.map(function(e){return{x:e.x,y:e.y,level:e.level,boundBox:{minX:t.Math.toDegrees(e.rectangle.west),minY:t.Math.toDegrees(e.rectangle.south),maxX:t.Math.toDegrees(e.rectangle.east),maxY:t.Math.toDegrees(e.rectangle.north)}}}).sort(function(e,t){return t.level-e.level}),i=[e[0].level];for(let t=0;t<e.length;t++)e[t].level!==i[i.length-1]&&(i.push(e[t].level),4<i.length&&(e.splice(t,1/0),t--));return e}compareArray(e,t){let i=!1;for(let l=0;l<e.length;l++){let o=!1;for(let i=0;i<t.length;i++)if(e[l].x===t[i].x&&e[l].y===t[i].y&&e[l].level===t[i].level){o=!0;break}if(!o){i=!0;break}}return!i}_queueCall(e){this._latelyGrid=e,this._latelyRefreshStamp=(new Date).getTime();let t=e.length;for(;t--;){const i=e[t];if(this.metadata&&r(this.metadata.boundBox,i.boundBox)){if(this.metadata.minLevel>i.level+1||this.metadata.maxLevel<i.level+1)return;const e=this.getCacheTile(i.x,i.y,i.level,0);if(e)this.addLabelAndIco(e);else{const e=this.subdomains.length?(i.x+i.y)%this.subdomains.length:"";let t=this.getTileUrl().replace("{x}",i.x).replace("{y}",i.y).replace("{z}",i.level+1).replace("{s}",e);const l=new XMLHttpRequest;l.open("GET",t,!0),l.responseType="arraybuffer";const o=this;l.onload=function(){if(!(l.status<200||300<=l.status)){const e=o.cutString(l.response);let t;e?(t=c(e),t.x=this.tile.x,t.y=this.tile.y,t.z=this.tile.z,t.t=0,o.addCacheTile(t),o.addLabelAndIco(t)):(t={x:this.tile.x,y:this.tile.y,z:this.tile.z,t:0},o.addCacheTile(t),o.delaySynchronous())}},l.onerror=function(e){console.error(e)},l.send(),l.tile={x:i.x,y:i.y,z:i.level+1}}}if(this.roadMetadata&&r(this.roadMetadata.boundBox,i.boundBox)){if(this.roadMetadata.minLevel>i.level+1||this.roadMetadata.maxLevel<i.level+1)return;const e=this.getCacheTile(i.x,i.y,i.level,0);if(e)this.addLabelAndIco(e);else{const e=this.subdomains.length?(i.x+i.y)%this.subdomains.length:"",t=this.getRoadTileUrl().replace("{x}",i.x).replace("{y}",i.y).replace("{z}",i.level+1).replace("{s}",e),l=new XMLHttpRequest;l.open("GET",t,!0),l.responseType="json";const o=this;l.onload=function(){if(!(l.status<200||300<=l.status)){const e=l.response;let t;e?(t={pois:e.map(e=>({oid:e.LabelPoint.X+"_"+e.LabelPoint.Y,name:e.Feature.properties.Name,coordinate:[e.LabelPoint.X,e.LabelPoint.Y,e.LabelPoint.Z?e.LabelPoint.Z:0]})),x:this.tile.x,y:this.tile.y,z:this.tile.z,t:1},o.addCacheTile(t),o.addLabelAndIco(t)):(t={x:this.tile.x,y:this.tile.y,z:this.tile.z,t:1},o.addCacheTile(t),o.delaySynchronous())}},l.onerror=function(e){console.error(e)},l.send(),l.tile={x:i.x,y:i.y,z:i.level+1}}}}}cutString(e){if(!e)return"";let t=e.byteLength;return t<=28?"":e.slice(19,t-9)}addCacheTile(e){999<this.tileCache.length&&this.tileCache.splice(0,500),this.removeCacheTile(e.x,e.y,e.z,e.t),this.tileCache.push(e)}getCacheTile(e,t,i,l){let o=this.tileCache.length;for(;o--;){const n=this.tileCache[o];if(n.x===e&&n.y===t&&n.z===i&&n.t===l)return n}return null}removeCacheTile(e,t,i,l){let o=this.tileCache.length;for(;o--;){const n=this.tileCache[o];if(n.x===e&&n.y===t&&n.z===i&&n.t===l)return void this.tileCache.splice(o,1)}}getCacheLabel(e){let t=this.labelCache.length;for(;t--;){const i=this.labelCache[t];if(i.name===this._UUID&&i.oid===e)return i}return null}addCacheLabel(e){999<this.labelCache.length&&this.labelCache.splice(0,250),this.removeCacheLabel(e.oid),e.timestamp=(new Date).getTime(),this.labelCache.push(e)}removeCacheLabel(e){let t=this.labelCache.length;for(;t--;)if(this.labelCache[t].name===this._UUID&&this.labelCache[t].oid===e)return void this.labelCache.splice(t,1)}HexadecimalConversion(e){if(4278190080===e)return"#000000";let t=4278190080|parseInt(-Number(e));if(e="",(t=t.toString(16).substring(1)).length<6)for(let i=6-t.length,l=0;l<i;l++)e+="0";return"#"+e+t}addLabelAndIco(e){if(e.pois&&e.pois.length){let t=e.pois.length;for(;t--;){const i=e.pois[t];let l=this.getCacheLabel(i.oid);!l&&(l=this.createLabel(i,e)),this.addCacheLabel(l)}}this.delaySynchronous()}createLabel(e,i){if(e){const l={show:!0,position:t.Cartesian3.fromDegrees(...e.coordinate),label:{text:e.name}};if(Object.assign(l.label,this.labelGraphics),this.serverFirstStyle&&(void 0!==e.fontSize&&(l.label.font=e.fontSize+"px ",void 0!==e.fontNameIndex&&i.stringTable&&i.stringTable[e.fontNameIndex]?l.label.font+=i.stringTable[e.fontNameIndex]:l.label.font+="sans-serif",this.labelGraphics.bold||1===e.fontStyle&&3===e.fontStyle||(l.label.font="bold "+l.label.font),2===e.fontStyle&&3===e.fontStyle||(l.label.font="italic "+l.label.font)),void 0!==e.fontColor&&(l.label.fillColor=t.Color.fromCssColorString(this.HexadecimalConversion(e.fontColor))),void 0!==e.shiningColor&&(l.label.outlineColor=t.Color.fromCssColorString(this.HexadecimalConversion(e.shiningColor))),"number"==typeof e.shiningSize&&(l.label.outlineWidth=e.shiningSize),void 0!==e.showBackground&&(l.label.showBackground=e.showBackground),void 0!==e.backgroundColor&&(l.label.backgroundColor=e.backgroundColor),void 0!==e.backgroundPadding&&(l.label.backgroundPadding=e.backgroundPadding),void 0!==e.eyeOffset&&(l.label.eyeOffset=e.eyeOffset),void 0!==e.pixelOffset&&(l.label.pixelOffset=e.pixelOffset),void 0!==e.style&&(l.label.style=e.style),void 0!==e.scale&&(l.label.scale=e.scale),i.t||(void 0!==e.verticalOrigin&&(l.label.verticalOrigin=e.verticalOrigin),void 0!==e.horizontalOrigin&&(l.label.horizontalOrigin=e.horizontalOrigin))),void 0!==e.symbolID&&-1<e.symbolID){const t=this.subdomains.length?(i.x+i.y)%this.subdomains.length:"";l.billboard={image:this.getIcoUrl().replace("{id}",i.symbolID).replace("{s}",this.subdomains[t])},Object.assign(l.billboard,this.billboardGraphics),this.serverFirstStyle&&(void 0!==e.displayHeight&&(l.billboard.width=e.displayHeight,l.billboard.height=e.displayHeight),void 0!==e.eyeOffset&&(l.billboard.eyeOffset=e.eyeOffset),void 0!==e.pixelOffset&&(l.billboard.pixelOffset=e.pixelOffset),void 0!==e.rotation&&(l.billboard.rotation=e.rotation),void 0!==e.alignedAxis&&(l.billboard.alignedAxis=e.alignedAxis),void 0!==e.color&&(l.billboard.color=e.color),void 0!==e.scale&&(l.billboard.scale=e.scale),i.t||(void 0!==e.verticalOrigin&&(l.billboard.verticalOrigin=e.verticalOrigin),void 0!==e.horizontalOrigin&&(l.billboard.horizontalOrigin=e.horizontalOrigin)))}i.t&&(l.label.verticalOrigin=t.VerticalOrigin.CENTER,l.label.horizontalOrigin=t.HorizontalOrigin.CENTER,l.billboard.verticalOrigin=t.VerticalOrigin.CENTER,l.billboard.horizontalOrigin=t.HorizontalOrigin.CENTER);const o=new t.Entity(l);return o.name=i.x?this._UUIDRoad:this._UUID,o.oid=e.oid,o.priority=e.priority||0,o.xyz=i.x+"_"+i.y+"_"+(i.z-1),o}}getIcoUrl(){return(this.proxy?this.proxy.proxy:"")+this.icoUrl}getTileUrl(){return(this.proxy?this.proxy.proxy:"")+this.url}getRoadTileUrl(){return(this.proxy?this.proxy.proxy:"")+this.roadUrl}delaySynchronous(){clearTimeout(this._timer2),this._timer2=setTimeout(()=>{this.synchronousLabel()},100)}synchronousLabel(){let e=this.labelCache.length;for(;e--;){const t=this.labelCache[e];t.timestamp>=this._latelyRefreshStamp&&!this.viewer.entities.contains(t)&&(this._isInitial&&this.aotuCollide&&(t.show=!1),this.viewer.entities.add(t))}if(!this._isInitial){let e=this.viewer.entities.values.length;for(;e--;){const t=this.viewer.entities.values[e];!t.name||t.name!==this._UUID&&t.name!==this._UUIDRoad||t.timestamp<this._latelyRefreshStamp&&(this.viewer.entities.remove(t),e--)}this.aotuCollide&&this.collisionDetection()}}collisionDetection(){const e=this.viewer.entities.values;let i=[],l=[],o=e.length;for(;o--;){const l=e[o];if(l.name&&(l.name===this._UUID||l.name===this._UUIDRoad)){let e,o;e=t.SceneTransforms.wgs84ToDrawingBufferCoordinates(this.viewer.scene,l.position.getValue(0)),l.show=!0,o=this.getLabelReact({point:e,entity:l}),l.collisionBox=o;let n=null,r=i.length;for(;!n&&r--;)i[r].xyz===l.xyz&&(n=i[r]);n||(n={xzy:l.xyz,entities:[]},i.push(n),n.entities.push(l))}}let n=i.length;for(;n--;){const e=i[n];e.entities.sort(function(e,t){return e.priority-t.priority});for(let t=0;t<e.entities.length;t++){const i=e.entities[t];if(i.show){for(let l=t+1;l<e.entities.length;l++)e.entities[l].show&&s(i.collisionBox,e.entities[l].collisionBox)&&(e.entities[l].show=!1);l.push(i)}}}let r=l.length;for(;r--;)if(l[r].show){l.sort(function(e,t){return e.priority-t.priority});for(let e=r+1;e<l.length;e++)l[e].show&&s(l[r].collisionBox,l[e].collisionBox)&&(l[e].show=!1)}}getLabelReact(e){const{point:t,entity:i}=e;let l=parseInt(i.label.font);l=0<l?l:15;const o=i.label.text.getValue(0).split("\n");let n=0;for(let e=0;e<o.length;e++){let t=a(o[e])/2;n<t&&(n=t)}let r=i.billboard?i.billboard.width.getValue(0)*i.billboard.scale.getValue(0):1,s=i.billboard?i.billboard.height.getValue(0)*i.billboard.scale.getValue(0):1;return{x:(t?t.x:-999)-r/2-this.collisionPadding[3],y:(t?t.y:-999)-s/2-this.collisionPadding[0],width:l*i.label.scale.getValue(0)*n+i.label.pixelOffset.getValue(0).x+r+this.collisionPadding[1],height:l*i.label.scale.getValue(0)*n+i.label.pixelOffset.getValue(0).y+r+this.collisionPadding[2]}}initTDT(e){let t=0;this._isInitial=!0,this._queueCall(e);const i=setInterval(()=>{3<t&&(this._isInitial=!1,clearInterval(i)),t%2==0&&this.aotuCollide&&this.collisionDetection(),t++},600);return this}getPropertyValue(e,t,i,l){return void 0!==t[e]?t[e]:void 0!==i[e]?i[e]:l}unbindEvent(){this.viewer.scene.camera.moveEnd.removeEventListener(this._moveEnd,this),this.viewer.scene.camera.changed.removeEventListener(this._changed,this)}activate(){this._latelyGrid=[],this._moveEnd()}destroy(){let e=this.viewer.entities.values.length;for(;e--;){const t=this.viewer.entities.values[e];!t.name||t.name!==this._UUID&&t.name!==this._UUIDRoad||(this.viewer.entities.remove(t),e--)}this.viewer.camera.percentageChanged=.5,this.unbindEvent(),this.handler=this.handler&&this.handler.destroy(),this.proxy=void 0,this.viewer=void 0,this.url=void 0,this.labelGraphics=void 0,this.billboardGraphics=void 0,this.aotuCollide=void 0,this.collisionPadding=void 0,this.tileCache=void 0,this.labelCache=void 0,this._latelyGrid=void 0,this._latelyRefreshStamp=void 0,this._roadTileset=void 0}getLabelVisibility(e){if(!e)return!1;const t=this.viewer.canvas.getBoundingClientRect();return!(e.x<-10||e.x>t.right+10||e.y<-10||e.y>t.bottom+10)}}};return p});
|
|
7
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("pako/lib/inflate.js"),require("cesium"),require("protobufjs")):"function"==typeof define&&define.amd?define(["pako/lib/inflate.js","cesium","protobufjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).TdtPlug=t(e.pako,e.Cesium,e.protobuf)}(this,function(e,t,i){"use strict";function l(e,i,l,o,n,r){let a=e.tileXYToRectangle(l,o,n);return t.defined(t.Rectangle.intersection(a,i,r))}class o extends t.CustomHeightmapTerrainProvider{constructor(e){if(e=e??{},super({...e,callback:()=>{},ellipsoid:t.Ellipsoid.WGS84,width:64,height:64}),!t.defined(e.url))throw new t.DeveloperError("options.url is required.");this._dataType=e.dataType??"int16",this._url=e.url,this._subdomains=e.subdomains,this._token=e.token,this._rectangles=[],this._topLevel=5,this._bottomLevel=12,this._terrainDataStructure={heightScale:.001,heightOffset:-1e3,elementsPerHeight:3,stride:4,elementMultiplier:256,isBigEndian:!0},this._availability=function(e){const i=[[[0,0,1,0]]],l=i.length,o=new t.TileAvailability(e.tilingScheme,19);for(let e=0;e<l;++e){const t=i[e];for(let i=0;i<t.length;++i){const l=t[i];o.addAvailableTileRange(e,l[0],l[1],l[2],l[3])}}return o}(this)}get availability(){return this._availability}requestTileGeometry(i,l,o,n){if(o>=this._bottomLevel)return Promise.reject(`${o}该级别不发送请求!`);if(o<this._topLevel)return Promise.resolve(new t.HeightmapTerrainData({buffer:this._getVHeightBuffer(),width:this._width,height:this._height,childTileMask:this._getChildTileMask(i,l,o),structure:this._terrainDataStructure}));let r="",a=this._url;Array.isArray(this._subdomains)&&this._subdomains.length&&(r=this._subdomains[(i+l)%this._subdomains.length],a=a.replace("{s}",r)),a=a.replace("{token}",this._token).replace("{x}",i).replace("{y}",l).replace("{z}",o+1);const s=t.Resource.fetchArrayBuffer({url:a,request:n});return s?s.then(t=>t.byteLength<1e3?Promise.reject("无效数据"):e.inflate(t)).then(e=>function(e,i,l,o,n){const r=new t.HeightmapTerrainData({buffer:e._transformBuffer(i),width:e._width,height:e._height,childTileMask:e._getChildTileMask(o,n,l),structure:e._terrainDataStructure});return r._skirtHeight=6e3,e.availability.addAvailableTileRange(l,o,n,o,n),r}(this,e,o,i,l)):void 0}getTileDataAvailable(e,t,i){if(i<this._bottomLevel)return!0}_transformBuffer(e){let t=2;"int16"===this._dataType?t=2:"float"===this._dataType&&(t=4);let i=e;if(i.length!==22500*t)return null;let l,o,n,r,a=new ArrayBuffer(t),s=new DataView(a),h=this._width,d=this._height,u=new Uint8Array(h*d*4);for(let e=0;e<d;e++)for(let a=0;a<h;a++){n=parseInt(149*e/(d-1)),r=parseInt(149*a/(h-1)),o=t*(150*n+r),4===t?(s.setInt8(0,i[o]),s.setInt8(1,i[o+1]),s.setInt8(2,i[o+2]),s.setInt8(3,i[o+3]),l=s.getFloat32(0,!0)):l=i[o]+256*i[o+1],(1e4<l||l<-2e3)&&(l=0);let c=(l+1e3)/.001,g=4*(e*h+a);u[g]=c/65536,u[1+g]=(c-256*u[g]*256)/256,u[2+g]=c-256*u[g]*256-256*u[1+g],u[3+g]=255}return u}_getVHeightBuffer(){let e=this._vHeightBuffer;if(!t.defined(e)){e=new Uint8ClampedArray(this._width*this._height*4);for(let t=0;t<this._width*this._height*4;)e[t++]=15,e[t++]=66,e[t++]=64,e[t++]=255;this._vHeightBuffer=e}return e}_getChildTileMask(e,i,o){let n=new t.Rectangle,r=this._tilingScheme,a=this._rectangles,s=r.tileXYToRectangle(e,i,o),h=0;for(let d=0;d<a.length&&15!==h;++d){let u=a[d];if(!(u.maxLevel<=o)){let a=u.rectangle,d=t.Rectangle.intersection(a,s,n);t.defined(d)&&(l(r,a,2*e,2*i,o+1,n)&&(h|=4),l(r,a,2*e+1,2*i,o+1,n)&&(h|=8),l(r,a,2*e,2*i+1,o+1,n)&&(h|=1),l(r,a,2*e+1,2*i+1,o+1,n)&&(h|=2))}}return h}}function n(e){return i.parse(e)}function r(e,t){return t.minX>=e.minX&&t.minX<=e.maxX&&t.minY>=e.minY&&t.minY<=e.maxY||t.maxX>=e.minX&&t.maxX<=e.maxX&&t.maxY>=e.minY&&t.maxY<=e.maxY||t.minX>=e.minX&&t.minX<=e.maxX&&t.maxY>=e.minY&&t.maxY<=e.maxY||t.maxX>=e.minX&&t.maxX<=e.maxX&&t.minY>=e.minY&&t.minY<=e.maxY}function a(e){let t=0;for(let i=0;i<e.length;i++)null!=e.charAt(i).match(/[^\x00-\xff]/gi)?t+=2:t+=1;return t}function s(e,t){let i=e.x,l=e.y,o=e.width,n=e.height,r=t.x,a=t.y,s=t.width,h=t.height;return!(r<=i&&r+s<=i||i<=r&&i+o<=r||a<=l&&a+h<=l||l<=a&&l+n<=a)}const h=n("option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;} ;message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Interate = 5;optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\tFontNameIndex=13 [default =0];optional int32\tFontSize=14 [default =18];optional uint32\tFontColor=15 [default =0];};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};").root.lookup("GEOPOI.PBPOITile"),d=n("option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;};enum enumZCoordType {eCloseGround = 0;eCloseSeaSurface = 1;eRelativelyGround = 2;eAbsolute = 3;};message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Interate = 5;optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\tFontNameIndex=13 [default =0];optional int32\tFontSize=14 [default =18];optional uint32\tFontColor=15 [default =0];optional enumZCoordType ZCoordType = 16 [default = eAbsolute];};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};").root.lookup("GEOPOI.PBPOITile"),u=n("option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;};enum enumZCoordType {eCloseGround = 0;eCloseSeaSurface = 1;eRelativelyGround = 2;eAbsolute = 3;};message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Priority = 5;repeated int32 Interates =6 [packed=true];optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\tFontNameIndex=13 [default =0];optional int32\tFontSize=14 [default =18];optional uint32\tFontColor=15 [default =0];optional enumZCoordType ZCoordType = 16 [default = eAbsolute];optional int32 FontStyle=17;optional int32 ShiningSize=18;};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};").root.lookup("GEOPOI.PBPOITile");function c(e){const t={stringTable:[],pois:[],enumGeometryType:[{ePoint:0},{eMultiLineString:1},{ePolygon:2}],enumZCoordType:[{eCloseGround:0},{eCloseSeaSurface:1},{eRelativelyGround:2},{eAbsolute:3}]};let i,l=new Uint8Array(e);try{i=u.decode(l)}catch(e){console.error(e.message)}if(!i)try{i=d.decode(l)}catch(e){console.error(e.message),i=h.decode(l)}t.version=parseInt(i.Version.toString()),t.titleKey=parseInt(i.TileKey.toString());for(let e=i.StringTable.s.length,l=0;l<e;l++)t.stringTable.push(i.StringTable.s[l].toString());let o=i.POIS.length;for(;o--;){const e={},l=i.POIS[o];e.oid=parseInt(l.OID.toString())+"_"+t.titleKey,e.name=l.Name.toString(),e.symbolID=parseInt(l.SymbolID.toString()),e.displayHeight=l.DisplayHeight,e.shiningColor=l.ShiningColor,e.fontNameIndex=l.FontNameIndex,e.fontSize=l.FontSize,e.fontColor=l.FontColor,l.ZCoordType&&(e.zCoordType=l.ZCoordType),e.geometryType=l.GeometryType,e.coordinate=l.Coordinates,e.priority=void 0===l.Priority?null:l.Priority,e.interates=void 0===l.Interates?null:l.Interates,e.fontStyle=void 0===l.FontStyle?null:l.FontStyle,e.shiningSize=void 0===l.ShiningSize?null:l.ShiningSize,t.pois.push(e)}return t}const g={font:"28px sans-serif",fontSize:28,fillColor:t.Color.WHITE,scale:.5,outlineColor:t.Color.BLACK,outlineWidth:5,style:t.LabelStyle.FILL_AND_OUTLINE,showBackground:!1,backgroundColor:t.Color.RED,backgroundPadding:new t.Cartesian2(10,10),horizontalOrigin:t.HorizontalOrigin.CENTER,verticalOrigin:t.VerticalOrigin.TOP,eyeOffset:t.Cartesian3.ZERO,pixelOffset:new t.Cartesian2(0,8)},f={horizontalOrigin:t.HorizontalOrigin.CENTER,verticalOrigin:t.VerticalOrigin.CENTER,eyeOffset:t.Cartesian3.ZERO,pixelOffset:t.Cartesian2.ZERO,alignedAxis:t.Cartesian3.ZERO,color:t.Color.WHITE,rotation:0,scale:1,width:18,height:18};var p={GeoTerrainProvider:o,GeoWTFS:class{constructor(e,i){if(!t.defined(e))throw new t.DeveloperError("viewer is required.");if(i=i??{},!t.defined(i.url))throw new t.DeveloperError("options.url is required.");this.viewer=e,this.proxy=i.proxy,this.url=i.url,this.icoUrl=i.icoUrl,this.metadata=i.metadata,this.roadMetadata=i.roadMetadata,this.roadUrl=i.roadUrl,this.labelGraphics=t.combine(i.labelGraphics,g,!0),this.billboardGraphics=t.combine(i.billboardGraphics,f,!0),this.aotuCollide=!!i.aotuCollide,this.collisionPadding=i.collisionPadding??[3,5,3,5],this.serverFirstStyle=!!i.serverFirstStyle,this.subdomains=i.subdomains||[],this.tileCache=[],this.labelCache=[],this._isInitial=!1,this._latelyGrid=[],this._latelyRefreshStamp=0,this._latelyCollisionStamp=0;const l=t.createGuid();this._UUID="GEO_WTFS_LABEL_"+l,this._UUIDRoad="GEO_WTFS_LABEL_ROAD_"+l,this.viewer.camera.percentageChanged=.18,this.bindEvent()}bindEvent(){this.viewer.scene.camera.moveEnd.addEventListener(this._moveEnd,this),this.viewer.scene.camera.changed.addEventListener(this._changed,this)}_moveEnd(){clearTimeout(this._timer);const e=this.viewer.scene.globe._surface;if(e._tilesToRender.length<2||0<e._tileLoadQueueHigh.length)this._timer=setTimeout(()=>{this._moveEnd()},100);else{const e=this.getTilesToRender();if(this.compareArray(e,this._latelyGrid))return;this._queueCall(e),this.delaySynchronous()}}_changed(){const e=(new Date).getTime(),t=e-this._latelyRefreshStamp,i=e-this._latelyCollisionStamp;300<t&&this._moveEnd(),150<i&&this.collisionDetection()}getTilesToRender(){const e=this.viewer.scene.globe._surface._tilesToRender.map(function(e){return{x:e.x,y:e.y,level:e.level,boundBox:{minX:t.Math.toDegrees(e.rectangle.west),minY:t.Math.toDegrees(e.rectangle.south),maxX:t.Math.toDegrees(e.rectangle.east),maxY:t.Math.toDegrees(e.rectangle.north)}}}).sort(function(e,t){return t.level-e.level}),i=[e[0].level];for(let t=0;t<e.length;t++)e[t].level!==i[i.length-1]&&(i.push(e[t].level),4<i.length&&(e.splice(t,1/0),t--));return e}compareArray(e,t){let i=!1;for(let l=0;l<e.length;l++){let o=!1;for(let i=0;i<t.length;i++)if(e[l].x===t[i].x&&e[l].y===t[i].y&&e[l].level===t[i].level){o=!0;break}if(!o){i=!0;break}}return!i}_queueCall(e){this._latelyGrid=e,this._latelyRefreshStamp=(new Date).getTime();let t=e.length;for(;t--;){const i=e[t];if(this.metadata&&r(this.metadata.boundBox,i.boundBox)){if(this.metadata.minLevel>i.level+1||this.metadata.maxLevel<i.level+1)return;const e=this.getCacheTile(i.x,i.y,i.level,0);if(e)this.addLabelAndIco(e);else{const e=this.subdomains.length?(i.x+i.y)%this.subdomains.length:"";let t=this.getTileUrl().replace("{x}",i.x).replace("{y}",i.y).replace("{z}",i.level+1).replace("{s}",e);const l=new XMLHttpRequest;l.open("GET",t,!0),l.responseType="arraybuffer";const o=this;l.onload=function(){if(!(l.status<200||300<=l.status)){const e=o.cutString(l.response);let t;e?(t=c(e),t.x=this.tile.x,t.y=this.tile.y,t.z=this.tile.z,t.t=0,o.addCacheTile(t),o.addLabelAndIco(t)):(t={x:this.tile.x,y:this.tile.y,z:this.tile.z,t:0},o.addCacheTile(t),o.delaySynchronous())}},l.onerror=function(e){console.error(e)},l.send(),l.tile={x:i.x,y:i.y,z:i.level+1}}}if(this.roadMetadata&&r(this.roadMetadata.boundBox,i.boundBox)){if(this.roadMetadata.minLevel>i.level+1||this.roadMetadata.maxLevel<i.level+1)return;const e=this.getCacheTile(i.x,i.y,i.level,0);if(e)this.addLabelAndIco(e);else{const e=this.subdomains.length?(i.x+i.y)%this.subdomains.length:"",t=this.getRoadTileUrl().replace("{x}",i.x).replace("{y}",i.y).replace("{z}",i.level+1).replace("{s}",e),l=new XMLHttpRequest;l.open("GET",t,!0),l.responseType="json";const o=this;l.onload=function(){if(!(l.status<200||300<=l.status)){const e=l.response;let t;e?(t={pois:e.map(e=>({oid:e.LabelPoint.X+"_"+e.LabelPoint.Y,name:e.Feature.properties.Name,coordinate:[e.LabelPoint.X,e.LabelPoint.Y,e.LabelPoint.Z?e.LabelPoint.Z:0]})),x:this.tile.x,y:this.tile.y,z:this.tile.z,t:1},o.addCacheTile(t),o.addLabelAndIco(t)):(t={x:this.tile.x,y:this.tile.y,z:this.tile.z,t:1},o.addCacheTile(t),o.delaySynchronous())}},l.onerror=function(e){console.error(e)},l.send(),l.tile={x:i.x,y:i.y,z:i.level+1}}}}}cutString(e){if(!e)return"";let t=e.byteLength;return t<=28?"":e.slice(19,t-9)}addCacheTile(e){999<this.tileCache.length&&this.tileCache.splice(0,500),this.removeCacheTile(e.x,e.y,e.z,e.t),this.tileCache.push(e)}getCacheTile(e,t,i,l){let o=this.tileCache.length;for(;o--;){const n=this.tileCache[o];if(n.x===e&&n.y===t&&n.z===i&&n.t===l)return n}return null}removeCacheTile(e,t,i,l){let o=this.tileCache.length;for(;o--;){const n=this.tileCache[o];if(n.x===e&&n.y===t&&n.z===i&&n.t===l)return void this.tileCache.splice(o,1)}}getCacheLabel(e){let t=this.labelCache.length;for(;t--;){const i=this.labelCache[t];if(i.name===this._UUID&&i.oid===e)return i}return null}addCacheLabel(e){999<this.labelCache.length&&this.labelCache.splice(0,250),this.removeCacheLabel(e.oid),e.timestamp=(new Date).getTime(),this.labelCache.push(e)}removeCacheLabel(e){let t=this.labelCache.length;for(;t--;)if(this.labelCache[t].name===this._UUID&&this.labelCache[t].oid===e)return void this.labelCache.splice(t,1)}HexadecimalConversion(e){if(4278190080===e)return"#000000";let t=4278190080|parseInt(-Number(e));if(e="",(t=t.toString(16).substring(1)).length<6)for(let i=6-t.length,l=0;l<i;l++)e+="0";return"#"+e+t}addLabelAndIco(e){if(e.pois&&e.pois.length){let t=e.pois.length;for(;t--;){const i=e.pois[t];let l=this.getCacheLabel(i.oid);!l&&(l=this.createLabel(i,e)),this.addCacheLabel(l)}}this.delaySynchronous()}createLabel(e,i){if(e){const l={show:!0,position:t.Cartesian3.fromDegrees(...e.coordinate),label:{text:e.name}};if(Object.assign(l.label,this.labelGraphics),this.serverFirstStyle&&(void 0!==e.fontSize&&(l.label.font=e.fontSize+"px ",void 0!==e.fontNameIndex&&i.stringTable&&i.stringTable[e.fontNameIndex]?l.label.font+=i.stringTable[e.fontNameIndex]:l.label.font+="sans-serif",this.labelGraphics.bold||1===e.fontStyle&&3===e.fontStyle||(l.label.font="bold "+l.label.font),2===e.fontStyle&&3===e.fontStyle||(l.label.font="italic "+l.label.font)),void 0!==e.fontColor&&(l.label.fillColor=t.Color.fromCssColorString(this.HexadecimalConversion(e.fontColor))),void 0!==e.shiningColor&&(l.label.outlineColor=t.Color.fromCssColorString(this.HexadecimalConversion(e.shiningColor))),"number"==typeof e.shiningSize&&(l.label.outlineWidth=e.shiningSize),void 0!==e.showBackground&&(l.label.showBackground=e.showBackground),void 0!==e.backgroundColor&&(l.label.backgroundColor=e.backgroundColor),void 0!==e.backgroundPadding&&(l.label.backgroundPadding=e.backgroundPadding),void 0!==e.eyeOffset&&(l.label.eyeOffset=e.eyeOffset),void 0!==e.pixelOffset&&(l.label.pixelOffset=e.pixelOffset),void 0!==e.style&&(l.label.style=e.style),void 0!==e.scale&&(l.label.scale=e.scale),i.t||(void 0!==e.verticalOrigin&&(l.label.verticalOrigin=e.verticalOrigin),void 0!==e.horizontalOrigin&&(l.label.horizontalOrigin=e.horizontalOrigin))),void 0!==e.symbolID&&-1<e.symbolID){const t=this.subdomains.length?(i.x+i.y)%this.subdomains.length:"";l.billboard={image:this.getIcoUrl().replace("{id}",i.symbolID).replace("{s}",this.subdomains[t])},Object.assign(l.billboard,this.billboardGraphics),this.serverFirstStyle&&(void 0!==e.displayHeight&&(l.billboard.width=e.displayHeight,l.billboard.height=e.displayHeight),void 0!==e.eyeOffset&&(l.billboard.eyeOffset=e.eyeOffset),void 0!==e.pixelOffset&&(l.billboard.pixelOffset=e.pixelOffset),void 0!==e.rotation&&(l.billboard.rotation=e.rotation),void 0!==e.alignedAxis&&(l.billboard.alignedAxis=e.alignedAxis),void 0!==e.color&&(l.billboard.color=e.color),void 0!==e.scale&&(l.billboard.scale=e.scale),i.t||(void 0!==e.verticalOrigin&&(l.billboard.verticalOrigin=e.verticalOrigin),void 0!==e.horizontalOrigin&&(l.billboard.horizontalOrigin=e.horizontalOrigin)))}i.t&&(l.label.verticalOrigin=t.VerticalOrigin.CENTER,l.label.horizontalOrigin=t.HorizontalOrigin.CENTER,l.billboard.verticalOrigin=t.VerticalOrigin.CENTER,l.billboard.horizontalOrigin=t.HorizontalOrigin.CENTER);const o=new t.Entity(l);return o.name=i.x?this._UUIDRoad:this._UUID,o.oid=e.oid,o.priority=e.priority||0,o.xyz=i.x+"_"+i.y+"_"+(i.z-1),o}}getIcoUrl(){return(this.proxy?this.proxy.proxy:"")+this.icoUrl}getTileUrl(){return(this.proxy?this.proxy.proxy:"")+this.url}getRoadTileUrl(){return(this.proxy?this.proxy.proxy:"")+this.roadUrl}delaySynchronous(){clearTimeout(this._timer2),this._timer2=setTimeout(()=>{this.synchronousLabel()},100)}synchronousLabel(){let e=this.labelCache.length;for(;e--;){const t=this.labelCache[e];t.timestamp>=this._latelyRefreshStamp&&!this.viewer.entities.contains(t)&&(this._isInitial&&this.aotuCollide&&(t.show=!1),this.viewer.entities.add(t))}if(!this._isInitial){let e=this.viewer.entities.values.length;for(;e--;){const t=this.viewer.entities.values[e];!t.name||t.name!==this._UUID&&t.name!==this._UUIDRoad||t.timestamp<this._latelyRefreshStamp&&(this.viewer.entities.remove(t),e--)}this.aotuCollide&&this.collisionDetection()}}collisionDetection(){const e=this.viewer.entities.values;let i=[],l=[],o=e.length;for(;o--;){const l=e[o];if(l.name&&(l.name===this._UUID||l.name===this._UUIDRoad)){let e,o;e=t.SceneTransforms.wgs84ToDrawingBufferCoordinates(this.viewer.scene,l.position.getValue(0)),l.show=!0,o=this.getLabelReact({point:e,entity:l}),l.collisionBox=o;let n=null,r=i.length;for(;!n&&r--;)i[r].xyz===l.xyz&&(n=i[r]);n||(n={xzy:l.xyz,entities:[]},i.push(n),n.entities.push(l))}}let n=i.length;for(;n--;){const e=i[n];e.entities.sort(function(e,t){return e.priority-t.priority});for(let t=0;t<e.entities.length;t++){const i=e.entities[t];if(i.show){for(let l=t+1;l<e.entities.length;l++)e.entities[l].show&&s(i.collisionBox,e.entities[l].collisionBox)&&(e.entities[l].show=!1);l.push(i)}}}let r=l.length;for(;r--;)if(l[r].show){l.sort(function(e,t){return e.priority-t.priority});for(let e=r+1;e<l.length;e++)l[e].show&&s(l[r].collisionBox,l[e].collisionBox)&&(l[e].show=!1)}}getLabelReact(e){const{point:t,entity:i}=e;let l=parseInt(i.label.font);l=0<l?l:15;const o=i.label.text.getValue(0).split("\n");let n=0;for(let e=0;e<o.length;e++){let t=a(o[e])/2;n<t&&(n=t)}let r=i.billboard?i.billboard.width.getValue(0)*i.billboard.scale.getValue(0):1,s=i.billboard?i.billboard.height.getValue(0)*i.billboard.scale.getValue(0):1;return{x:(t?t.x:-999)-r/2-this.collisionPadding[3],y:(t?t.y:-999)-s/2-this.collisionPadding[0],width:l*i.label.scale.getValue(0)*n+i.label.pixelOffset.getValue(0).x+r+this.collisionPadding[1],height:l*i.label.scale.getValue(0)*n+i.label.pixelOffset.getValue(0).y+r+this.collisionPadding[2]}}initTDT(e){let t=0;this._isInitial=!0,this._queueCall(e);const i=setInterval(()=>{3<t&&(this._isInitial=!1,clearInterval(i)),t%2==0&&this.aotuCollide&&this.collisionDetection(),t++},600);return this}getPropertyValue(e,t,i,l){return void 0!==t[e]?t[e]:void 0!==i[e]?i[e]:l}unbindEvent(){this.viewer.scene.camera.moveEnd.removeEventListener(this._moveEnd,this),this.viewer.scene.camera.changed.removeEventListener(this._changed,this)}activate(){this._latelyGrid=[],this._moveEnd()}destroy(){let e=this.viewer.entities.values.length;for(;e--;){const t=this.viewer.entities.values[e];!t.name||t.name!==this._UUID&&t.name!==this._UUIDRoad||(this.viewer.entities.remove(t),e--)}this.viewer.camera.percentageChanged=.5,this.unbindEvent(),this.handler=this.handler&&this.handler.destroy(),this.proxy=void 0,this.viewer=void 0,this.url=void 0,this.labelGraphics=void 0,this.billboardGraphics=void 0,this.aotuCollide=void 0,this.collisionPadding=void 0,this.tileCache=void 0,this.labelCache=void 0,this._latelyGrid=void 0,this._latelyRefreshStamp=void 0,this._roadTileset=void 0}getLabelVisibility(e){if(!e)return!1;const t=this.viewer.canvas.getBoundingClientRect();return!(e.x<-10||e.x>t.right+10||e.y<-10||e.y>t.bottom+10)}}};return p});
|
|
8
8
|
//# sourceMappingURL=tdtplug.umd.js.map
|
package/dist/tdtplug.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tdtplug.umd.js","sources":["../src/GeoTerrainProvider.js","../src/util.js","../src/GeoWTFS.js","../src/index.js"],"sourcesContent":["import {inflate} from 'pako/lib/inflate.js'\nimport {\n defaultValue,\n defined,\n DeveloperError,\n Ellipsoid,\n Resource,\n HeightmapTerrainData,\n Rectangle,\n TileAvailability,\n CustomHeightmapTerrainProvider\n} from 'cesium'\n\nfunction f(e, x, d, t, _, h) {\n let i = e.tileXYToRectangle(d, t, _);\n return defined(Rectangle.intersection(i, x, h));\n}\n\nfunction createAvailability(provider) {\n const overallAvailability = [[[0, 0, 1, 0]]]\n const length = overallAvailability.length;\n const availability = new TileAvailability(provider.tilingScheme, 19);\n for (let level = 0; level < length; ++level) {\n const levelRanges = overallAvailability[level];\n for (let i = 0; i < levelRanges.length; ++i) {\n const range = levelRanges[i];\n availability.addAvailableTileRange(\n level,\n range[0],\n range[1],\n range[2],\n range[3],\n );\n }\n }\n return availability\n}\n\nfunction createHeightmapTerrainData(provider, buffer, level, x, y) {\n const terrainData = new HeightmapTerrainData({\n buffer: provider._transformBuffer(buffer),\n width: provider._width,\n height: provider._height,\n childTileMask: provider._getChildTileMask(x, y, level),\n structure: provider._terrainDataStructure\n });\n terrainData._skirtHeight = 6000;\n provider.availability.addAvailableTileRange(level, x, y, x, y)\n return terrainData;\n}\n\nclass GeoTerrainProvider extends CustomHeightmapTerrainProvider {\n constructor(options) {\n options = defaultValue(options, {});\n super({\n ...options,\n // 必需,虽然 requestTileGeometry 被重写了\n callback: () => undefined,\n ellipsoid: Ellipsoid.WGS84,\n width: 64,\n height: 64,\n });\n if (!defined(options.url)) throw new DeveloperError('options.url is required.');\n this._dataType = defaultValue(options.dataType, 'int16');\n this._url = options.url;\n this._subdomains = options.subdomains;\n this._token = options.token;\n\n this._rectangles = [];\n this._topLevel = 5;\n // 实测天地图支持 l=12,从 l=13 开始返回空数据;\n this._bottomLevel = 12;\n this._terrainDataStructure = {\n heightScale: 0.001,\n heightOffset: -1000,\n elementsPerHeight: 3,\n stride: 4,\n elementMultiplier: 256,\n isBigEndian: true\n }\n this._availability = createAvailability(this);\n }\n\n get availability() {\n return this._availability\n }\n\n requestTileGeometry(x, y, level, request) {\n if (level >= this._bottomLevel) return Promise.reject(`${level}该级别不发送请求!`);\n if (level < this._topLevel) {\n return Promise.resolve(new HeightmapTerrainData({\n buffer: this._getVHeightBuffer(),\n width: this._width,\n height: this._height,\n childTileMask: this._getChildTileMask(x, y, level),\n structure: this._terrainDataStructure\n }));\n }\n\n let s = '', url = this._url;\n if (Array.isArray(this._subdomains) && this._subdomains.length) {\n s = this._subdomains[(x + y) % this._subdomains.length];\n url = url.replace('{s}', s);\n }\n url = url.replace('{token}', this._token).replace('{x}', x).replace('{y}', y).replace('{z}', level + 1);\n\n const tileResource = Resource.fetchArrayBuffer({url, request});\n if (!tileResource) return undefined;\n\n return tileResource\n .then(buffer => {\n if (buffer.byteLength < 1000) return Promise.reject('无效数据');\n return inflate(buffer);\n })\n .then(uint8Array => {\n return createHeightmapTerrainData(this, uint8Array, level, x, y);\n });\n }\n\n getTileDataAvailable(e, x, d) {\n if (d < this._bottomLevel) return true;\n }\n\n _transformBuffer(e) {\n let x = 2;\n if (this._dataType === 'int16') {\n x = 2\n } else if (this._dataType === 'float') {\n x = 4\n }\n let d = e;\n if (d.length !== 22500 * x) return null;\n let t, _, n, a,\n r = new ArrayBuffer(x),\n o = new DataView(r),\n s = this._width, c = this._height, h = new Uint8Array(s * c * 4);\n for (let f = 0; f < c; f++)\n for (let l = 0; l < s; l++) {\n n = parseInt(149 * f / (c - 1));\n a = parseInt(149 * l / (s - 1));\n _ = x * (150 * n + a);\n if (4 === x) {\n o.setInt8(0, d[_]);\n o.setInt8(1, d[_ + 1]);\n o.setInt8(2, d[_ + 2]);\n o.setInt8(3, d[_ + 3]);\n t = o.getFloat32(0, true);\n } else {\n t = d[_] + 256 * d[_ + 1]\n }\n if (10000 < t || t < -2000) t = 0;\n let u = (t + 1000) / 0.001, i = 4 * (f * s + l);\n h[i] = u / 65536;\n h[1 + i] = (u - 256 * h[i] * 256) / 256;\n h[2 + i] = u - 256 * h[i] * 256 - 256 * h[1 + i];\n h[3 + i] = 255;\n }\n return h;\n }\n\n _getVHeightBuffer() {\n let e = this._vHeightBuffer;\n if (!defined(e)) {\n e = new Uint8ClampedArray(this._width * this._height * 4);\n for (let x = 0; x < this._width * this._height * 4;) {\n e[x++] = 15;\n e[x++] = 66;\n e[x++] = 64;\n e[x++] = 255;\n }\n this._vHeightBuffer = e;\n }\n return e;\n }\n\n _getChildTileMask(x, d, t) {\n let h = new Rectangle()\n let _ = this._tilingScheme, i = this._rectangles, n = _.tileXYToRectangle(x, d, t), a = 0;\n for (let r = 0; r < i.length && 15 !== a; ++r) {\n let o = i[r];\n if (!(o.maxLevel <= t)) {\n let s = o.rectangle, c = Rectangle.intersection(s, n, h);\n if (defined(c)) {\n if (f(_, s, 2 * x, 2 * d, t + 1, h)) {\n (a |= 4)\n }\n if (f(_, s, 2 * x + 1, 2 * d, t + 1, h)) {\n (a |= 8)\n }\n if (f(_, s, 2 * x, 2 * d + 1, t + 1, h)) {\n (a |= 1)\n }\n if (f(_, s, 2 * x + 1, 2 * d + 1, t + 1, h)) {\n (a |= 2)\n }\n }\n }\n }\n return a;\n }\n}\n\nexport default GeoTerrainProvider\n","import {parse} from \"protobufjs\"\nexport function loadProto(str) {\n return parse(str)\n}\n","import {\n Cartesian2,\n Cartesian3,\n Color,\n createGuid,\n defaultValue,\n defined,\n DeveloperError,\n Entity,\n HorizontalOrigin,\n LabelStyle,\n Math as CMath,\n SceneTransforms,\n VerticalOrigin,\n combine\n} from \"cesium\"\nimport {loadProto} from \"./util\";\n\n\nfunction o(e, x) {\n return x.minX >= e.minX && x.minX <= e.maxX && x.minY>= e.minY && x.minY <= e.maxY ||\n (x.maxX >= e.minX && x.maxX <= e.maxX && x.maxY >= e.minY && x.maxY <= e.maxY ||\n (x.minX>= e.minX && x.minX <= e.maxX && x.maxY >= e.minY && x.maxY <= e.maxY ||\n x.maxX >= e.minX && x.maxX <= e.maxX && x.minY >= e.minY && x.minY <= e.maxY));\n}\n\nfunction s(e) {\n let x = 0;\n for (let d = 0; d < e.length; d++) {\n if (null != e.charAt(d).match(/[^\\x00-\\xff]/gi)) {\n x += 2;\n } else {\n x += 1;\n }\n }\n return x;\n}\n\nfunction h(e, x) {\n let d = e.x, t = e.y, _ = e.width, i = e.height, n = x.x, a = x.y, r = x.width, o = x.height;\n return !(n <= d && n + r <= d) && (!(d <= n && d + _ <= n) && (!(a <= t && a + o <= t) && !(t <= a && t + i <= a)));\n}\n\nconst proto = loadProto('option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;} ;message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Interate = 5;optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\\tFontNameIndex=13 [default =0];optional int32\\tFontSize=14 [default =18];optional uint32\\tFontColor=15 [default =0];};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};').root.lookup('GEOPOI.PBPOITile')\nconst proto1 = loadProto('option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;};enum enumZCoordType {eCloseGround = 0;eCloseSeaSurface = 1;eRelativelyGround = 2;eAbsolute = 3;};message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Interate = 5;optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\\tFontNameIndex=13 [default =0];optional int32\\tFontSize=14 [default =18];optional uint32\\tFontColor=15 [default =0];optional enumZCoordType ZCoordType = 16 [default = eAbsolute];};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};').root.lookup('GEOPOI.PBPOITile')\nconst proto2 = loadProto('option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;};enum enumZCoordType {eCloseGround = 0;eCloseSeaSurface = 1;eRelativelyGround = 2;eAbsolute = 3;};message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Priority = 5;repeated int32 Interates =6 [packed=true];optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\\tFontNameIndex=13 [default =0];optional int32\\tFontSize=14 [default =18];optional uint32\\tFontColor=15 [default =0];optional enumZCoordType ZCoordType = 16 [default = eAbsolute];optional int32 FontStyle=17;optional int32 ShiningSize=18;};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};').root.lookup('GEOPOI.PBPOITile')\n\nfunction parseData(data) {\n const d = {\n stringTable: [],\n pois: [],\n enumGeometryType: [\n {ePoint: 0},\n {eMultiLineString: 1},\n {ePolygon: 2}\n ],\n enumZCoordType: [\n {eCloseGround: 0},\n {eCloseSeaSurface: 1},\n {eRelativelyGround: 2},\n {eAbsolute: 3}\n ]\n }\n let i, n = new Uint8Array(data);\n try {\n i = proto2.decode(n);\n } catch (e) {\n console.error(e.message);\n }\n if(!i){\n try {\n i = proto1.decode(n);\n } catch (e) {\n console.error(e.message);\n i = proto.decode(n);\n }\n }\n d.version = parseInt(i.Version.toString());\n d.titleKey = parseInt(i.TileKey.toString());\n for (let a = i.StringTable.s.length, r = 0; r < a; r++)\n d.stringTable.push(i.StringTable.s[r].toString());\n let len = i.POIS.length;\n while (len--){\n const x = {}, e = i.POIS[len];\n x.oid = parseInt(e.OID.toString()) + '_' + d.titleKey;\n x.name = e.Name.toString();\n x.symbolID = parseInt(e.SymbolID.toString());\n x.displayHeight = e.DisplayHeight;\n x.shiningColor = e.ShiningColor;\n x.fontNameIndex = e.FontNameIndex;\n x.fontSize = e.FontSize;\n x.fontColor = e.FontColor;\n if (e.ZCoordType) {\n (x.zCoordType = e.ZCoordType)\n }\n x.geometryType = e.GeometryType;\n x.coordinate = e.Coordinates;\n x.priority = typeof e.Priority === 'undefined' ? null : e.Priority;\n x.interates = typeof e.Interates === 'undefined' ? null : e.Interates;\n x.fontStyle = typeof e.FontStyle === 'undefined' ? null : e.FontStyle;\n x.shiningSize = typeof e.ShiningSize === 'undefined' ? null : e.ShiningSize;\n d.pois.push(x);\n }\n return d\n}\n\nconst defaultLabelGraphics = {\n font:\"28px sans-serif\",\n fontSize: 28,\n fillColor: Color.WHITE,\n scale: 0.5,\n outlineColor: Color.BLACK,\n outlineWidth: 5,\n style: LabelStyle.FILL_AND_OUTLINE,\n showBackground:false,\n backgroundColor: Color.RED,\n backgroundPadding:new Cartesian2(10, 10),\n horizontalOrigin:HorizontalOrigin.CENTER,\n verticalOrigin: VerticalOrigin.TOP,\n eyeOffset: Cartesian3.ZERO,\n pixelOffset:new Cartesian2(0, 8)\n}\n\nconst defaultBillboardGraphics = {\n horizontalOrigin: HorizontalOrigin.CENTER,\n verticalOrigin: VerticalOrigin.CENTER,\n eyeOffset: Cartesian3.ZERO,\n pixelOffset: Cartesian2.ZERO,\n alignedAxis: Cartesian3.ZERO,\n color: Color.WHITE,\n rotation:0,\n scale:1,\n width:18,\n height:18\n}\n\nclass GeoWTFS {\n constructor(viewer, options) {\n if (!defined(viewer)) throw new DeveloperError('viewer is required.');\n if(!defined(options.url)) throw new DeveloperError('options.url is required.');\n options = defaultValue(options, {});\n this.viewer = viewer;\n this.proxy = options.proxy;\n this.url = options.url;\n this.icoUrl = options.icoUrl;\n this.metadata = options.metadata;\n this.roadMetadata = options.roadMetadata;\n this.roadUrl = options.roadUrl;\n this.labelGraphics = combine(options.labelGraphics, defaultLabelGraphics, true);\n this.billboardGraphics = combine(options.billboardGraphics, defaultBillboardGraphics, true);\n this.aotuCollide = !!options.aotuCollide;\n this.collisionPadding = defaultValue(options.collisionPadding, [3, 5, 3, 5]);\n this.serverFirstStyle = !!options.serverFirstStyle;\n this.subdomains = options.subdomains || [];\n this.tileCache= [];\n this.labelCache = [];\n this._isInitial = false;\n this._latelyGrid = [];\n this._latelyRefreshStamp = 0;\n this._latelyCollisionStamp = 0;\n const guid = createGuid();\n this._UUID = 'GEO_WTFS_LABEL_' + guid;\n this._UUIDRoad = 'GEO_WTFS_LABEL_ROAD_' + guid;\n this.viewer.camera.percentageChanged = 0.18;\n this.bindEvent();\n }\n\n bindEvent(){\n this.viewer.scene.camera.moveEnd.addEventListener(this._moveEnd, this);\n this.viewer.scene.camera.changed.addEventListener(this._changed, this);\n }\n\n _moveEnd(){\n clearTimeout(this._timer);\n const surface = this.viewer.scene.globe._surface;\n if (surface._tilesToRender.length < 2 || 0 < surface._tileLoadQueueHigh.length) {\n this._timer = setTimeout(() => {\n this._moveEnd();\n }, 100);\n } else {\n const tiles = this.getTilesToRender();\n if (this.compareArray(tiles, this._latelyGrid)) return;\n this._queueCall(tiles);\n this.delaySynchronous();\n }\n }\n\n _changed(){\n const now = new Date().getTime(), x = now - this._latelyRefreshStamp, d = now - this._latelyCollisionStamp;\n if (300 < x) {\n this._moveEnd()\n }\n if (150 < d) {\n this.collisionDetection()\n }\n }\n\n getTilesToRender(){\n const tiles = this.viewer.scene.globe._surface._tilesToRender.map(function (e) {\n return {\n x: e.x,\n y: e.y,\n level: e.level,\n boundBox: {\n minX: CMath.toDegrees(e.rectangle.west),\n minY: CMath.toDegrees(e.rectangle.south),\n maxX: CMath.toDegrees(e.rectangle.east),\n maxY: CMath.toDegrees(e.rectangle.north)\n }\n }\n }).sort(function (a, b) {\n return b.level - a.level;\n });\n const x = [tiles[0].level]\n for (let i = 0; i < tiles.length; i++) {\n if(tiles[i].level !== x[x.length - 1]){\n x.push(tiles[i].level);\n if(4 < x.length){\n tiles.splice(i, Infinity);\n i--;\n }\n }\n }\n return tiles\n }\n\n compareArray(tiles, latelyGrid){\n let flag = false;\n for (let t = 0; t < tiles.length; t++) {\n let _ = false;\n for (let i = 0; i < latelyGrid.length; i++)\n if (tiles[t].x === latelyGrid[i].x && tiles[t].y === latelyGrid[i].y && tiles[t].level === latelyGrid[i].level) {\n _ = true;\n break;\n }\n if (!_) {\n flag = true;\n break;\n }\n }\n return !flag;\n }\n\n _queueCall(tiles){\n this._latelyGrid = tiles;\n this._latelyRefreshStamp = new Date().getTime();\n let len = tiles.length;\n while (len--){\n const tile = tiles[len];\n if(this.metadata && o(this.metadata.boundBox, tile.boundBox)){\n if(this.metadata.minLevel > tile.level + 1 || this.metadata.maxLevel < tile.level + 1) return;\n const cacheTile = this.getCacheTile(tile.x, tile.y, tile.level, 0);\n if(cacheTile) {\n this.addLabelAndIco(cacheTile);\n }else {\n const s = this.subdomains.length ? (tile.x + tile.y) % this.subdomains.length : '';\n let url = this.getTileUrl().replace('{x}', tile.x).replace('{y}', tile.y)\n .replace('{z}', tile.level + 1).replace('{s}', s);\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.responseType = 'arraybuffer';\n const that = this;\n xhr.onload = function () {\n if(!(xhr.status < 200 || 300 <= xhr.status)){\n const res = that.cutString(xhr.response);\n let tileData;\n if(res){\n tileData = parseData(res);\n tileData.x = this.tile.x;\n tileData.y = this.tile.y;\n tileData.z = this.tile.z;\n tileData.t = 0;\n that.addCacheTile(tileData);\n that.addLabelAndIco(tileData);\n }else {\n tileData = {\n x: this.tile.x,\n y: this.tile.y,\n z: this.tile.z,\n t: 0\n }\n that.addCacheTile(tileData);\n that.delaySynchronous();\n }\n }\n }\n xhr.onerror = function (e) {\n console.error(e);\n }\n xhr.send();\n xhr.tile = {\n x: tile.x,\n y: tile.y,\n z: tile.level + 1\n };\n }\n }\n if(this.roadMetadata && o(this.roadMetadata.boundBox, tile.boundBox)){\n if(this.roadMetadata.minLevel > tile.level + 1 || this.roadMetadata.maxLevel < tile.level + 1) return;\n const cacheTile = this.getCacheTile(tile.x, tile.y, tile.level, 0);\n if(cacheTile) {\n this.addLabelAndIco(cacheTile);\n }else {\n const s = this.subdomains.length ? (tile.x + tile.y) % this.subdomains.length : '';\n const url = this.getRoadTileUrl().replace('{x}', tile.x).replace('{y}', tile.y)\n .replace('{z}', tile.level + 1).replace('{s}', s);\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.responseType = 'json';\n const that = this;\n xhr.onload = function () {\n if(!(xhr.status < 200 || 300 <= xhr.status)){\n const res = xhr.response;\n let tileData;\n if(res){\n tileData = {\n pois: res.map(e => {\n return{\n oid: e.LabelPoint.X + '_' + e.LabelPoint.Y,\n name: e.Feature.properties.Name,\n coordinate: [e.LabelPoint.X, e.LabelPoint.Y, e.LabelPoint.Z ? e.LabelPoint.Z : 0]\n }\n }),\n x: this.tile.x,\n y: this.tile.y,\n z: this.tile.z,\n t: 1\n }\n that.addCacheTile(tileData);\n that.addLabelAndIco(tileData);\n }else {\n tileData = {\n x: this.tile.x,\n y: this.tile.y,\n z: this.tile.z,\n t: 1\n }\n that.addCacheTile(tileData);\n that.delaySynchronous();\n }\n }\n }\n xhr.onerror = function (e) {\n console.error(e);\n }\n xhr.send();\n xhr.tile = {\n x: tile.x,\n y: tile.y,\n z: tile.level + 1\n };\n }\n }\n }\n }\n\n cutString(e){\n if (!e) return '';\n let x = e.byteLength;\n if (x <= 28) {\n return '';\n } else {\n return e.slice(19, x - 9);\n }\n }\n\n addCacheTile(Tile){\n if (999 < this.tileCache.length) {\n (this.tileCache.splice(0, 500))\n }\n this.removeCacheTile(Tile.x, Tile.y, Tile.z, Tile.t);\n this.tileCache.push(Tile);\n }\n\n getCacheTile(x, y, z, t){\n let len = this.tileCache.length;\n while (len--){\n const tileCache = this.tileCache[len];\n if(tileCache.x === x && tileCache.y === y && tileCache.z === z && tileCache.t === t) return tileCache;\n }\n return null;\n }\n\n removeCacheTile(x, y, z, t){\n let i = this.tileCache.length;\n while (i--){\n const cacheTile = this.tileCache[i];\n if(cacheTile.x === x && cacheTile.y === y && cacheTile.z === z && cacheTile.t === t){\n this.tileCache.splice(i, 1);\n return\n }\n }\n }\n\n getCacheLabel(id){\n let i = this.labelCache.length;\n while (i--){\n const cacheLabel = this.labelCache[i];\n if(cacheLabel.name === this._UUID && cacheLabel.oid === id) return cacheLabel\n }\n return null;\n }\n\n addCacheLabel(label){\n if(999 < this.labelCache.length){\n this.labelCache.splice(0, 250);\n }\n this.removeCacheLabel(label.oid);\n label.timestamp = new Date().getTime();\n this.labelCache.push(label)\n }\n\n removeCacheLabel(id){\n let i = this.labelCache.length;\n while (i--){\n if (this.labelCache[i].name === this._UUID && this.labelCache[i].oid === id){\n this.labelCache.splice(i, 1);\n return;\n }\n }\n }\n\n HexadecimalConversion(e){\n if (4278190080 === e) return '#000000';\n let x = 4278190080 | parseInt(-Number(e));\n e = '';\n if ((x = x.toString(16).substring(1)).length < 6)\n for (let d = 6 - x.length, t = 0; t < d; t++) e += '0';\n return '#' + e + x;\n }\n\n addLabelAndIco(tile){\n if (tile.pois && tile.pois.length){\n let i = tile.pois.length\n while (i--){\n const item = tile.pois[i]\n let label = this.getCacheLabel(item.oid);\n !label && (label = this.createLabel(item, tile));\n this.addCacheLabel(label);\n }\n }\n this.delaySynchronous();\n }\n\n createLabel(poi, tile){\n if(poi) {\n const entityOption = {\n show: true,\n position: Cartesian3.fromDegrees(...poi.coordinate),\n label: {text: poi.name}\n }\n Object.assign(entityOption.label, this.labelGraphics);\n if(this.serverFirstStyle){\n if(undefined !== poi.fontSize){\n entityOption.label.font = poi.fontSize + 'px ';\n if(undefined !== poi.fontNameIndex && tile.stringTable && tile.stringTable[poi.fontNameIndex]){\n entityOption.label.font += tile.stringTable[poi.fontNameIndex];\n } else {\n entityOption.label.font += 'sans-serif'\n }\n if(!this.labelGraphics.bold && (1 !== poi.fontStyle || 3 !== poi.fontStyle)) {\n entityOption.label.font = 'bold ' + entityOption.label.font;\n }\n if(2 !== poi.fontStyle || 3 !== poi.fontStyle) {\n entityOption.label.font = 'italic ' + entityOption.label.font;\n }\n }\n if(undefined !== poi.fontColor){\n entityOption.label.fillColor = Color.fromCssColorString(this.HexadecimalConversion(poi.fontColor));\n }\n if(undefined !== poi.shiningColor){\n entityOption.label.outlineColor = Color.fromCssColorString(this.HexadecimalConversion(poi.shiningColor));\n }\n if(typeof poi.shiningSize === 'number'){\n entityOption.label.outlineWidth = poi.shiningSize;\n }\n if(undefined !== poi.showBackground){\n entityOption.label.showBackground = poi.showBackground;\n }\n if(undefined !== poi.backgroundColor){\n entityOption.label.backgroundColor = poi.backgroundColor;\n }\n if(undefined !== poi.backgroundPadding){\n entityOption.label.backgroundPadding = poi.backgroundPadding;\n }\n if(undefined !== poi.eyeOffset){\n entityOption.label.eyeOffset = poi.eyeOffset;\n }\n if(undefined !== poi.pixelOffset) {\n entityOption.label.pixelOffset = poi.pixelOffset;\n }\n if(undefined !== poi.style){\n entityOption.label.style = poi.style;\n }\n if(undefined !== poi.scale){\n entityOption.label.scale = poi.scale;\n }\n if(!tile.t){\n if(undefined !== poi.verticalOrigin){\n entityOption.label.verticalOrigin = poi.verticalOrigin;\n }\n if(undefined !== poi.horizontalOrigin){\n entityOption.label.horizontalOrigin = poi.horizontalOrigin;\n }\n }\n }\n if(undefined !== poi.symbolID && -1 < poi.symbolID){\n const s = this.subdomains.length ? (tile.x + tile.y) % this.subdomains.length : '';\n entityOption.billboard = {image: this.getIcoUrl().replace('{id}', tile.symbolID).replace('{s}', this.subdomains[s])};\n Object.assign(entityOption.billboard, this.billboardGraphics)\n if(this.serverFirstStyle){\n if(undefined !== poi.displayHeight){\n entityOption.billboard.width = poi.displayHeight;\n entityOption.billboard.height = poi.displayHeight;\n }\n if (undefined !== poi.eyeOffset) {\n entityOption.billboard.eyeOffset = poi.eyeOffset;\n }\n if (undefined !== poi.pixelOffset) {\n entityOption.billboard.pixelOffset = poi.pixelOffset;\n }\n if (undefined !== poi.rotation) {\n // (_['billboard']['rotation'] = e['rotation'])\n entityOption.billboard.rotation = poi.rotation;\n }\n if (undefined !== poi.alignedAxis) {\n entityOption.billboard.alignedAxis = poi.alignedAxis;\n }\n if (undefined !== poi.color) {\n entityOption.billboard.color = poi.color;\n }\n if (undefined !== poi.scale) {\n entityOption.billboard.scale = poi.scale;\n }\n if(!tile.t){\n if(undefined !== poi.verticalOrigin){\n entityOption.billboard.verticalOrigin = poi.verticalOrigin\n }\n if(undefined !== poi.horizontalOrigin){\n entityOption.billboard.horizontalOrigin = poi.horizontalOrigin\n }\n }\n }\n }\n if(tile.t) {\n entityOption.label.verticalOrigin = VerticalOrigin.CENTER;\n entityOption.label.horizontalOrigin = HorizontalOrigin.CENTER;\n entityOption.billboard.verticalOrigin = VerticalOrigin.CENTER;\n entityOption.billboard.horizontalOrigin = HorizontalOrigin.CENTER;\n }\n const entity = new Entity(entityOption);\n entity.name = tile.x ? this._UUIDRoad : this._UUID;\n entity.oid = poi.oid;\n entity.priority = poi.priority || 0;\n entity.xyz = tile.x + '_' + tile.y + '_' + (tile.z - 1);\n return entity\n }\n }\n\n getIcoUrl(){\n return (this.proxy ? this.proxy.proxy : '') + this.icoUrl;\n }\n\n getTileUrl(){\n return (this.proxy ? this.proxy.proxy : '') + this.url;\n }\n\n getRoadTileUrl(){\n return (this.proxy ? this.proxy.proxy : '') + this.roadUrl;\n }\n\n delaySynchronous(){\n clearTimeout(this._timer2);\n this._timer2 = setTimeout(() => {\n this.synchronousLabel();\n }, 100);\n }\n\n synchronousLabel(){\n let i = this.labelCache.length;\n while (i--){\n const label = this.labelCache[i];\n label.timestamp >= this._latelyRefreshStamp && !this.viewer.entities.contains(label)\n && (this._isInitial && this.aotuCollide && (label.show = false), this.viewer.entities.add(label));\n }\n if(!this._isInitial){\n let j = this.viewer.entities.values.length;\n while (j--){\n const entity = this.viewer.entities.values[j]\n !entity.name || entity.name !== this._UUID && entity.name !== this._UUIDRoad ||\n entity.timestamp < this._latelyRefreshStamp && (this.viewer.entities.remove(entity), j--);\n }\n if(this.aotuCollide) this.collisionDetection()\n }\n }\n\n /**\n * 碰撞检测\n */\n collisionDetection(){\n const entities = this.viewer.entities.values;\n let d = [], s =[], len = entities.length;\n while (len--) {\n const entity = entities[len];\n if(entity.name && (entity.name === this._UUID || entity.name === this._UUIDRoad)){\n let point, i;\n point = SceneTransforms.wgs84ToDrawingBufferCoordinates(this.viewer.scene, entity.position.getValue(0));\n entity.show = true;\n i = this.getLabelReact({point, entity});\n entity.collisionBox = i;\n let n = null, a = d.length;\n while (!n && a--){\n if(d[a].xyz === entity.xyz) n = d[a]\n }\n if(!n){\n n = {xzy: entity.xyz, entities: []};\n d.push(n);\n n.entities.push(entity);\n }\n }\n }\n let dLen = d.length;\n while (dLen--){\n const item = d[dLen];\n item.entities.sort(function (a, b) {return a.priority- b.priority;});\n for (let i = 0; i < item.entities.length; i++) {\n const oItem = item.entities[i];\n if(oItem.show){\n for (let j = i + 1; j < item.entities.length; j++) {\n if(item.entities[j].show && h(oItem.collisionBox, item.entities[j].collisionBox)){\n item.entities[j].show = false;\n }\n }\n s.push(oItem);\n }\n }\n }\n let m = s.length;\n while (m--){\n if(s[m].show){\n s.sort(function (a, b) {return a.priority - b.priority});\n for (let i = m + 1; i < s.length; i++) {\n s[i].show && h(s[m].collisionBox, s[i].collisionBox) && (s[i].show = false);\n }\n }\n }\n }\n\n /**\n * 获取label的区域\n * @param data\n * @return {{x: number, width: *, y: number, height: *}}\n */\n getLabelReact(data){\n const {point, entity} = data;\n let fontSize = parseInt(entity.label.font);\n fontSize = 0 < fontSize ? fontSize : 15;\n const d = entity.label.text.getValue(0).split('\\n');\n let t = 0;\n for (let i = 0; i < d.length; i++) {\n let n = s(d[i]) / 2;\n if(t < n) t = n;\n }\n let a = entity.billboard ? entity.billboard.width.getValue(0) * entity.billboard.scale.getValue(0) : 1;\n let r = entity.billboard ? entity.billboard.height.getValue(0) * entity.billboard.scale.getValue(0) : 1;\n return {\n x: (point ? point.x : -999) - a / 2 - this.collisionPadding[3],\n y: (point ? point.y : -999) - r / 2 - this.collisionPadding[0],\n width: fontSize * entity.label.scale.getValue(0) * t + entity.label.pixelOffset.getValue(0).x + a + this.collisionPadding[1],\n height: fontSize * entity.label.scale.getValue(0) * t + entity.label.pixelOffset.getValue(0).y + a + this.collisionPadding[2]\n }\n }\n\n initTDT(e){\n let x = 0;\n this._isInitial = true;\n this._queueCall(e);\n const t = setInterval(() => {\n if (3 < x) {\n this._isInitial = false;\n clearInterval(t);\n }\n if (x % 2 === 0 && this.aotuCollide) {\n this.collisionDetection()\n }\n x++;\n }, 600);\n return this;\n }\n\n getPropertyValue(e, x, d, t){\n if (undefined !== x[e]) {\n return x[e];\n } else {\n return undefined !== d[e] ? d[e] : t;\n }\n }\n\n unbindEvent(){\n this.viewer.scene.camera.moveEnd.removeEventListener(this._moveEnd, this);\n this.viewer.scene.camera.changed.removeEventListener(this._changed, this);\n }\n\n activate(){\n this._latelyGrid= [];\n this._moveEnd();\n }\n\n destroy(){\n let i = this.viewer.entities.values.length;\n while (i--){\n const entity = this.viewer.entities.values[i];\n !entity.name || entity.name !== this._UUID && entity.name !== this._UUIDRoad || (this.viewer.entities.remove(entity), i--);\n }\n this.viewer.camera.percentageChanged = 0.5;\n this.unbindEvent();\n this.handler = this.handler && this.handler.destroy();\n this.proxy = undefined;\n this.viewer = undefined;\n this.url = undefined;\n this.labelGraphics = undefined;\n this.billboardGraphics = undefined;\n this.aotuCollide = undefined;\n this.collisionPadding = undefined;\n this.tileCache = undefined;\n this.labelCache = undefined;\n this._latelyGrid = undefined;\n this._latelyRefreshStamp = undefined;\n this._roadTileset = undefined;\n }\n\n getLabelVisibility(Label){\n if (!Label) return false;\n const x = this.viewer.canvas.getBoundingClientRect();\n return !(Label.x < -10 || Label.x > x.right + 10) && !(Label.y < -10 || Label.y > x.bottom + 10);\n }\n}\n\nexport default GeoWTFS\n","import GeoTerrainProvider from './GeoTerrainProvider'\nimport GeoWTFS from './GeoWTFS'\n\nexport default {\n GeoTerrainProvider,\n GeoWTFS\n}\n"],"names":["f","e","x","d","t","_","h","i","tileXYToRectangle","defined","Rectangle","intersection","GeoTerrainProvider","CustomHeightmapTerrainProvider","constructor","options","defaultValue","super","callback","ellipsoid","Ellipsoid","WGS84","width","height","url","DeveloperError","this","_dataType","dataType","_url","_subdomains","subdomains","_token","token","_rectangles","_topLevel","_bottomLevel","_terrainDataStructure","heightScale","heightOffset","elementsPerHeight","stride","elementMultiplier","isBigEndian","_availability","provider","overallAvailability","length","availability","TileAvailability","tilingScheme","level","levelRanges","range","addAvailableTileRange","createAvailability","requestTileGeometry","y","request","Promise","reject","resolve","HeightmapTerrainData","buffer","_getVHeightBuffer","_width","_height","childTileMask","_getChildTileMask","structure","s","Array","isArray","replace","tileResource","Resource","fetchArrayBuffer","then","byteLength","inflate","uint8Array","terrainData","_transformBuffer","_skirtHeight","createHeightmapTerrainData","getTileDataAvailable","n","a","r","ArrayBuffer","o","DataView","c","Uint8Array","l","parseInt","setInt8","getFloat32","u","_vHeightBuffer","Uint8ClampedArray","_tilingScheme","maxLevel","rectangle","loadProto","str","parse","minX","maxX","minY","maxY","charAt","match","proto","root","lookup","proto1","proto2","parseData","data","stringTable","pois","enumGeometryType","ePoint","eMultiLineString","ePolygon","enumZCoordType","eCloseGround","eCloseSeaSurface","eRelativelyGround","eAbsolute","decode","console","error","message","version","Version","toString","titleKey","TileKey","StringTable","push","len","POIS","oid","OID","name","Name","symbolID","SymbolID","displayHeight","DisplayHeight","shiningColor","ShiningColor","fontNameIndex","FontNameIndex","fontSize","FontSize","fontColor","FontColor","ZCoordType","zCoordType","geometryType","GeometryType","coordinate","Coordinates","priority","Priority","interates","Interates","fontStyle","FontStyle","shiningSize","ShiningSize","defaultLabelGraphics","font","fillColor","Color","WHITE","scale","outlineColor","BLACK","outlineWidth","style","LabelStyle","FILL_AND_OUTLINE","showBackground","backgroundColor","RED","backgroundPadding","Cartesian2","horizontalOrigin","HorizontalOrigin","CENTER","verticalOrigin","VerticalOrigin","TOP","eyeOffset","Cartesian3","ZERO","pixelOffset","defaultBillboardGraphics","alignedAxis","color","rotation","index","GeoWTFS","viewer","proxy","icoUrl","metadata","roadMetadata","roadUrl","labelGraphics","combine","billboardGraphics","aotuCollide","collisionPadding","serverFirstStyle","tileCache","labelCache","_isInitial","_latelyGrid","_latelyRefreshStamp","_latelyCollisionStamp","guid","createGuid","_UUID","_UUIDRoad","camera","percentageChanged","bindEvent","scene","moveEnd","addEventListener","_moveEnd","changed","_changed","clearTimeout","_timer","surface","globe","_surface","_tilesToRender","_tileLoadQueueHigh","setTimeout","tiles","getTilesToRender","compareArray","_queueCall","delaySynchronous","now","Date","getTime","collisionDetection","map","boundBox","CMath","toDegrees","west","south","east","north","sort","b","splice","Infinity","latelyGrid","flag","tile","minLevel","cacheTile","getCacheTile","addLabelAndIco","getTileUrl","xhr","XMLHttpRequest","open","responseType","that","onload","status","res","cutString","response","tileData","z","addCacheTile","onerror","send","getRoadTileUrl","LabelPoint","X","Y","Feature","properties","Z","slice","Tile","removeCacheTile","getCacheLabel","id","cacheLabel","addCacheLabel","label","removeCacheLabel","timestamp","HexadecimalConversion","Number","substring","item","createLabel","poi","entityOption","show","position","fromDegrees","text","Object","assign","undefined","bold","fromCssColorString","billboard","image","getIcoUrl","entity","Entity","xyz","_timer2","synchronousLabel","entities","contains","add","j","values","remove","point","SceneTransforms","wgs84ToDrawingBufferCoordinates","getValue","getLabelReact","collisionBox","xzy","dLen","oItem","m","split","initTDT","setInterval","clearInterval","getPropertyValue","unbindEvent","removeEventListener","activate","destroy","handler","_roadTileset","getLabelVisibility","Label","canvas","getBoundingClientRect","right","bottom"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tdtplug.umd.js","sources":["../src/GeoTerrainProvider.js","../src/util.js","../src/GeoWTFS.js","../src/index.js"],"sourcesContent":["import {inflate} from 'pako/lib/inflate.js'\nimport {\n defined,\n DeveloperError,\n Ellipsoid,\n Resource,\n HeightmapTerrainData,\n Rectangle,\n TileAvailability,\n CustomHeightmapTerrainProvider\n} from 'cesium'\n\nfunction f(e, x, d, t, _, h) {\n let i = e.tileXYToRectangle(d, t, _);\n return defined(Rectangle.intersection(i, x, h));\n}\n\nfunction createAvailability(provider) {\n const overallAvailability = [[[0, 0, 1, 0]]]\n const length = overallAvailability.length;\n const availability = new TileAvailability(provider.tilingScheme, 19);\n for (let level = 0; level < length; ++level) {\n const levelRanges = overallAvailability[level];\n for (let i = 0; i < levelRanges.length; ++i) {\n const range = levelRanges[i];\n availability.addAvailableTileRange(\n level,\n range[0],\n range[1],\n range[2],\n range[3],\n );\n }\n }\n return availability\n}\n\nfunction createHeightmapTerrainData(provider, buffer, level, x, y) {\n const terrainData = new HeightmapTerrainData({\n buffer: provider._transformBuffer(buffer),\n width: provider._width,\n height: provider._height,\n childTileMask: provider._getChildTileMask(x, y, level),\n structure: provider._terrainDataStructure\n });\n terrainData._skirtHeight = 6000;\n provider.availability.addAvailableTileRange(level, x, y, x, y)\n return terrainData;\n}\n\nclass GeoTerrainProvider extends CustomHeightmapTerrainProvider {\n constructor(options) {\n options = options ?? {};\n super({\n ...options,\n // 必需,虽然 requestTileGeometry 被重写了\n callback: () => undefined,\n ellipsoid: Ellipsoid.WGS84,\n width: 64,\n height: 64,\n });\n if (!defined(options.url)) throw new DeveloperError('options.url is required.');\n this._dataType = options.dataType ?? 'int16';\n this._url = options.url;\n this._subdomains = options.subdomains;\n this._token = options.token;\n\n this._rectangles = [];\n this._topLevel = 5;\n // 实测天地图支持 l=12,从 l=13 开始返回空数据;\n this._bottomLevel = 12;\n this._terrainDataStructure = {\n heightScale: 0.001,\n heightOffset: -1000,\n elementsPerHeight: 3,\n stride: 4,\n elementMultiplier: 256,\n isBigEndian: true\n }\n this._availability = createAvailability(this);\n }\n\n get availability() {\n return this._availability\n }\n\n requestTileGeometry(x, y, level, request) {\n if (level >= this._bottomLevel) return Promise.reject(`${level}该级别不发送请求!`);\n if (level < this._topLevel) {\n return Promise.resolve(new HeightmapTerrainData({\n buffer: this._getVHeightBuffer(),\n width: this._width,\n height: this._height,\n childTileMask: this._getChildTileMask(x, y, level),\n structure: this._terrainDataStructure\n }));\n }\n\n let s = '', url = this._url;\n if (Array.isArray(this._subdomains) && this._subdomains.length) {\n s = this._subdomains[(x + y) % this._subdomains.length];\n url = url.replace('{s}', s);\n }\n url = url.replace('{token}', this._token).replace('{x}', x).replace('{y}', y).replace('{z}', level + 1);\n\n const tileResource = Resource.fetchArrayBuffer({url, request});\n if (!tileResource) return undefined;\n\n return tileResource\n .then(buffer => {\n if (buffer.byteLength < 1000) return Promise.reject('无效数据');\n return inflate(buffer);\n })\n .then(uint8Array => {\n return createHeightmapTerrainData(this, uint8Array, level, x, y);\n });\n }\n\n getTileDataAvailable(e, x, d) {\n if (d < this._bottomLevel) return true;\n }\n\n _transformBuffer(e) {\n let x = 2;\n if (this._dataType === 'int16') {\n x = 2\n } else if (this._dataType === 'float') {\n x = 4\n }\n let d = e;\n if (d.length !== 22500 * x) return null;\n let t, _, n, a,\n r = new ArrayBuffer(x),\n o = new DataView(r),\n s = this._width, c = this._height, h = new Uint8Array(s * c * 4);\n for (let f = 0; f < c; f++)\n for (let l = 0; l < s; l++) {\n n = parseInt(149 * f / (c - 1));\n a = parseInt(149 * l / (s - 1));\n _ = x * (150 * n + a);\n if (4 === x) {\n o.setInt8(0, d[_]);\n o.setInt8(1, d[_ + 1]);\n o.setInt8(2, d[_ + 2]);\n o.setInt8(3, d[_ + 3]);\n t = o.getFloat32(0, true);\n } else {\n t = d[_] + 256 * d[_ + 1]\n }\n if (10000 < t || t < -2000) t = 0;\n let u = (t + 1000) / 0.001, i = 4 * (f * s + l);\n h[i] = u / 65536;\n h[1 + i] = (u - 256 * h[i] * 256) / 256;\n h[2 + i] = u - 256 * h[i] * 256 - 256 * h[1 + i];\n h[3 + i] = 255;\n }\n return h;\n }\n\n _getVHeightBuffer() {\n let e = this._vHeightBuffer;\n if (!defined(e)) {\n e = new Uint8ClampedArray(this._width * this._height * 4);\n for (let x = 0; x < this._width * this._height * 4;) {\n e[x++] = 15;\n e[x++] = 66;\n e[x++] = 64;\n e[x++] = 255;\n }\n this._vHeightBuffer = e;\n }\n return e;\n }\n\n _getChildTileMask(x, d, t) {\n let h = new Rectangle()\n let _ = this._tilingScheme, i = this._rectangles, n = _.tileXYToRectangle(x, d, t), a = 0;\n for (let r = 0; r < i.length && 15 !== a; ++r) {\n let o = i[r];\n if (!(o.maxLevel <= t)) {\n let s = o.rectangle, c = Rectangle.intersection(s, n, h);\n if (defined(c)) {\n if (f(_, s, 2 * x, 2 * d, t + 1, h)) {\n (a |= 4)\n }\n if (f(_, s, 2 * x + 1, 2 * d, t + 1, h)) {\n (a |= 8)\n }\n if (f(_, s, 2 * x, 2 * d + 1, t + 1, h)) {\n (a |= 1)\n }\n if (f(_, s, 2 * x + 1, 2 * d + 1, t + 1, h)) {\n (a |= 2)\n }\n }\n }\n }\n return a;\n }\n}\n\nexport default GeoTerrainProvider\n","import {parse} from \"protobufjs\"\nexport function loadProto(str) {\n return parse(str)\n}\n","import {\n Cartesian2,\n Cartesian3,\n Color,\n createGuid,\n defined,\n DeveloperError,\n Entity,\n HorizontalOrigin,\n LabelStyle,\n Math as CMath,\n SceneTransforms,\n VerticalOrigin,\n combine\n} from \"cesium\"\nimport {loadProto} from \"./util\";\n\n\nfunction o(e, x) {\n return x.minX >= e.minX && x.minX <= e.maxX && x.minY>= e.minY && x.minY <= e.maxY ||\n (x.maxX >= e.minX && x.maxX <= e.maxX && x.maxY >= e.minY && x.maxY <= e.maxY ||\n (x.minX>= e.minX && x.minX <= e.maxX && x.maxY >= e.minY && x.maxY <= e.maxY ||\n x.maxX >= e.minX && x.maxX <= e.maxX && x.minY >= e.minY && x.minY <= e.maxY));\n}\n\nfunction s(e) {\n let x = 0;\n for (let d = 0; d < e.length; d++) {\n if (null != e.charAt(d).match(/[^\\x00-\\xff]/gi)) {\n x += 2;\n } else {\n x += 1;\n }\n }\n return x;\n}\n\nfunction h(e, x) {\n let d = e.x, t = e.y, _ = e.width, i = e.height, n = x.x, a = x.y, r = x.width, o = x.height;\n return !(n <= d && n + r <= d) && (!(d <= n && d + _ <= n) && (!(a <= t && a + o <= t) && !(t <= a && t + i <= a)));\n}\n\nconst proto = loadProto('option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;} ;message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Interate = 5;optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\\tFontNameIndex=13 [default =0];optional int32\\tFontSize=14 [default =18];optional uint32\\tFontColor=15 [default =0];};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};').root.lookup('GEOPOI.PBPOITile')\nconst proto1 = loadProto('option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;};enum enumZCoordType {eCloseGround = 0;eCloseSeaSurface = 1;eRelativelyGround = 2;eAbsolute = 3;};message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Interate = 5;optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\\tFontNameIndex=13 [default =0];optional int32\\tFontSize=14 [default =18];optional uint32\\tFontColor=15 [default =0];optional enumZCoordType ZCoordType = 16 [default = eAbsolute];};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};').root.lookup('GEOPOI.PBPOITile')\nconst proto2 = loadProto('option optimize_for = LITE_RUNTIME;package GEOPOI;enum enumGeometryType {ePoint = 0;eMultiLineString = 1;ePolygon = 2;};enum enumZCoordType {eCloseGround = 0;eCloseSeaSurface = 1;eRelativelyGround = 2;eAbsolute = 3;};message PBPOI{required uint64 OID = 1;required string Name =2;repeated double Coordinates =3 [packed=true];required enumGeometryType GeometryType = 4;optional int32 Priority = 5;repeated int32 Interates =6 [packed=true];optional int32 SymbolID = 10 [default = 0];optional double DisplayHeight = 11 [default = 32];optional uint32 ShiningColor=12 [default =0];optional uint32\\tFontNameIndex=13 [default =0];optional int32\\tFontSize=14 [default =18];optional uint32\\tFontColor=15 [default =0];optional enumZCoordType ZCoordType = 16 [default = eAbsolute];optional int32 FontStyle=17;optional int32 ShiningSize=18;};message StringTable {repeated string s = 1;}message PBPOITile{required int64 Version = 1;required int64 TileKey = 2;required StringTable StringTable = 3;repeated PBPOI POIS = 4;};').root.lookup('GEOPOI.PBPOITile')\n\nfunction parseData(data) {\n const d = {\n stringTable: [],\n pois: [],\n enumGeometryType: [\n {ePoint: 0},\n {eMultiLineString: 1},\n {ePolygon: 2}\n ],\n enumZCoordType: [\n {eCloseGround: 0},\n {eCloseSeaSurface: 1},\n {eRelativelyGround: 2},\n {eAbsolute: 3}\n ]\n }\n let i, n = new Uint8Array(data);\n try {\n i = proto2.decode(n);\n } catch (e) {\n console.error(e.message);\n }\n if(!i){\n try {\n i = proto1.decode(n);\n } catch (e) {\n console.error(e.message);\n i = proto.decode(n);\n }\n }\n d.version = parseInt(i.Version.toString());\n d.titleKey = parseInt(i.TileKey.toString());\n for (let a = i.StringTable.s.length, r = 0; r < a; r++)\n d.stringTable.push(i.StringTable.s[r].toString());\n let len = i.POIS.length;\n while (len--){\n const x = {}, e = i.POIS[len];\n x.oid = parseInt(e.OID.toString()) + '_' + d.titleKey;\n x.name = e.Name.toString();\n x.symbolID = parseInt(e.SymbolID.toString());\n x.displayHeight = e.DisplayHeight;\n x.shiningColor = e.ShiningColor;\n x.fontNameIndex = e.FontNameIndex;\n x.fontSize = e.FontSize;\n x.fontColor = e.FontColor;\n if (e.ZCoordType) {\n (x.zCoordType = e.ZCoordType)\n }\n x.geometryType = e.GeometryType;\n x.coordinate = e.Coordinates;\n x.priority = typeof e.Priority === 'undefined' ? null : e.Priority;\n x.interates = typeof e.Interates === 'undefined' ? null : e.Interates;\n x.fontStyle = typeof e.FontStyle === 'undefined' ? null : e.FontStyle;\n x.shiningSize = typeof e.ShiningSize === 'undefined' ? null : e.ShiningSize;\n d.pois.push(x);\n }\n return d\n}\n\nconst defaultLabelGraphics = {\n font:\"28px sans-serif\",\n fontSize: 28,\n fillColor: Color.WHITE,\n scale: 0.5,\n outlineColor: Color.BLACK,\n outlineWidth: 5,\n style: LabelStyle.FILL_AND_OUTLINE,\n showBackground:false,\n backgroundColor: Color.RED,\n backgroundPadding:new Cartesian2(10, 10),\n horizontalOrigin:HorizontalOrigin.CENTER,\n verticalOrigin: VerticalOrigin.TOP,\n eyeOffset: Cartesian3.ZERO,\n pixelOffset:new Cartesian2(0, 8)\n}\n\nconst defaultBillboardGraphics = {\n horizontalOrigin: HorizontalOrigin.CENTER,\n verticalOrigin: VerticalOrigin.CENTER,\n eyeOffset: Cartesian3.ZERO,\n pixelOffset: Cartesian2.ZERO,\n alignedAxis: Cartesian3.ZERO,\n color: Color.WHITE,\n rotation:0,\n scale:1,\n width:18,\n height:18\n}\n\nclass GeoWTFS {\n constructor(viewer, options) {\n if (!defined(viewer)) throw new DeveloperError('viewer is required.');\n options = options ?? {};\n if(!defined(options.url)) throw new DeveloperError('options.url is required.');\n this.viewer = viewer;\n this.proxy = options.proxy;\n this.url = options.url;\n this.icoUrl = options.icoUrl;\n this.metadata = options.metadata;\n this.roadMetadata = options.roadMetadata;\n this.roadUrl = options.roadUrl;\n this.labelGraphics = combine(options.labelGraphics, defaultLabelGraphics, true);\n this.billboardGraphics = combine(options.billboardGraphics, defaultBillboardGraphics, true);\n this.aotuCollide = !!options.aotuCollide;\n this.collisionPadding = options.collisionPadding ?? [3, 5, 3, 5];\n this.serverFirstStyle = !!options.serverFirstStyle;\n this.subdomains = options.subdomains || [];\n this.tileCache= [];\n this.labelCache = [];\n this._isInitial = false;\n this._latelyGrid = [];\n this._latelyRefreshStamp = 0;\n this._latelyCollisionStamp = 0;\n const guid = createGuid();\n this._UUID = 'GEO_WTFS_LABEL_' + guid;\n this._UUIDRoad = 'GEO_WTFS_LABEL_ROAD_' + guid;\n this.viewer.camera.percentageChanged = 0.18;\n this.bindEvent();\n }\n\n bindEvent(){\n this.viewer.scene.camera.moveEnd.addEventListener(this._moveEnd, this);\n this.viewer.scene.camera.changed.addEventListener(this._changed, this);\n }\n\n _moveEnd(){\n clearTimeout(this._timer);\n const surface = this.viewer.scene.globe._surface;\n if (surface._tilesToRender.length < 2 || 0 < surface._tileLoadQueueHigh.length) {\n this._timer = setTimeout(() => {\n this._moveEnd();\n }, 100);\n } else {\n const tiles = this.getTilesToRender();\n if (this.compareArray(tiles, this._latelyGrid)) return;\n this._queueCall(tiles);\n this.delaySynchronous();\n }\n }\n\n _changed(){\n const now = new Date().getTime(), x = now - this._latelyRefreshStamp, d = now - this._latelyCollisionStamp;\n if (300 < x) {\n this._moveEnd()\n }\n if (150 < d) {\n this.collisionDetection()\n }\n }\n\n getTilesToRender(){\n const tiles = this.viewer.scene.globe._surface._tilesToRender.map(function (e) {\n return {\n x: e.x,\n y: e.y,\n level: e.level,\n boundBox: {\n minX: CMath.toDegrees(e.rectangle.west),\n minY: CMath.toDegrees(e.rectangle.south),\n maxX: CMath.toDegrees(e.rectangle.east),\n maxY: CMath.toDegrees(e.rectangle.north)\n }\n }\n }).sort(function (a, b) {\n return b.level - a.level;\n });\n const x = [tiles[0].level]\n for (let i = 0; i < tiles.length; i++) {\n if(tiles[i].level !== x[x.length - 1]){\n x.push(tiles[i].level);\n if(4 < x.length){\n tiles.splice(i, Infinity);\n i--;\n }\n }\n }\n return tiles\n }\n\n compareArray(tiles, latelyGrid){\n let flag = false;\n for (let t = 0; t < tiles.length; t++) {\n let _ = false;\n for (let i = 0; i < latelyGrid.length; i++)\n if (tiles[t].x === latelyGrid[i].x && tiles[t].y === latelyGrid[i].y && tiles[t].level === latelyGrid[i].level) {\n _ = true;\n break;\n }\n if (!_) {\n flag = true;\n break;\n }\n }\n return !flag;\n }\n\n _queueCall(tiles){\n this._latelyGrid = tiles;\n this._latelyRefreshStamp = new Date().getTime();\n let len = tiles.length;\n while (len--){\n const tile = tiles[len];\n if(this.metadata && o(this.metadata.boundBox, tile.boundBox)){\n if(this.metadata.minLevel > tile.level + 1 || this.metadata.maxLevel < tile.level + 1) return;\n const cacheTile = this.getCacheTile(tile.x, tile.y, tile.level, 0);\n if(cacheTile) {\n this.addLabelAndIco(cacheTile);\n }else {\n const s = this.subdomains.length ? (tile.x + tile.y) % this.subdomains.length : '';\n let url = this.getTileUrl().replace('{x}', tile.x).replace('{y}', tile.y)\n .replace('{z}', tile.level + 1).replace('{s}', s);\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.responseType = 'arraybuffer';\n const that = this;\n xhr.onload = function () {\n if(!(xhr.status < 200 || 300 <= xhr.status)){\n const res = that.cutString(xhr.response);\n let tileData;\n if(res){\n tileData = parseData(res);\n tileData.x = this.tile.x;\n tileData.y = this.tile.y;\n tileData.z = this.tile.z;\n tileData.t = 0;\n that.addCacheTile(tileData);\n that.addLabelAndIco(tileData);\n }else {\n tileData = {\n x: this.tile.x,\n y: this.tile.y,\n z: this.tile.z,\n t: 0\n }\n that.addCacheTile(tileData);\n that.delaySynchronous();\n }\n }\n }\n xhr.onerror = function (e) {\n console.error(e);\n }\n xhr.send();\n xhr.tile = {\n x: tile.x,\n y: tile.y,\n z: tile.level + 1\n };\n }\n }\n if(this.roadMetadata && o(this.roadMetadata.boundBox, tile.boundBox)){\n if(this.roadMetadata.minLevel > tile.level + 1 || this.roadMetadata.maxLevel < tile.level + 1) return;\n const cacheTile = this.getCacheTile(tile.x, tile.y, tile.level, 0);\n if(cacheTile) {\n this.addLabelAndIco(cacheTile);\n }else {\n const s = this.subdomains.length ? (tile.x + tile.y) % this.subdomains.length : '';\n const url = this.getRoadTileUrl().replace('{x}', tile.x).replace('{y}', tile.y)\n .replace('{z}', tile.level + 1).replace('{s}', s);\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.responseType = 'json';\n const that = this;\n xhr.onload = function () {\n if(!(xhr.status < 200 || 300 <= xhr.status)){\n const res = xhr.response;\n let tileData;\n if(res){\n tileData = {\n pois: res.map(e => {\n return{\n oid: e.LabelPoint.X + '_' + e.LabelPoint.Y,\n name: e.Feature.properties.Name,\n coordinate: [e.LabelPoint.X, e.LabelPoint.Y, e.LabelPoint.Z ? e.LabelPoint.Z : 0]\n }\n }),\n x: this.tile.x,\n y: this.tile.y,\n z: this.tile.z,\n t: 1\n }\n that.addCacheTile(tileData);\n that.addLabelAndIco(tileData);\n }else {\n tileData = {\n x: this.tile.x,\n y: this.tile.y,\n z: this.tile.z,\n t: 1\n }\n that.addCacheTile(tileData);\n that.delaySynchronous();\n }\n }\n }\n xhr.onerror = function (e) {\n console.error(e);\n }\n xhr.send();\n xhr.tile = {\n x: tile.x,\n y: tile.y,\n z: tile.level + 1\n };\n }\n }\n }\n }\n\n cutString(e){\n if (!e) return '';\n let x = e.byteLength;\n if (x <= 28) {\n return '';\n } else {\n return e.slice(19, x - 9);\n }\n }\n\n addCacheTile(Tile){\n if (999 < this.tileCache.length) {\n (this.tileCache.splice(0, 500))\n }\n this.removeCacheTile(Tile.x, Tile.y, Tile.z, Tile.t);\n this.tileCache.push(Tile);\n }\n\n getCacheTile(x, y, z, t){\n let len = this.tileCache.length;\n while (len--){\n const tileCache = this.tileCache[len];\n if(tileCache.x === x && tileCache.y === y && tileCache.z === z && tileCache.t === t) return tileCache;\n }\n return null;\n }\n\n removeCacheTile(x, y, z, t){\n let i = this.tileCache.length;\n while (i--){\n const cacheTile = this.tileCache[i];\n if(cacheTile.x === x && cacheTile.y === y && cacheTile.z === z && cacheTile.t === t){\n this.tileCache.splice(i, 1);\n return\n }\n }\n }\n\n getCacheLabel(id){\n let i = this.labelCache.length;\n while (i--){\n const cacheLabel = this.labelCache[i];\n if(cacheLabel.name === this._UUID && cacheLabel.oid === id) return cacheLabel\n }\n return null;\n }\n\n addCacheLabel(label){\n if(999 < this.labelCache.length){\n this.labelCache.splice(0, 250);\n }\n this.removeCacheLabel(label.oid);\n label.timestamp = new Date().getTime();\n this.labelCache.push(label)\n }\n\n removeCacheLabel(id){\n let i = this.labelCache.length;\n while (i--){\n if (this.labelCache[i].name === this._UUID && this.labelCache[i].oid === id){\n this.labelCache.splice(i, 1);\n return;\n }\n }\n }\n\n HexadecimalConversion(e){\n if (4278190080 === e) return '#000000';\n let x = 4278190080 | parseInt(-Number(e));\n e = '';\n if ((x = x.toString(16).substring(1)).length < 6)\n for (let d = 6 - x.length, t = 0; t < d; t++) e += '0';\n return '#' + e + x;\n }\n\n addLabelAndIco(tile){\n if (tile.pois && tile.pois.length){\n let i = tile.pois.length\n while (i--){\n const item = tile.pois[i]\n let label = this.getCacheLabel(item.oid);\n !label && (label = this.createLabel(item, tile));\n this.addCacheLabel(label);\n }\n }\n this.delaySynchronous();\n }\n\n createLabel(poi, tile){\n if(poi) {\n const entityOption = {\n show: true,\n position: Cartesian3.fromDegrees(...poi.coordinate),\n label: {text: poi.name}\n }\n Object.assign(entityOption.label, this.labelGraphics);\n if(this.serverFirstStyle){\n if(undefined !== poi.fontSize){\n entityOption.label.font = poi.fontSize + 'px ';\n if(undefined !== poi.fontNameIndex && tile.stringTable && tile.stringTable[poi.fontNameIndex]){\n entityOption.label.font += tile.stringTable[poi.fontNameIndex];\n } else {\n entityOption.label.font += 'sans-serif'\n }\n if(!this.labelGraphics.bold && (1 !== poi.fontStyle || 3 !== poi.fontStyle)) {\n entityOption.label.font = 'bold ' + entityOption.label.font;\n }\n if(2 !== poi.fontStyle || 3 !== poi.fontStyle) {\n entityOption.label.font = 'italic ' + entityOption.label.font;\n }\n }\n if(undefined !== poi.fontColor){\n entityOption.label.fillColor = Color.fromCssColorString(this.HexadecimalConversion(poi.fontColor));\n }\n if(undefined !== poi.shiningColor){\n entityOption.label.outlineColor = Color.fromCssColorString(this.HexadecimalConversion(poi.shiningColor));\n }\n if(typeof poi.shiningSize === 'number'){\n entityOption.label.outlineWidth = poi.shiningSize;\n }\n if(undefined !== poi.showBackground){\n entityOption.label.showBackground = poi.showBackground;\n }\n if(undefined !== poi.backgroundColor){\n entityOption.label.backgroundColor = poi.backgroundColor;\n }\n if(undefined !== poi.backgroundPadding){\n entityOption.label.backgroundPadding = poi.backgroundPadding;\n }\n if(undefined !== poi.eyeOffset){\n entityOption.label.eyeOffset = poi.eyeOffset;\n }\n if(undefined !== poi.pixelOffset) {\n entityOption.label.pixelOffset = poi.pixelOffset;\n }\n if(undefined !== poi.style){\n entityOption.label.style = poi.style;\n }\n if(undefined !== poi.scale){\n entityOption.label.scale = poi.scale;\n }\n if(!tile.t){\n if(undefined !== poi.verticalOrigin){\n entityOption.label.verticalOrigin = poi.verticalOrigin;\n }\n if(undefined !== poi.horizontalOrigin){\n entityOption.label.horizontalOrigin = poi.horizontalOrigin;\n }\n }\n }\n if(undefined !== poi.symbolID && -1 < poi.symbolID){\n const s = this.subdomains.length ? (tile.x + tile.y) % this.subdomains.length : '';\n entityOption.billboard = {image: this.getIcoUrl().replace('{id}', tile.symbolID).replace('{s}', this.subdomains[s])};\n Object.assign(entityOption.billboard, this.billboardGraphics)\n if(this.serverFirstStyle){\n if(undefined !== poi.displayHeight){\n entityOption.billboard.width = poi.displayHeight;\n entityOption.billboard.height = poi.displayHeight;\n }\n if (undefined !== poi.eyeOffset) {\n entityOption.billboard.eyeOffset = poi.eyeOffset;\n }\n if (undefined !== poi.pixelOffset) {\n entityOption.billboard.pixelOffset = poi.pixelOffset;\n }\n if (undefined !== poi.rotation) {\n // (_['billboard']['rotation'] = e['rotation'])\n entityOption.billboard.rotation = poi.rotation;\n }\n if (undefined !== poi.alignedAxis) {\n entityOption.billboard.alignedAxis = poi.alignedAxis;\n }\n if (undefined !== poi.color) {\n entityOption.billboard.color = poi.color;\n }\n if (undefined !== poi.scale) {\n entityOption.billboard.scale = poi.scale;\n }\n if(!tile.t){\n if(undefined !== poi.verticalOrigin){\n entityOption.billboard.verticalOrigin = poi.verticalOrigin\n }\n if(undefined !== poi.horizontalOrigin){\n entityOption.billboard.horizontalOrigin = poi.horizontalOrigin\n }\n }\n }\n }\n if(tile.t) {\n entityOption.label.verticalOrigin = VerticalOrigin.CENTER;\n entityOption.label.horizontalOrigin = HorizontalOrigin.CENTER;\n entityOption.billboard.verticalOrigin = VerticalOrigin.CENTER;\n entityOption.billboard.horizontalOrigin = HorizontalOrigin.CENTER;\n }\n const entity = new Entity(entityOption);\n entity.name = tile.x ? this._UUIDRoad : this._UUID;\n entity.oid = poi.oid;\n entity.priority = poi.priority || 0;\n entity.xyz = tile.x + '_' + tile.y + '_' + (tile.z - 1);\n return entity\n }\n }\n\n getIcoUrl(){\n return (this.proxy ? this.proxy.proxy : '') + this.icoUrl;\n }\n\n getTileUrl(){\n return (this.proxy ? this.proxy.proxy : '') + this.url;\n }\n\n getRoadTileUrl(){\n return (this.proxy ? this.proxy.proxy : '') + this.roadUrl;\n }\n\n delaySynchronous(){\n clearTimeout(this._timer2);\n this._timer2 = setTimeout(() => {\n this.synchronousLabel();\n }, 100);\n }\n\n synchronousLabel(){\n let i = this.labelCache.length;\n while (i--){\n const label = this.labelCache[i];\n label.timestamp >= this._latelyRefreshStamp && !this.viewer.entities.contains(label)\n && (this._isInitial && this.aotuCollide && (label.show = false), this.viewer.entities.add(label));\n }\n if(!this._isInitial){\n let j = this.viewer.entities.values.length;\n while (j--){\n const entity = this.viewer.entities.values[j]\n !entity.name || entity.name !== this._UUID && entity.name !== this._UUIDRoad ||\n entity.timestamp < this._latelyRefreshStamp && (this.viewer.entities.remove(entity), j--);\n }\n if(this.aotuCollide) this.collisionDetection()\n }\n }\n\n /**\n * 碰撞检测\n */\n collisionDetection(){\n const entities = this.viewer.entities.values;\n let d = [], s =[], len = entities.length;\n while (len--) {\n const entity = entities[len];\n if(entity.name && (entity.name === this._UUID || entity.name === this._UUIDRoad)){\n let point, i;\n point = SceneTransforms.wgs84ToDrawingBufferCoordinates(this.viewer.scene, entity.position.getValue(0));\n entity.show = true;\n i = this.getLabelReact({point, entity});\n entity.collisionBox = i;\n let n = null, a = d.length;\n while (!n && a--){\n if(d[a].xyz === entity.xyz) n = d[a]\n }\n if(!n){\n n = {xzy: entity.xyz, entities: []};\n d.push(n);\n n.entities.push(entity);\n }\n }\n }\n let dLen = d.length;\n while (dLen--){\n const item = d[dLen];\n item.entities.sort(function (a, b) {return a.priority- b.priority;});\n for (let i = 0; i < item.entities.length; i++) {\n const oItem = item.entities[i];\n if(oItem.show){\n for (let j = i + 1; j < item.entities.length; j++) {\n if(item.entities[j].show && h(oItem.collisionBox, item.entities[j].collisionBox)){\n item.entities[j].show = false;\n }\n }\n s.push(oItem);\n }\n }\n }\n let m = s.length;\n while (m--){\n if(s[m].show){\n s.sort(function (a, b) {return a.priority - b.priority});\n for (let i = m + 1; i < s.length; i++) {\n s[i].show && h(s[m].collisionBox, s[i].collisionBox) && (s[i].show = false);\n }\n }\n }\n }\n\n /**\n * 获取label的区域\n * @param data\n * @return {{x: number, width: *, y: number, height: *}}\n */\n getLabelReact(data){\n const {point, entity} = data;\n let fontSize = parseInt(entity.label.font);\n fontSize = 0 < fontSize ? fontSize : 15;\n const d = entity.label.text.getValue(0).split('\\n');\n let t = 0;\n for (let i = 0; i < d.length; i++) {\n let n = s(d[i]) / 2;\n if(t < n) t = n;\n }\n let a = entity.billboard ? entity.billboard.width.getValue(0) * entity.billboard.scale.getValue(0) : 1;\n let r = entity.billboard ? entity.billboard.height.getValue(0) * entity.billboard.scale.getValue(0) : 1;\n return {\n x: (point ? point.x : -999) - a / 2 - this.collisionPadding[3],\n y: (point ? point.y : -999) - r / 2 - this.collisionPadding[0],\n width: fontSize * entity.label.scale.getValue(0) * t + entity.label.pixelOffset.getValue(0).x + a + this.collisionPadding[1],\n height: fontSize * entity.label.scale.getValue(0) * t + entity.label.pixelOffset.getValue(0).y + a + this.collisionPadding[2]\n }\n }\n\n initTDT(e){\n let x = 0;\n this._isInitial = true;\n this._queueCall(e);\n const t = setInterval(() => {\n if (3 < x) {\n this._isInitial = false;\n clearInterval(t);\n }\n if (x % 2 === 0 && this.aotuCollide) {\n this.collisionDetection()\n }\n x++;\n }, 600);\n return this;\n }\n\n getPropertyValue(e, x, d, t){\n if (undefined !== x[e]) {\n return x[e];\n } else {\n return undefined !== d[e] ? d[e] : t;\n }\n }\n\n unbindEvent(){\n this.viewer.scene.camera.moveEnd.removeEventListener(this._moveEnd, this);\n this.viewer.scene.camera.changed.removeEventListener(this._changed, this);\n }\n\n activate(){\n this._latelyGrid= [];\n this._moveEnd();\n }\n\n destroy(){\n let i = this.viewer.entities.values.length;\n while (i--){\n const entity = this.viewer.entities.values[i];\n !entity.name || entity.name !== this._UUID && entity.name !== this._UUIDRoad || (this.viewer.entities.remove(entity), i--);\n }\n this.viewer.camera.percentageChanged = 0.5;\n this.unbindEvent();\n this.handler = this.handler && this.handler.destroy();\n this.proxy = undefined;\n this.viewer = undefined;\n this.url = undefined;\n this.labelGraphics = undefined;\n this.billboardGraphics = undefined;\n this.aotuCollide = undefined;\n this.collisionPadding = undefined;\n this.tileCache = undefined;\n this.labelCache = undefined;\n this._latelyGrid = undefined;\n this._latelyRefreshStamp = undefined;\n this._roadTileset = undefined;\n }\n\n getLabelVisibility(Label){\n if (!Label) return false;\n const x = this.viewer.canvas.getBoundingClientRect();\n return !(Label.x < -10 || Label.x > x.right + 10) && !(Label.y < -10 || Label.y > x.bottom + 10);\n }\n}\n\nexport default GeoWTFS\n","import GeoTerrainProvider from './GeoTerrainProvider'\nimport GeoWTFS from './GeoWTFS'\n\nexport default {\n GeoTerrainProvider,\n GeoWTFS\n}\n"],"names":["f","e","x","d","t","_","h","i","tileXYToRectangle","defined","Rectangle","intersection","GeoTerrainProvider","CustomHeightmapTerrainProvider","constructor","options","super","callback","ellipsoid","Ellipsoid","WGS84","width","height","url","DeveloperError","this","_dataType","dataType","_url","_subdomains","subdomains","_token","token","_rectangles","_topLevel","_bottomLevel","_terrainDataStructure","heightScale","heightOffset","elementsPerHeight","stride","elementMultiplier","isBigEndian","_availability","provider","overallAvailability","length","availability","TileAvailability","tilingScheme","level","levelRanges","range","addAvailableTileRange","createAvailability","requestTileGeometry","y","request","Promise","reject","resolve","HeightmapTerrainData","buffer","_getVHeightBuffer","_width","_height","childTileMask","_getChildTileMask","structure","s","Array","isArray","replace","tileResource","Resource","fetchArrayBuffer","then","byteLength","inflate","uint8Array","terrainData","_transformBuffer","_skirtHeight","createHeightmapTerrainData","getTileDataAvailable","n","a","r","ArrayBuffer","o","DataView","c","Uint8Array","l","parseInt","setInt8","getFloat32","u","_vHeightBuffer","Uint8ClampedArray","_tilingScheme","maxLevel","rectangle","loadProto","str","parse","minX","maxX","minY","maxY","charAt","match","proto","root","lookup","proto1","proto2","parseData","data","stringTable","pois","enumGeometryType","ePoint","eMultiLineString","ePolygon","enumZCoordType","eCloseGround","eCloseSeaSurface","eRelativelyGround","eAbsolute","decode","console","error","message","version","Version","toString","titleKey","TileKey","StringTable","push","len","POIS","oid","OID","name","Name","symbolID","SymbolID","displayHeight","DisplayHeight","shiningColor","ShiningColor","fontNameIndex","FontNameIndex","fontSize","FontSize","fontColor","FontColor","ZCoordType","zCoordType","geometryType","GeometryType","coordinate","Coordinates","priority","Priority","interates","Interates","fontStyle","FontStyle","shiningSize","ShiningSize","defaultLabelGraphics","font","fillColor","Color","WHITE","scale","outlineColor","BLACK","outlineWidth","style","LabelStyle","FILL_AND_OUTLINE","showBackground","backgroundColor","RED","backgroundPadding","Cartesian2","horizontalOrigin","HorizontalOrigin","CENTER","verticalOrigin","VerticalOrigin","TOP","eyeOffset","Cartesian3","ZERO","pixelOffset","defaultBillboardGraphics","alignedAxis","color","rotation","index","GeoWTFS","viewer","proxy","icoUrl","metadata","roadMetadata","roadUrl","labelGraphics","combine","billboardGraphics","aotuCollide","collisionPadding","serverFirstStyle","tileCache","labelCache","_isInitial","_latelyGrid","_latelyRefreshStamp","_latelyCollisionStamp","guid","createGuid","_UUID","_UUIDRoad","camera","percentageChanged","bindEvent","scene","moveEnd","addEventListener","_moveEnd","changed","_changed","clearTimeout","_timer","surface","globe","_surface","_tilesToRender","_tileLoadQueueHigh","setTimeout","tiles","getTilesToRender","compareArray","_queueCall","delaySynchronous","now","Date","getTime","collisionDetection","map","boundBox","CMath","toDegrees","west","south","east","north","sort","b","splice","Infinity","latelyGrid","flag","tile","minLevel","cacheTile","getCacheTile","addLabelAndIco","getTileUrl","xhr","XMLHttpRequest","open","responseType","that","onload","status","res","cutString","response","tileData","z","addCacheTile","onerror","send","getRoadTileUrl","LabelPoint","X","Y","Feature","properties","Z","slice","Tile","removeCacheTile","getCacheLabel","id","cacheLabel","addCacheLabel","label","removeCacheLabel","timestamp","HexadecimalConversion","Number","substring","item","createLabel","poi","entityOption","show","position","fromDegrees","text","Object","assign","undefined","bold","fromCssColorString","billboard","image","getIcoUrl","entity","Entity","xyz","_timer2","synchronousLabel","entities","contains","add","j","values","remove","point","SceneTransforms","wgs84ToDrawingBufferCoordinates","getValue","getLabelReact","collisionBox","xzy","dLen","oItem","m","split","initTDT","setInterval","clearInterval","getPropertyValue","unbindEvent","removeEventListener","activate","destroy","handler","_roadTileset","getLabelVisibility","Label","canvas","getBoundingClientRect","right","bottom"],"mappings":"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"}
|