UNPKG

@juun-roh/cesium-utils

Version:

Solve common Cesium.js challenges: combine multiple terrain sources, tag and filter entity collections, and add visual highlights.

2 lines (1 loc) 9.54 kB
"use strict";var p=Object.defineProperty;var L=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var R=(n,e)=>{for(var r in e)p(n,r,{get:e[r],enumerable:!0})},O=(n,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of M(e))!A.call(n,t)&&t!==r&&p(n,t,{get:()=>e[t],enumerable:!(i=L(e,t))||i.enumerable});return n};var S=n=>O(p({},"__esModule",{value:!0}),n),C=(n,e,r,i)=>{for(var t=i>1?void 0:i?L(e,r):e,o=n.length-1,s;o>=0;o--)(s=n[o])&&(t=(i?s(e,r,t):s(t))||t);return i&&t&&p(e,r,t),t};var H={};R(H,{TerrainVisualizer:()=>P});module.exports=S(H);var u=require("cesium");var c=require("cesium");var m=require("cesium");var g=class n{static _instance;_level=n._fromEnv();constructor(){}static get(){return this._instance||(this._instance=new n),this._instance}debug(...e){this._emit(n.Level.debug,e)}info(...e){this._emit(n.Level.info,e)}warn(...e){this._emit(n.Level.warn,e)}error(...e){this._emit(n.Level.error,e)}static _fromEnv(){let e=process.env.LOG_LEVEL?.toLowerCase();return e&&e in n.Level?n.Level[e]:n.Level.info}_emit(e,r){if(e<this._level)return;let i=n.Level[e];console[i==="debug"?"log":i](`[${i.toUpperCase()}]`.padEnd(n.LABEL_PAD+2),...r)}};(r=>{let n;(a=>(a[a.debug=0]="debug",a[a.info=1]="info",a[a.warn=2]="warn",a[a.error=3]="error"))(n=r.Level||={}),r.LABEL_PAD=Math.max(...Object.keys(r.Level).map(i=>i.length))})(g||={});var E=g;var D=E.get();function y({once:n=!0,includeStack:e=!1,message:r}){return(i,t,o)=>{let{label:s}=r;function a(){(!n||!y.has(s))&&(D.warn(V(r)),e&&console.trace("Deprecation stack trace:"),y.add(s))}if(t===void 0)return class extends i{constructor(...v){a(),super(...v)}};if(o===void 0){a();return}if(o.get){let v=o.get;if(o.get=function(){return a(),v.call(this)},o.set){let l=o.set;o.set=function(f){a(),l.call(this,f)}}return o}if(o.set){let v=o.set;return o.set=function(l){a(),v.call(this,l)},o}if(typeof o.value=="function"){let v=o.value;return o.value=function(...l){return a(),v.apply(this,l)},o}return o}}(o=>{let n=new Set;function e(s){n.add(s)}o.add=e;function r(){n.clear()}o.clear=r;function i(){return n.size}o.size=i;function t(s){return n.has(s)}o.has=t})(y||={});function V({label:n,since:e,removedIn:r,replacement:i,additional:t}){return[`${n} is deprecated since ${e}.`,i?`Use ${i} instead.`:void 0,`This will be removed in ${r}.`,t].filter(Boolean).join(" ")}var w=y;var h=class h{_regions;_defaultProvider;_fallbackProvider;_tilingScheme;_ready=!1;_availability;_errorEvent;_removeEventListeners;_hasWaterMask;_hasVertexNormals;constructor(e){this._defaultProvider=e.defaultProvider,this._fallbackProvider=e.fallbackProvider||new m.EllipsoidTerrainProvider,this._tilingScheme=e.defaultProvider.tilingScheme,this._regions=e.regions||[],this._availability=e.defaultProvider.availability,this._hasWaterMask=this._defaultProvider.hasWaterMask||this._regions.some(i=>i.provider.hasWaterMask),this._hasVertexNormals=this._defaultProvider.hasVertexNormals||this._regions.some(i=>i.provider.hasVertexNormals),this._errorEvent=new m.Event,this._removeEventListeners=[];let r=new Set;for(let i of this._regions)r.has(i.provider)||(r.add(i.provider),this._removeEventListeners.push(i.provider.errorEvent.addEventListener(t=>{this._errorEvent.raiseEvent(t)})));r.has(this._defaultProvider)||this._removeEventListeners.push(this._defaultProvider.errorEvent.addEventListener(i=>{this._errorEvent.raiseEvent(i)})),r.has(this._fallbackProvider)||this._removeEventListeners.push(this._fallbackProvider.errorEvent.addEventListener(i=>{this._errorEvent.raiseEvent(i)})),this._ready=!0}get ready(){return this._ready}get tilingScheme(){return this._tilingScheme}get availability(){return this._availability}get regions(){return[...this._regions]}get defaultProvider(){return this._defaultProvider}get fallbackProvider(){return this._fallbackProvider}get credit(){let e=new Set,r=[];for(let i of this._regions){if(e.has(i.provider))continue;e.add(i.provider);let t=i.provider.credit?.html;t&&r.push(t)}if(!e.has(this._defaultProvider)){let i=this._defaultProvider.credit?.html;i&&r.push(i)}return new m.Credit(r.join(" "))}get errorEvent(){return this._errorEvent}get hasWaterMask(){return this._hasWaterMask}get hasVertexNormals(){return this._hasVertexNormals}loadTileDataAvailability(e,r,i){for(let t of this._regions)if(h.regionContainsTile(t,e,r,i))return t.provider.loadTileDataAvailability(e,r,i);return this._defaultProvider.loadTileDataAvailability(e,r,i)}getLevelMaximumGeometricError(e){let r=this._defaultProvider.getLevelMaximumGeometricError(e);for(let i of this._regions){let t=i.provider.getLevelMaximumGeometricError(e);t>r&&(r=t)}return r}requestTileGeometry(e,r,i,t){if(this._ready){for(let o of this._regions)if(h.regionContainsTile(o,e,r,i))return o.provider.requestTileGeometry(e,r,i,t);return this._defaultProvider.getTileDataAvailable(e,r,i)?this._defaultProvider.requestTileGeometry(e,r,i,t):this._fallbackProvider.requestTileGeometry(e,r,i,t)}}getTileDataAvailable(e,r,i){for(let t of this._regions)if(h.regionContainsTile(t,e,r,i))return!0;return this._defaultProvider.getTileDataAvailable(e,r,i)}destroy(){for(let e of this._removeEventListeners)e();this._removeEventListeners.length=0,this._ready=!1}};C([w({message:{label:"_fallbackProvider",since:"0.4.6",removedIn:"0.5.0"}})],h.prototype,"fallbackProvider",1);var b=h;(i=>{function n(t,o,s){return new i({regions:t.map(a=>({...a})),defaultProvider:o,fallbackProvider:s})}i.fromTileRanges=n;function e(t,o,s,a){if(t.levels&&!t.levels.includes(a))return!1;if(t.tiles){let d=t.tiles.get(a);if(!d)return!1;let[v,l]=Array.isArray(d.x)?d.x:[d.x,d.x],[f,T]=Array.isArray(d.y)?d.y:[d.y,d.y];return o>=v&&o<=l&&s>=f&&s<=T}return!1}i.regionContainsTile=e;let r;(o=>{function t(s,a,d,v){if(s.levels&&!s.levels.includes(v))return!1;if(s.tiles){let l=s.tiles.get(v);if(!l)return!1;let[f,T]=Array.isArray(l.x)?l.x:[l.x,l.x],[k,I]=Array.isArray(l.y)?l.y:[l.y,l.y];return a>=f&&a<=T&&d>=k&&d<=I}return!1}o.contains=t})(r=i.TerrainRegion||={})})(b||={});var x=b;var _=class extends c.GridImageryProvider{_terrainProvider;_colors;constructor(e){let{terrainProvider:r,colors:i,...t}=e;super(t),this._terrainProvider=r,this._colors=i}requestImage(e,r,i){for(let t of this._terrainProvider.regions)if(this._isInRegionOrUpsampled(t,e,r,i))return this._createCanvasElement(this._colors.get("custom")||c.Color.RED);return this._terrainProvider.defaultProvider.getTileDataAvailable(e,r,i)?this._createCanvasElement(this._colors.get("default")||c.Color.BLUE):this._createCanvasElement(this._colors.get("fallback")||c.Color.GRAY)}_isInRegionOrUpsampled(e,r,i,t){let o=r,s=i,a=t;for(;a>=0;){if(x.TerrainRegion.contains(e,o,s,a))return!0;if(a===0)break;a--,o=Math.floor(o/2),s=Math.floor(s/2)}return!1}_createCanvasElement(e){let r=document.createElement("canvas");r.width=256,r.height=256;let i=r.getContext("2d"),t=e.withAlpha(.3).toCssColorString();if(!i)throw new Error("canvas context undefined");return i.fillStyle=t,i.fillRect(0,0,256,256),Promise.resolve(r)}};var P=class{_viewer;_terrainProvider;_visible=!1;_tileCoordinatesLayer;_hybridImageryLayer;_colors=new Map([["custom",u.Color.RED],["default",u.Color.BLUE],["fallback",u.Color.GRAY],["grid",u.Color.YELLOW]]);constructor(e,r){this._viewer=e,this._terrainProvider=r.terrainProvider,r.colors&&Object.entries(r.colors).forEach(([i,t])=>{this._colors.set(i,t)}),r.tile!==void 0&&r.tile&&this.show()}setTerrainProvider(e){this._terrainProvider=e,this.update()}update(){let e=this._visible,r=!!this._tileCoordinatesLayer,i=this._hybridImageryLayer?.alpha??.5;this.clear(),e&&this.show({showTileCoordinates:r,alpha:i})}clear(){this.hide()}show(e){if(!this._terrainProvider)return;let r=e?.showTileCoordinates??!0,i=e?.alpha??.5;r&&this._ensureTileCoordinatesLayer(),this.showImageryOverlay(i),this._visible=!0}_ensureTileCoordinatesLayer(){this._tileCoordinatesLayer||(this._tileCoordinatesLayer=this._viewer.imageryLayers.addImageryProvider(new u.TileCoordinatesImageryProvider({tilingScheme:this._terrainProvider.tilingScheme,color:u.Color.YELLOW})))}hide(){this._tileCoordinatesLayer&&(this._viewer.imageryLayers.remove(this._tileCoordinatesLayer),this._tileCoordinatesLayer=void 0),this.hideImageryOverlay(),this._visible=!1}setColors(e){Object.entries(e).forEach(([r,i])=>{this._colors.set(r,i)}),this.update()}showImageryOverlay(e=.5){this._hybridImageryLayer&&this._viewer.imageryLayers.remove(this._hybridImageryLayer);let r=new _({terrainProvider:this._terrainProvider,colors:this._colors,tilingScheme:this._terrainProvider.tilingScheme});this._hybridImageryLayer=this._viewer.imageryLayers.addImageryProvider(r),this._hybridImageryLayer.alpha=e,console.log("HybridImageryProvider overlay enabled")}hideImageryOverlay(){this._hybridImageryLayer&&(this._viewer.imageryLayers.remove(this._hybridImageryLayer),this._hybridImageryLayer=void 0,console.log("HybridImageryProvider overlay disabled"))}showTileCoordinates(){this._ensureTileCoordinatesLayer()}hideTileCoordinates(){this._tileCoordinatesLayer&&(this._viewer.imageryLayers.remove(this._tileCoordinatesLayer),this._tileCoordinatesLayer=void 0)}setAlpha(e){this._hybridImageryLayer&&(this._hybridImageryLayer.alpha=e)}flyTo(e,r){this._viewer.camera.flyTo({destination:e,...r,complete:()=>{this._visible&&this.update()}})}get tileCoordinatesVisible(){return!!this._tileCoordinatesLayer}get visible(){return this._visible}get viewer(){return this._viewer}get colors(){return this._colors}get terrainProvider(){return this._terrainProvider}};