@juun-roh/cesium-utils 0.0.13 → 0.0.14
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/chunk-ATVZC562.js +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/viewer/index.cjs +1 -1
- package/dist/viewer/index.d.cts +3 -3
- package/dist/viewer/index.d.ts +3 -3
- package/dist/viewer/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-6ED7EA2J.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Viewer as _}from"cesium";import{defined as f}from"cesium";function p(i,t){if(f(i)&&f(t)){let{camera:n}=i;t.camera.position=n.positionWC.clone(),t.camera.direction=n.directionWC.clone(),t.camera.up=n.upWC.clone()}}function v(i,t,n){let o={baseLayerPicker:i.baseLayerPicker!==void 0,geocoder:i.geocoder!==void 0,homeButton:i.homeButton!==void 0,sceneModePicker:i.sceneModePicker!==void 0,timeline:i.timeline!==void 0,navigationHelpButton:i.navigationHelpButton!==void 0,animation:i.animation!==void 0,fullscreenButton:i.fullscreenButton!==void 0,shouldAnimate:i.clock.shouldAnimate,terrainProvider:i.terrainProvider,requestRenderMode:i.scene.requestRenderMode,infoBox:i.infoBox!==void 0},e=new _(t,{...o,...n});p(i,e);let a=i.imageryLayers;e.imageryLayers.removeAll();for(let r=0;r<a.length;r++){let w=a.get(r);e.imageryLayers.addImageryProvider(w.imageryProvider,r)}e.clock.startTime=i.clock.startTime.clone(),e.clock.stopTime=i.clock.stopTime.clone(),e.clock.currentTime=i.clock.currentTime.clone(),e.clock.multiplier=i.clock.multiplier,e.clock.clockStep=i.clock.clockStep,e.clock.clockRange=i.clock.clockRange,e.clock.shouldAnimate=i.clock.shouldAnimate,e.scene.globe.enableLighting=i.scene.globe.enableLighting,e.scene.globe.depthTestAgainstTerrain=i.scene.globe.depthTestAgainstTerrain,e.scene.screenSpaceCameraController.enableCollisionDetection=i.scene.screenSpaceCameraController.enableCollisionDetection;let s=i.scene.screenSpaceCameraController.tiltEventTypes;s&&(e.scene.screenSpaceCameraController.tiltEventTypes=Array.isArray(s)?[...s]:s);let l=i.scene.screenSpaceCameraController.zoomEventTypes;return l&&(e.scene.screenSpaceCameraController.zoomEventTypes=Array.isArray(l)?[...l]:l),e}import{Cartesian3 as c,ClassificationType as m,Color as T,defined as V,Entity as h,GroundPrimitive as u,HeightReference as y,PolygonGraphics as C,PolygonHierarchy as R,PolylineGraphics as d,RectangleGraphics as b}from"cesium";var g=class i{static instances=new Map;_defaultColor=T.YELLOW.withAlpha(.5);_entity;_entities;constructor(t){this._entities=t.entities,this._entity=this._entities.add(new h({id:`highlight-entity-${Math.random().toString(36).substring(2)}`,show:!1}))}static getInstance(t){let n=t.container;return i.instances.has(n)||i.instances.set(n,new i(t)),i.instances.get(n)}static releaseInstance(t){let n=t.container,o=i.instances.get(n);o&&(o.hide(),o._entity&&t.entities.remove(o._entity),i.instances.delete(n))}show(t,n=this._defaultColor,o=!1){if(!(!V(t)||!this._entity)){this._clearGeometries();try{if(t instanceof h)this._update(t,n,o);else if(t.id instanceof h)this._update(t.id,n,o);else if(t.primitive instanceof u)this._update(t.primitive,n,o);else return;return this._entity.show=!0,this._entity}catch(e){console.error("Failed to highlight object:",e);return}}}_clearGeometries(){this._entity.polygon=void 0,this._entity.polyline=void 0,this._entity.rectangle=void 0}_update(t,n,o){if(t instanceof h){if(t.polygon)if(o){let e=t.polygon.hierarchy?.getValue();if(e&&e.positions){let a;e.positions.length>0&&!c.equals(e.positions[0],e.positions[e.positions.length-1])?a=[...e.positions,e.positions[0]]:a=e.positions,this._entity.polyline=new d({positions:a,material:n,width:2,clampToGround:t.polygon.heightReference?.getValue()===y.CLAMP_TO_GROUND})}}else{let e=t.polygon.hierarchy?.getValue();e&&(this._entity.polygon=new C({hierarchy:e,material:n,heightReference:t.polygon.heightReference?.getValue(),classificationType:t.polygon.classificationType?.getValue()||m.BOTH}))}else if(t.polyline){let e=t.polyline.positions?.getValue();if(e){let a=t.polyline.width?.getValue();this._entity.polyline=new d({positions:e,material:n,width:a+2,clampToGround:t.polyline.clampToGround?.getValue()})}}else if(t.rectangle)if(o){let e=t.rectangle.coordinates?.getValue();if(e){let a=[c.fromRadians(e.west,e.north),c.fromRadians(e.east,e.north),c.fromRadians(e.east,e.south),c.fromRadians(e.west,e.south),c.fromRadians(e.west,e.north)];this._entity.polyline=new d({positions:a,material:n,width:2,clampToGround:t.rectangle.heightReference?.getValue()===y.CLAMP_TO_GROUND})}}else{let e=t.rectangle.coordinates?.getValue();e&&(this._entity.rectangle=new b({coordinates:e,material:n,heightReference:t.rectangle.heightReference?.getValue()}))}}else if(t instanceof u){let e=t.geometryInstances,a=Array.isArray(e)?e[0]:e;if(!a.geometry.attributes.position)return;let s=a.geometry.attributes.position.values,l=[];for(let r=0;r<s.length;r+=3)l.push(new c(s[r],s[r+1],s[r+2]));o?this._entity.polyline=new d({positions:l,material:n,width:2,clampToGround:!0}):this._entity.polygon=new C({hierarchy:new R(l),material:n,heightReference:y.CLAMP_TO_GROUND,classificationType:m.BOTH})}}hide(){this._entity&&(this._entity.show=!1)}get defaultColor(){return this._defaultColor}set defaultColor(t){this._defaultColor=t}get entity(){return this._entity}};export{p as a,v as b,g as c};
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var M=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var B=Object.prototype.hasOwnProperty;var W=(n,e)=>{for(var t in e)M(n,t,{get:e[t],enumerable:!0})},q=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Y(e))!B.call(n,i)&&i!==t&&M(n,i,{get:()=>e[i],enumerable:!(r=F(e,i))||r.enumerable});return n};var $=n=>q(M({},"__esModule",{value:!0}),n);var U={};W(U,{Collection:()=>b,Highlight:()=>w,HybridTerrainProvider:()=>R,TerrainArea:()=>m,TerrainAreaCollection:()=>v,TerrainVisualizer:()=>p,cloneViewer:()=>k,computeRectangle:()=>E,isGetterOnly:()=>C,syncCamera:()=>P});module.exports=$(U);var _=require("cesium");var h=require("cesium");var p=class n{_viewer;_collection;_terrainProvider;_visible=!1;_level=15;_tileCoordinatesLayer;_colors=new Map([["custom",h.Color.RED],["default",h.Color.BLUE],["fallback",h.Color.GRAY],["grid",h.Color.YELLOW]]);constructor(e,t){this._viewer=e,this._collection=new b({collection:e.entities,tag:n.tag.default}),t&&(t.colors&&Object.entries(t.colors).forEach(([r,i])=>{this._colors.set(r,i)}),t.tile!==void 0&&(this._visible=t.tile),t.activeLevel!==void 0&&(this._level=t.activeLevel),t.terrainProvider&&this.setTerrainProvider(t.terrainProvider))}setTerrainProvider(e){this._terrainProvider=e,this.update()}update(){this.clear(),this._visible&&this.show(this._level)}clear(){this._collection.remove(this._collection.tags)}show(e=15){if(!this._terrainProvider)return;this._collection.remove(n.tag.grid),this._level=e;let t=this._terrainProvider.tilingScheme;this._tileCoordinatesLayer||(this._tileCoordinatesLayer=this._viewer.imageryLayers.addImageryProvider(new h.TileCoordinatesImageryProvider({tilingScheme:t,color:h.Color.YELLOW})));let r=(a,l,c)=>{if(this._terrainProvider){for(let d of this._terrainProvider.terrainAreas)if(d.contains(a,l,c))return d.isCustom?this._colors.get("custom")||h.Color.RED:this._colors.get("default")||h.Color.BLUE;if(this._terrainProvider.getTileDataAvailable(a,l,c))return this._colors.get("default")||h.Color.BLUE}return this._colors.get("fallback")||h.Color.TRANSPARENT},i=this._getVisibleRectangle();if(!i)return;function o(a){return a&&Number.isFinite(a.west)&&Number.isFinite(a.south)&&Number.isFinite(a.east)&&Number.isFinite(a.north)&&a.west<=a.east&&a.south<=a.north}if(!o(i)){console.warn("Invalid visible rectangle detected, skipping grid display");return}try{let a=t.positionToTileXY(h.Rectangle.northwest(i),e),l=t.positionToTileXY(h.Rectangle.southeast(i),e);if(!a||!l)return;let c=100,d=Math.min(l.x-a.x+1,c),y=Math.min(l.y-a.y+1,c);for(let u=a.x;u<=a.x+d-1;u++)for(let g=a.y;g<=a.y+y-1;g++)try{let f=t.tileXYToRectangle(u,g,e);if(!o(f)){console.warn(`Invalid rectangle for tile (${u}, ${g}, ${e}), skipping`);continue}let I=r(u,g,e),T=n.createRectangle(f,I.withAlpha(.3));T.properties?.addProperty("tileX",u),T.properties?.addProperty("tileY",g),T.properties?.addProperty("tileLevel",e),this._collection.add(T,n.tag.grid)}catch(f){console.warn(`Error creating tile (${u}, ${g}, ${e}): ${f.message}`);continue}console.log("\u{1F680} ~ TerrainVisualizer ~ showGrid ~ collection:",this._collection),this._visible=!0}catch(a){console.error("Error displaying tile grid:",a)}}hide(){this._collection.remove(n.tag.grid),this._tileCoordinatesLayer&&(this._viewer.imageryLayers.remove(this._tileCoordinatesLayer),this._tileCoordinatesLayer=void 0),this._visible=!1}setColors(e){Object.entries(e).forEach(([t,r])=>{this._colors.set(t,r)}),this.update()}flyTo(e,t){let{rectangle:r}=e;this._viewer.camera.flyTo({destination:r,...t,complete:()=>{this._visible&&this.update()}})}_getVisibleRectangle(){return this._viewer.camera.computeViewRectangle()}get level(){return this._level}set level(e){this._level=e,this._visible&&this.update()}get visible(){return this._visible}get collection(){return this._collection}get viewer(){return this._viewer}get colors(){return this._colors}get terrainProvider(){return this._terrainProvider}};(r=>{r.tag={default:"Terrain Visualizer",boundary:"Terrain Visualizer Boundary",grid:"Terrain Visualizer Tile Grid"};function e(i,o){return new h.Entity({rectangle:{coordinates:i,material:o,heightReference:h.HeightReference.CLAMP_TO_GROUND}})}r.createRectangle=e;function t(i,o,a){let l=a?.tag||"terrain_area_visualization",c=a?.color||h.Color.RED,d=a?.maxTilesToShow||100,y=a?.show??!0,u=a?.alpha||.7,g=a?.tileAlpha||.2,f=new b({collection:o.entities,tag:l}),{rectangle:I}=i;if(f.add(r.createRectangle(I,c.withAlpha(u)),l),y&&i.tileRanges.size>0){let{tilingScheme:T}=i.terrainProvider,x=0;i.tileRanges.forEach((A,z)=>{for(let V=A.start.x;V<=A.end.x&&x<d;V++)for(let O=A.start.y;O<=A.end.y&&x<d;O++){let j=T.tileXYToRectangle(V,O,z);f.add(e(j,c.withAlpha(g)),`${l}_tile`),x++}})}return f}r.visualize=t})(p||={});function C(n,e){let t=!1,r=Object.getOwnPropertyDescriptor(n,e);if(!r){let i=Object.getPrototypeOf(n);for(;i&&!r;)r=Object.getOwnPropertyDescriptor(i,e),i=Object.getPrototypeOf(i)}return r&&r.get&&!r.set&&(t=!0),t}var L=class n{static symbol=Symbol("cesium-item-tag");tag;collection;_valuesCache=null;_tagMap=new Map;_eventListeners=new Map;constructor({collection:e,tag:t}){this.tag=t||"default",this.collection=e}[Symbol.iterator](){return this.values[Symbol.iterator]()}_emit(e,t){let r=this._eventListeners.get(e);if(r){let i={type:e,...t};r.forEach(o=>o(i))}}_addToTagMap(e,t){this._tagMap.has(t)||this._tagMap.set(t,new Set),this._tagMap.get(t)?.add(e)}_removeFromTagMap(e){let t=e[n.symbol],r=this._tagMap.get(t);r&&(r.delete(e),r.size===0&&this._tagMap.delete(t))}_invalidateCache(){this._valuesCache=null}addEventListener(e,t){return this._eventListeners.has(e)||this._eventListeners.set(e,new Set),this._eventListeners.get(e)?.add(t),this}removeEventListener(e,t){return this._eventListeners.get(e)?.delete(t),this}add(e,t=this.tag,r){return Array.isArray(e)?e.forEach(i=>{this.add(i,t)}):(Object.defineProperty(e,n.symbol,{value:t,enumerable:!1,writable:!0,configurable:!0}),this.collection.add(e,r),this._addToTagMap(e,t),this._invalidateCache(),this._emit("add",{items:[e],tag:t})),e}contains(e){if(typeof e=="object")return this.collection.contains(e);let t=this._tagMap.get(e);return!!t&&t.size>0}remove(e){if(typeof e=="object"&&!Array.isArray(e)){let i=this.collection.remove(e);return i&&(this._removeFromTagMap(e),this._invalidateCache(),this._emit("remove",{items:[e]})),i}if(Array.isArray(e)){if(e.length===0)return!1;let i=!1;for(let o of e)this.remove(o)&&(i=!0);return i}let t=this.get(e);if(t.length===0)return!1;let r=!1;for(let i of t)this.remove(i)&&(r=!0);return r}removeAll(){this._tagMap.clear(),this.collection.removeAll(),this._invalidateCache(),this._emit("clear")}get values(){if(this.collection instanceof _.EntityCollection)return this.collection.values;{let e=[];for(let t=0;t<this.collection.length;t++)e.push(this.collection.get(t));return e}}get length(){return this.values?.length||0}get(e){let t=this._tagMap.get(e);return t?Array.from(t):[]}first(e){let t=this._tagMap.get(e);if(t&&t.size>0)return t.values().next().value}get tags(){return Array.from(this._tagMap.keys())}update(e,t){let r=this.get(e);for(let i of r)this._removeFromTagMap(i),Object.defineProperty(i,n.symbol,{value:t,enumerable:!1,writable:!0,configurable:!0}),this._addToTagMap(i,t);return r.length>0&&this._emit("update",{items:r,tag:t}),r.length}show(e){let t=this.get(e);for(let r of t)(0,_.defined)(r.show)&&(r.show=!0);return this}hide(e){let t=this.get(e);for(let r of t)(0,_.defined)(r.show)&&(r.show=!1);return this}toggle(e){let t=this.get(e);for(let r of t)(0,_.defined)(r.show)&&(r.show=!r.show);return this}setProperty(e,t,r=this.tag){let i=this.get(r);for(let o of i)if(e in o&&typeof o[e]!="function"){if(C(o,e))throw Error(`setProperty(${o}, ${e}) failed; The property is readonly.`);o[e]=t}return this}filter(e,t){return(t?this.get(t):this.values).filter(e)}forEach(e,t){(t?this.get(t):this.values).forEach((i,o)=>e(i,o))}map(e,t){return(t?this.get(t):this.values).map(e)}find(e,t){return(t?this.get(t):this.values).find(e)}},b=L;var D=require("cesium");var N=require("cesium");var S=require("cesium");function E(n,e){if(e.size===0)return new S.Rectangle;let t=Number.POSITIVE_INFINITY,r=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY,o=Number.NEGATIVE_INFINITY,a=Array.from(e.keys()),l=Math.min(...a),c=e.get(l);if(c){let{start:d,end:y}=c,u=n.tileXYToRectangle(d.x,d.y,l),g=n.tileXYToRectangle(y.x,y.y,l);t=Math.min(u.west,t),r=Math.min(g.south,r),i=Math.max(g.east,i),o=Math.max(u.north,o)}return new S.Rectangle(t,r,i,o)}var m=class{_terrainProvider;_rectangle;_tileRanges;_ready=!1;_credit;_isCustom;constructor(e){this._terrainProvider=e.terrainProvider,this._tileRanges=e.tileRanges,this._credit=e.credit||"custom",this._isCustom=e.isCustom!==void 0?e.isCustom:!0,this._rectangle=E(e.terrainProvider.tilingScheme,e.tileRanges),e.tileRanges.forEach((t,r)=>{this._terrainProvider.availability?.addAvailableTileRange(r,t.start.x,t.start.y,t.end.x,t.end.y)}),this._ready=!0}contains(e,t,r){if(this._tileRanges.size===0||!this._tileRanges.has(r))return!1;let i=this._tileRanges.get(r);return e>=i.start.x&&e<=i.end.x&&t>=i.start.y&&t<=i.end.y}requestTileGeometry(e,t,r,i){if(!(!this._ready||!this.contains(e,t,r)))return this._terrainProvider.requestTileGeometry(e,t,r,i)}getTileDataAvailable(e,t,r){if(this._tileRanges.size===0||!this._tileRanges.has(r))return!1;let i=this._tileRanges.get(r);return e>=i.start.x&&e<=i.end.x&&t>=i.start.y&&t<=i.end.y}get isCustom(){return this._isCustom}get credit(){return this._credit}get terrainProvider(){return this._terrainProvider}get tileRanges(){return this._tileRanges}get rectangle(){return this._rectangle}get ready(){return this._ready}};(e=>{async function n(t,r,i){let o=i?.credit||"custom",a=await N.CesiumTerrainProvider.fromUrl(t,{...i,credit:o});return new e({terrainProvider:a,tileRanges:r,credit:o})}e.fromUrl=n})(m||={});var v=class extends Array{add(e){if(Array.isArray(e)){for(let r of e)this.add(r);return this.length}let t;return e instanceof m?t=e:t=new m(e),this.push(t)}remove(e){if(Array.isArray(e))return e.forEach(r=>this.remove(r)),this;let t=this.indexOf(e);return t>=0&&this.splice(t,1),this}removeAll(){this.length=0}};var R=class{_terrainAreas=new v;_terrainProvider;_fallbackProvider;_tilingScheme;_ready=!1;_availability;constructor(e){this._terrainProvider=e.terrainProvider,this._fallbackProvider=e.fallbackProvider||new D.EllipsoidTerrainProvider,this._tilingScheme=e.terrainProvider.tilingScheme,this._terrainAreas=new v(...e.terrainAreas),this._availability=e.terrainProvider.availability,this._ready=!0}get ready(){return this._ready}get tilingScheme(){return this._tilingScheme}get availability(){return this._availability}get terrainAreas(){return[...this._terrainAreas]}get defaultProvider(){return this._terrainProvider}get fallbackProvider(){return this._fallbackProvider}get credit(){return this._terrainProvider?.credit}get errorEvent(){return this._terrainProvider.errorEvent}get hasWaterMask(){return this._terrainProvider.hasWaterMask}get hasVertexNormals(){return this._terrainProvider.hasVertexNormals}loadTileDataAvailability(e,t,r){return this._terrainProvider.loadTileDataAvailability(e,t,r)}getLevelMaximumGeometricError(e){return this._terrainProvider.getLevelMaximumGeometricError(e)}requestTileGeometry(e,t,r,i){if(this._ready){for(let o of this._terrainAreas)if(o.contains(e,t,r))return o.requestTileGeometry(e,t,r,i);return this._terrainProvider.getTileDataAvailable(e,t,r)?this._terrainProvider.requestTileGeometry(e,t,r,i):this._fallbackProvider.requestTileGeometry(e,t,r,i)}}getTileDataAvailable(e,t,r){for(let i of this._terrainAreas)if(i.contains(e,t,r))return i.getTileDataAvailable(e,t,r);return this._terrainProvider.getTileDataAvailable(e,t,r)}};var H=require("cesium");var G=require("cesium");function P(n,e){if((0,G.defined)(n)&&(0,G.defined)(e)){let{camera:t}=n;e.camera.position=t.positionWC.clone(),e.camera.direction=t.directionWC.clone(),e.camera.up=t.upWC.clone()}}function k(n,e,t){let r={baseLayerPicker:n.baseLayerPicker!==void 0,geocoder:n.geocoder!==void 0,homeButton:n.homeButton!==void 0,sceneModePicker:n.sceneModePicker!==void 0,timeline:n.timeline!==void 0,navigationHelpButton:n.navigationHelpButton!==void 0,animation:n.animation!==void 0,fullscreenButton:n.fullscreenButton!==void 0,shouldAnimate:n.clock.shouldAnimate,terrainProvider:n.terrainProvider,requestRenderMode:n.scene.requestRenderMode,infoBox:n.infoBox!==void 0},i=new H.Viewer(e,{...r,...t});P(n,i);let o=n.imageryLayers;i.imageryLayers.removeAll();for(let c=0;c<o.length;c++){let d=o.get(c);i.imageryLayers.addImageryProvider(d.imageryProvider,c)}i.clock.startTime=n.clock.startTime.clone(),i.clock.stopTime=n.clock.stopTime.clone(),i.clock.currentTime=n.clock.currentTime.clone(),i.clock.multiplier=n.clock.multiplier,i.clock.clockStep=n.clock.clockStep,i.clock.clockRange=n.clock.clockRange,i.clock.shouldAnimate=n.clock.shouldAnimate,i.scene.globe.enableLighting=n.scene.globe.enableLighting,i.scene.globe.depthTestAgainstTerrain=n.scene.globe.depthTestAgainstTerrain,i.scene.screenSpaceCameraController.enableCollisionDetection=n.scene.screenSpaceCameraController.enableCollisionDetection;let a=n.scene.screenSpaceCameraController.tiltEventTypes;a&&(i.scene.screenSpaceCameraController.tiltEventTypes=Array.isArray(a)?[...a]:a);let l=n.scene.screenSpaceCameraController.zoomEventTypes;return l&&(i.scene.screenSpaceCameraController.zoomEventTypes=Array.isArray(l)?[...l]:l),i}var s=require("cesium"),w=class n{static instances=new Map;_defaultColor=s.Color.YELLOW.withAlpha(.5);_highlightEntity;_viewerEntities;constructor(e){this._viewerEntities=e.entities,this._highlightEntity=this._viewerEntities.add(new s.Entity({id:`highlight-entity-${Math.random().toString(36).substring(2)}`,show:!1}))}static getInstance(e){let t=e.container;return n.instances.has(t)||n.instances.set(t,new n(e)),n.instances.get(t)}static releaseInstance(e){let t=e.container,r=n.instances.get(t);r&&(r.hide(),r._highlightEntity&&e.entities.remove(r._highlightEntity),n.instances.delete(t))}show(e,t=this._defaultColor,r=!1){if(!(!(0,s.defined)(e)||!this._highlightEntity)){this._clearGeometries();try{if(e instanceof s.Entity)this._update(e,t,r);else if(e.id instanceof s.Entity)this._update(e.id,t,r);else if(e.primitive instanceof s.GroundPrimitive)this._update(e.primitive,t,r);else return;return this._highlightEntity.show=!0,this._highlightEntity}catch(i){console.error("Failed to highlight object:",i);return}}}_clearGeometries(){this._highlightEntity&&(this._highlightEntity.polygon=void 0,this._highlightEntity.polyline=void 0,this._highlightEntity.rectangle=void 0)}_update(e,t,r){if(this._highlightEntity){if(e instanceof s.Entity){if(e.polygon)if(r){let i=e.polygon.hierarchy?.getValue();if(i&&i.positions){let o;i.positions.length>0&&!s.Cartesian3.equals(i.positions[0],i.positions[i.positions.length-1])?o=[...i.positions,i.positions[0]]:o=i.positions,this._highlightEntity.polyline=new s.PolylineGraphics({positions:o,material:t,width:2,clampToGround:e.polygon.heightReference?.getValue()===s.HeightReference.CLAMP_TO_GROUND})}}else{let i=e.polygon.hierarchy?.getValue();i&&(this._highlightEntity.polygon=new s.PolygonGraphics({hierarchy:i,material:t,heightReference:e.polygon.heightReference?.getValue(),classificationType:e.polygon.classificationType?.getValue()||s.ClassificationType.BOTH}))}else if(e.polyline){let i=e.polyline.positions?.getValue();if(i){let o=e.polyline.width?.getValue()||2;this._highlightEntity.polyline=new s.PolylineGraphics({positions:i,material:t,width:o+2,clampToGround:e.polyline.clampToGround?.getValue()})}}else if(e.rectangle)if(r){let i=e.rectangle.coordinates?.getValue();if(i){let o=[s.Cartesian3.fromRadians(i.west,i.north),s.Cartesian3.fromRadians(i.east,i.north),s.Cartesian3.fromRadians(i.east,i.south),s.Cartesian3.fromRadians(i.west,i.south),s.Cartesian3.fromRadians(i.west,i.north)];this._highlightEntity.polyline=new s.PolylineGraphics({positions:o,material:t,width:2,clampToGround:e.rectangle.heightReference?.getValue()===s.HeightReference.CLAMP_TO_GROUND})}}else{let i=e.rectangle.coordinates?.getValue();i&&(this._highlightEntity.rectangle=new s.RectangleGraphics({coordinates:i,material:t,heightReference:e.rectangle.heightReference?.getValue()}))}}else if(e instanceof s.GroundPrimitive){let i=e.geometryInstances,o=Array.isArray(i)?i[0]:i;if(!o||!o.geometry.attributes.position)return;let a=o.geometry.attributes.position.values,l=[];for(let c=0;c<a.length;c+=3)l.push(new s.Cartesian3(a[c],a[c+1],a[c+2]));r?this._highlightEntity.polyline=new s.PolylineGraphics({positions:l,material:t,width:2,clampToGround:!0}):this._highlightEntity.polygon=new s.PolygonGraphics({hierarchy:new s.PolygonHierarchy(l),material:t,heightReference:s.HeightReference.CLAMP_TO_GROUND,classificationType:s.ClassificationType.BOTH})}}}hide(){this._highlightEntity&&(this._highlightEntity.show=!1)}get defaultColor(){return this._defaultColor}set defaultColor(e){this._defaultColor=e}get highlightEntity(){return this._highlightEntity}};
|
|
1
|
+
"use strict";var M=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var B=Object.prototype.hasOwnProperty;var W=(n,e)=>{for(var t in e)M(n,t,{get:e[t],enumerable:!0})},q=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Y(e))!B.call(n,i)&&i!==t&&M(n,i,{get:()=>e[i],enumerable:!(r=F(e,i))||r.enumerable});return n};var $=n=>q(M({},"__esModule",{value:!0}),n);var U={};W(U,{Collection:()=>b,Highlight:()=>w,HybridTerrainProvider:()=>E,TerrainArea:()=>g,TerrainAreaCollection:()=>v,TerrainVisualizer:()=>p,cloneViewer:()=>k,computeRectangle:()=>R,isGetterOnly:()=>C,syncCamera:()=>P});module.exports=$(U);var _=require("cesium");var d=require("cesium");var p=class n{_viewer;_collection;_terrainProvider;_visible=!1;_level=15;_tileCoordinatesLayer;_colors=new Map([["custom",d.Color.RED],["default",d.Color.BLUE],["fallback",d.Color.GRAY],["grid",d.Color.YELLOW]]);constructor(e,t){this._viewer=e,this._collection=new b({collection:e.entities,tag:n.tag.default}),t&&(t.colors&&Object.entries(t.colors).forEach(([r,i])=>{this._colors.set(r,i)}),t.tile!==void 0&&(this._visible=t.tile),t.activeLevel!==void 0&&(this._level=t.activeLevel),t.terrainProvider&&this.setTerrainProvider(t.terrainProvider))}setTerrainProvider(e){this._terrainProvider=e,this.update()}update(){this.clear(),this._visible&&this.show(this._level)}clear(){this._collection.remove(this._collection.tags)}show(e=15){if(!this._terrainProvider)return;this._collection.remove(n.tag.grid),this._level=e;let t=this._terrainProvider.tilingScheme;this._tileCoordinatesLayer||(this._tileCoordinatesLayer=this._viewer.imageryLayers.addImageryProvider(new d.TileCoordinatesImageryProvider({tilingScheme:t,color:d.Color.YELLOW})));let r=(a,l,c)=>{if(this._terrainProvider){for(let h of this._terrainProvider.terrainAreas)if(h.contains(a,l,c))return h.isCustom?this._colors.get("custom")||d.Color.RED:this._colors.get("default")||d.Color.BLUE;if(this._terrainProvider.getTileDataAvailable(a,l,c))return this._colors.get("default")||d.Color.BLUE}return this._colors.get("fallback")||d.Color.TRANSPARENT},i=this._getVisibleRectangle();if(!i)return;function o(a){return a&&Number.isFinite(a.west)&&Number.isFinite(a.south)&&Number.isFinite(a.east)&&Number.isFinite(a.north)&&a.west<=a.east&&a.south<=a.north}if(!o(i)){console.warn("Invalid visible rectangle detected, skipping grid display");return}try{let a=t.positionToTileXY(d.Rectangle.northwest(i),e),l=t.positionToTileXY(d.Rectangle.southeast(i),e);if(!a||!l)return;let c=100,h=Math.min(l.x-a.x+1,c),y=Math.min(l.y-a.y+1,c);for(let u=a.x;u<=a.x+h-1;u++)for(let m=a.y;m<=a.y+y-1;m++)try{let f=t.tileXYToRectangle(u,m,e);if(!o(f)){console.warn(`Invalid rectangle for tile (${u}, ${m}, ${e}), skipping`);continue}let I=r(u,m,e),T=n.createRectangle(f,I.withAlpha(.3));T.properties?.addProperty("tileX",u),T.properties?.addProperty("tileY",m),T.properties?.addProperty("tileLevel",e),this._collection.add(T,n.tag.grid)}catch(f){console.warn(`Error creating tile (${u}, ${m}, ${e}): ${f.message}`);continue}console.log("\u{1F680} ~ TerrainVisualizer ~ showGrid ~ collection:",this._collection),this._visible=!0}catch(a){console.error("Error displaying tile grid:",a)}}hide(){this._collection.remove(n.tag.grid),this._tileCoordinatesLayer&&(this._viewer.imageryLayers.remove(this._tileCoordinatesLayer),this._tileCoordinatesLayer=void 0),this._visible=!1}setColors(e){Object.entries(e).forEach(([t,r])=>{this._colors.set(t,r)}),this.update()}flyTo(e,t){let{rectangle:r}=e;this._viewer.camera.flyTo({destination:r,...t,complete:()=>{this._visible&&this.update()}})}_getVisibleRectangle(){return this._viewer.camera.computeViewRectangle()}get level(){return this._level}set level(e){this._level=e,this._visible&&this.update()}get visible(){return this._visible}get collection(){return this._collection}get viewer(){return this._viewer}get colors(){return this._colors}get terrainProvider(){return this._terrainProvider}};(r=>{r.tag={default:"Terrain Visualizer",boundary:"Terrain Visualizer Boundary",grid:"Terrain Visualizer Tile Grid"};function e(i,o){return new d.Entity({rectangle:{coordinates:i,material:o,heightReference:d.HeightReference.CLAMP_TO_GROUND}})}r.createRectangle=e;function t(i,o,a){let l=a?.tag||"terrain_area_visualization",c=a?.color||d.Color.RED,h=a?.maxTilesToShow||100,y=a?.show??!0,u=a?.alpha||.7,m=a?.tileAlpha||.2,f=new b({collection:o.entities,tag:l}),{rectangle:I}=i;if(f.add(r.createRectangle(I,c.withAlpha(u)),l),y&&i.tileRanges.size>0){let{tilingScheme:T}=i.terrainProvider,x=0;i.tileRanges.forEach((A,z)=>{for(let V=A.start.x;V<=A.end.x&&x<h;V++)for(let O=A.start.y;O<=A.end.y&&x<h;O++){let j=T.tileXYToRectangle(V,O,z);f.add(e(j,c.withAlpha(m)),`${l}_tile`),x++}})}return f}r.visualize=t})(p||={});function C(n,e){let t=!1,r=Object.getOwnPropertyDescriptor(n,e);if(!r){let i=Object.getPrototypeOf(n);for(;i&&!r;)r=Object.getOwnPropertyDescriptor(i,e),i=Object.getPrototypeOf(i)}return r&&r.get&&!r.set&&(t=!0),t}var L=class n{static symbol=Symbol("cesium-item-tag");tag;collection;_valuesCache=null;_tagMap=new Map;_eventListeners=new Map;constructor({collection:e,tag:t}){this.tag=t||"default",this.collection=e}[Symbol.iterator](){return this.values[Symbol.iterator]()}_emit(e,t){let r=this._eventListeners.get(e);if(r){let i={type:e,...t};r.forEach(o=>o(i))}}_addToTagMap(e,t){this._tagMap.has(t)||this._tagMap.set(t,new Set),this._tagMap.get(t)?.add(e)}_removeFromTagMap(e){let t=e[n.symbol],r=this._tagMap.get(t);r&&(r.delete(e),r.size===0&&this._tagMap.delete(t))}_invalidateCache(){this._valuesCache=null}addEventListener(e,t){return this._eventListeners.has(e)||this._eventListeners.set(e,new Set),this._eventListeners.get(e)?.add(t),this}removeEventListener(e,t){return this._eventListeners.get(e)?.delete(t),this}add(e,t=this.tag,r){return Array.isArray(e)?e.forEach(i=>{this.add(i,t)}):(Object.defineProperty(e,n.symbol,{value:t,enumerable:!1,writable:!0,configurable:!0}),this.collection.add(e,r),this._addToTagMap(e,t),this._invalidateCache(),this._emit("add",{items:[e],tag:t})),e}contains(e){if(typeof e=="object")return this.collection.contains(e);let t=this._tagMap.get(e);return!!t&&t.size>0}remove(e){if(typeof e=="object"&&!Array.isArray(e)){let i=this.collection.remove(e);return i&&(this._removeFromTagMap(e),this._invalidateCache(),this._emit("remove",{items:[e]})),i}if(Array.isArray(e)){if(e.length===0)return!1;let i=!1;for(let o of e)this.remove(o)&&(i=!0);return i}let t=this.get(e);if(t.length===0)return!1;let r=!1;for(let i of t)this.remove(i)&&(r=!0);return r}removeAll(){this._tagMap.clear(),this.collection.removeAll(),this._invalidateCache(),this._emit("clear")}get values(){if(this.collection instanceof _.EntityCollection)return this.collection.values;{let e=[];for(let t=0;t<this.collection.length;t++)e.push(this.collection.get(t));return e}}get length(){return this.values?.length||0}get(e){let t=this._tagMap.get(e);return t?Array.from(t):[]}first(e){let t=this._tagMap.get(e);if(t&&t.size>0)return t.values().next().value}get tags(){return Array.from(this._tagMap.keys())}update(e,t){let r=this.get(e);for(let i of r)this._removeFromTagMap(i),Object.defineProperty(i,n.symbol,{value:t,enumerable:!1,writable:!0,configurable:!0}),this._addToTagMap(i,t);return r.length>0&&this._emit("update",{items:r,tag:t}),r.length}show(e){let t=this.get(e);for(let r of t)(0,_.defined)(r.show)&&(r.show=!0);return this}hide(e){let t=this.get(e);for(let r of t)(0,_.defined)(r.show)&&(r.show=!1);return this}toggle(e){let t=this.get(e);for(let r of t)(0,_.defined)(r.show)&&(r.show=!r.show);return this}setProperty(e,t,r=this.tag){let i=this.get(r);for(let o of i)if(e in o&&typeof o[e]!="function"){if(C(o,e))throw Error(`setProperty(${o}, ${e}) failed; The property is readonly.`);o[e]=t}return this}filter(e,t){return(t?this.get(t):this.values).filter(e)}forEach(e,t){(t?this.get(t):this.values).forEach((i,o)=>e(i,o))}map(e,t){return(t?this.get(t):this.values).map(e)}find(e,t){return(t?this.get(t):this.values).find(e)}},b=L;var D=require("cesium");var N=require("cesium");var S=require("cesium");function R(n,e){if(e.size===0)return new S.Rectangle;let t=Number.POSITIVE_INFINITY,r=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY,o=Number.NEGATIVE_INFINITY,a=Array.from(e.keys()),l=Math.min(...a),c=e.get(l);if(c){let{start:h,end:y}=c,u=n.tileXYToRectangle(h.x,h.y,l),m=n.tileXYToRectangle(y.x,y.y,l);t=Math.min(u.west,t),r=Math.min(m.south,r),i=Math.max(m.east,i),o=Math.max(u.north,o)}return new S.Rectangle(t,r,i,o)}var g=class{_terrainProvider;_rectangle;_tileRanges;_ready=!1;_credit;_isCustom;constructor(e){this._terrainProvider=e.terrainProvider,this._tileRanges=e.tileRanges,this._credit=e.credit||"custom",this._isCustom=e.isCustom!==void 0?e.isCustom:!0,this._rectangle=R(e.terrainProvider.tilingScheme,e.tileRanges),e.tileRanges.forEach((t,r)=>{this._terrainProvider.availability?.addAvailableTileRange(r,t.start.x,t.start.y,t.end.x,t.end.y)}),this._ready=!0}contains(e,t,r){if(this._tileRanges.size===0||!this._tileRanges.has(r))return!1;let i=this._tileRanges.get(r);return e>=i.start.x&&e<=i.end.x&&t>=i.start.y&&t<=i.end.y}requestTileGeometry(e,t,r,i){if(!(!this._ready||!this.contains(e,t,r)))return this._terrainProvider.requestTileGeometry(e,t,r,i)}getTileDataAvailable(e,t,r){if(this._tileRanges.size===0||!this._tileRanges.has(r))return!1;let i=this._tileRanges.get(r);return e>=i.start.x&&e<=i.end.x&&t>=i.start.y&&t<=i.end.y}get isCustom(){return this._isCustom}get credit(){return this._credit}get terrainProvider(){return this._terrainProvider}get tileRanges(){return this._tileRanges}get rectangle(){return this._rectangle}get ready(){return this._ready}};(e=>{async function n(t,r,i){let o=i?.credit||"custom",a=await N.CesiumTerrainProvider.fromUrl(t,{...i,credit:o});return new e({terrainProvider:a,tileRanges:r,credit:o})}e.fromUrl=n})(g||={});var v=class extends Array{add(e){if(Array.isArray(e)){for(let r of e)this.add(r);return this.length}let t;return e instanceof g?t=e:t=new g(e),this.push(t)}remove(e){if(Array.isArray(e))return e.forEach(r=>this.remove(r)),this;let t=this.indexOf(e);return t>=0&&this.splice(t,1),this}removeAll(){this.length=0}};var E=class{_terrainAreas=new v;_terrainProvider;_fallbackProvider;_tilingScheme;_ready=!1;_availability;constructor(e){this._terrainProvider=e.terrainProvider,this._fallbackProvider=e.fallbackProvider||new D.EllipsoidTerrainProvider,this._tilingScheme=e.terrainProvider.tilingScheme,this._terrainAreas=new v(...e.terrainAreas),this._availability=e.terrainProvider.availability,this._ready=!0}get ready(){return this._ready}get tilingScheme(){return this._tilingScheme}get availability(){return this._availability}get terrainAreas(){return[...this._terrainAreas]}get defaultProvider(){return this._terrainProvider}get fallbackProvider(){return this._fallbackProvider}get credit(){return this._terrainProvider?.credit}get errorEvent(){return this._terrainProvider.errorEvent}get hasWaterMask(){return this._terrainProvider.hasWaterMask}get hasVertexNormals(){return this._terrainProvider.hasVertexNormals}loadTileDataAvailability(e,t,r){return this._terrainProvider.loadTileDataAvailability(e,t,r)}getLevelMaximumGeometricError(e){return this._terrainProvider.getLevelMaximumGeometricError(e)}requestTileGeometry(e,t,r,i){if(this._ready){for(let o of this._terrainAreas)if(o.contains(e,t,r))return o.requestTileGeometry(e,t,r,i);return this._terrainProvider.getTileDataAvailable(e,t,r)?this._terrainProvider.requestTileGeometry(e,t,r,i):this._fallbackProvider.requestTileGeometry(e,t,r,i)}}getTileDataAvailable(e,t,r){for(let i of this._terrainAreas)if(i.contains(e,t,r))return i.getTileDataAvailable(e,t,r);return this._terrainProvider.getTileDataAvailable(e,t,r)}};var H=require("cesium");var G=require("cesium");function P(n,e){if((0,G.defined)(n)&&(0,G.defined)(e)){let{camera:t}=n;e.camera.position=t.positionWC.clone(),e.camera.direction=t.directionWC.clone(),e.camera.up=t.upWC.clone()}}function k(n,e,t){let r={baseLayerPicker:n.baseLayerPicker!==void 0,geocoder:n.geocoder!==void 0,homeButton:n.homeButton!==void 0,sceneModePicker:n.sceneModePicker!==void 0,timeline:n.timeline!==void 0,navigationHelpButton:n.navigationHelpButton!==void 0,animation:n.animation!==void 0,fullscreenButton:n.fullscreenButton!==void 0,shouldAnimate:n.clock.shouldAnimate,terrainProvider:n.terrainProvider,requestRenderMode:n.scene.requestRenderMode,infoBox:n.infoBox!==void 0},i=new H.Viewer(e,{...r,...t});P(n,i);let o=n.imageryLayers;i.imageryLayers.removeAll();for(let c=0;c<o.length;c++){let h=o.get(c);i.imageryLayers.addImageryProvider(h.imageryProvider,c)}i.clock.startTime=n.clock.startTime.clone(),i.clock.stopTime=n.clock.stopTime.clone(),i.clock.currentTime=n.clock.currentTime.clone(),i.clock.multiplier=n.clock.multiplier,i.clock.clockStep=n.clock.clockStep,i.clock.clockRange=n.clock.clockRange,i.clock.shouldAnimate=n.clock.shouldAnimate,i.scene.globe.enableLighting=n.scene.globe.enableLighting,i.scene.globe.depthTestAgainstTerrain=n.scene.globe.depthTestAgainstTerrain,i.scene.screenSpaceCameraController.enableCollisionDetection=n.scene.screenSpaceCameraController.enableCollisionDetection;let a=n.scene.screenSpaceCameraController.tiltEventTypes;a&&(i.scene.screenSpaceCameraController.tiltEventTypes=Array.isArray(a)?[...a]:a);let l=n.scene.screenSpaceCameraController.zoomEventTypes;return l&&(i.scene.screenSpaceCameraController.zoomEventTypes=Array.isArray(l)?[...l]:l),i}var s=require("cesium"),w=class n{static instances=new Map;_defaultColor=s.Color.YELLOW.withAlpha(.5);_entity;_entities;constructor(e){this._entities=e.entities,this._entity=this._entities.add(new s.Entity({id:`highlight-entity-${Math.random().toString(36).substring(2)}`,show:!1}))}static getInstance(e){let t=e.container;return n.instances.has(t)||n.instances.set(t,new n(e)),n.instances.get(t)}static releaseInstance(e){let t=e.container,r=n.instances.get(t);r&&(r.hide(),r._entity&&e.entities.remove(r._entity),n.instances.delete(t))}show(e,t=this._defaultColor,r=!1){if(!(!(0,s.defined)(e)||!this._entity)){this._clearGeometries();try{if(e instanceof s.Entity)this._update(e,t,r);else if(e.id instanceof s.Entity)this._update(e.id,t,r);else if(e.primitive instanceof s.GroundPrimitive)this._update(e.primitive,t,r);else return;return this._entity.show=!0,this._entity}catch(i){console.error("Failed to highlight object:",i);return}}}_clearGeometries(){this._entity.polygon=void 0,this._entity.polyline=void 0,this._entity.rectangle=void 0}_update(e,t,r){if(e instanceof s.Entity){if(e.polygon)if(r){let i=e.polygon.hierarchy?.getValue();if(i&&i.positions){let o;i.positions.length>0&&!s.Cartesian3.equals(i.positions[0],i.positions[i.positions.length-1])?o=[...i.positions,i.positions[0]]:o=i.positions,this._entity.polyline=new s.PolylineGraphics({positions:o,material:t,width:2,clampToGround:e.polygon.heightReference?.getValue()===s.HeightReference.CLAMP_TO_GROUND})}}else{let i=e.polygon.hierarchy?.getValue();i&&(this._entity.polygon=new s.PolygonGraphics({hierarchy:i,material:t,heightReference:e.polygon.heightReference?.getValue(),classificationType:e.polygon.classificationType?.getValue()||s.ClassificationType.BOTH}))}else if(e.polyline){let i=e.polyline.positions?.getValue();if(i){let o=e.polyline.width?.getValue();this._entity.polyline=new s.PolylineGraphics({positions:i,material:t,width:o+2,clampToGround:e.polyline.clampToGround?.getValue()})}}else if(e.rectangle)if(r){let i=e.rectangle.coordinates?.getValue();if(i){let o=[s.Cartesian3.fromRadians(i.west,i.north),s.Cartesian3.fromRadians(i.east,i.north),s.Cartesian3.fromRadians(i.east,i.south),s.Cartesian3.fromRadians(i.west,i.south),s.Cartesian3.fromRadians(i.west,i.north)];this._entity.polyline=new s.PolylineGraphics({positions:o,material:t,width:2,clampToGround:e.rectangle.heightReference?.getValue()===s.HeightReference.CLAMP_TO_GROUND})}}else{let i=e.rectangle.coordinates?.getValue();i&&(this._entity.rectangle=new s.RectangleGraphics({coordinates:i,material:t,heightReference:e.rectangle.heightReference?.getValue()}))}}else if(e instanceof s.GroundPrimitive){let i=e.geometryInstances,o=Array.isArray(i)?i[0]:i;if(!o.geometry.attributes.position)return;let a=o.geometry.attributes.position.values,l=[];for(let c=0;c<a.length;c+=3)l.push(new s.Cartesian3(a[c],a[c+1],a[c+2]));r?this._entity.polyline=new s.PolylineGraphics({positions:l,material:t,width:2,clampToGround:!0}):this._entity.polygon=new s.PolygonGraphics({hierarchy:new s.PolygonHierarchy(l),material:t,heightReference:s.HeightReference.CLAMP_TO_GROUND,classificationType:s.ClassificationType.BOTH})}}hide(){this._entity&&(this._entity.show=!1)}get defaultColor(){return this._defaultColor}set defaultColor(e){this._defaultColor=e}get entity(){return this._entity}};
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as r,b as o,c as e}from"./chunk-Q4LRNVAX.js";import{a as n,b as a,c as l}from"./chunk-ATVZC562.js";import{a as i,b as t,c as m,d as p}from"./chunk-OFZW33MB.js";export{e as Collection,l as Highlight,p as HybridTerrainProvider,t as TerrainArea,m as TerrainAreaCollection,r as TerrainVisualizer,a as cloneViewer,i as computeRectangle,o as isGetterOnly,n as syncCamera};
|
package/dist/viewer/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var p=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var w=Object.prototype.hasOwnProperty;var _=(i,t)=>{for(var o in t)p(i,o,{get:t[o],enumerable:!0})},v=(i,t,o,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of C(t))!w.call(i,e)&&e!==o&&p(i,e,{get:()=>t[e],enumerable:!(a=u(t,e))||a.enumerable});return i};var T=i=>v(p({},"__esModule",{value:!0}),i);var V={};_(V,{Highlight:()=>d,cloneViewer:()=>f,syncCamera:()=>h});module.exports=T(V);var g=require("cesium");var y=require("cesium");function h(i,t){if((0,y.defined)(i)&&(0,y.defined)(t)){let{camera:o}=i;t.camera.position=o.positionWC.clone(),t.camera.direction=o.directionWC.clone(),t.camera.up=o.upWC.clone()}}function f(i,t,o){let a={baseLayerPicker:i.baseLayerPicker!==void 0,geocoder:i.geocoder!==void 0,homeButton:i.homeButton!==void 0,sceneModePicker:i.sceneModePicker!==void 0,timeline:i.timeline!==void 0,navigationHelpButton:i.navigationHelpButton!==void 0,animation:i.animation!==void 0,fullscreenButton:i.fullscreenButton!==void 0,shouldAnimate:i.clock.shouldAnimate,terrainProvider:i.terrainProvider,requestRenderMode:i.scene.requestRenderMode,infoBox:i.infoBox!==void 0},e=new g.Viewer(t,{...a,...o});h(i,e);let r=i.imageryLayers;e.imageryLayers.removeAll();for(let s=0;s<r.length;s++){let m=r.get(s);e.imageryLayers.addImageryProvider(m.imageryProvider,s)}e.clock.startTime=i.clock.startTime.clone(),e.clock.stopTime=i.clock.stopTime.clone(),e.clock.currentTime=i.clock.currentTime.clone(),e.clock.multiplier=i.clock.multiplier,e.clock.clockStep=i.clock.clockStep,e.clock.clockRange=i.clock.clockRange,e.clock.shouldAnimate=i.clock.shouldAnimate,e.scene.globe.enableLighting=i.scene.globe.enableLighting,e.scene.globe.depthTestAgainstTerrain=i.scene.globe.depthTestAgainstTerrain,e.scene.screenSpaceCameraController.enableCollisionDetection=i.scene.screenSpaceCameraController.enableCollisionDetection;let l=i.scene.screenSpaceCameraController.tiltEventTypes;l&&(e.scene.screenSpaceCameraController.tiltEventTypes=Array.isArray(l)?[...l]:l);let c=i.scene.screenSpaceCameraController.zoomEventTypes;return c&&(e.scene.screenSpaceCameraController.zoomEventTypes=Array.isArray(c)?[...c]:c),e}var n=require("cesium"),d=class i{static instances=new Map;_defaultColor=n.Color.YELLOW.withAlpha(.5);_entity;_entities;constructor(t){this._entities=t.entities,this._entity=this._entities.add(new n.Entity({id:`highlight-entity-${Math.random().toString(36).substring(2)}`,show:!1}))}static getInstance(t){let o=t.container;return i.instances.has(o)||i.instances.set(o,new i(t)),i.instances.get(o)}static releaseInstance(t){let o=t.container,a=i.instances.get(o);a&&(a.hide(),a._entity&&t.entities.remove(a._entity),i.instances.delete(o))}show(t,o=this._defaultColor,a=!1){if(!(!(0,n.defined)(t)||!this._entity)){this._clearGeometries();try{if(t instanceof n.Entity)this._update(t,o,a);else if(t.id instanceof n.Entity)this._update(t.id,o,a);else if(t.primitive instanceof n.GroundPrimitive)this._update(t.primitive,o,a);else return;return this._entity.show=!0,this._entity}catch(e){console.error("Failed to highlight object:",e);return}}}_clearGeometries(){this._entity.polygon=void 0,this._entity.polyline=void 0,this._entity.rectangle=void 0}_update(t,o,a){if(t instanceof n.Entity){if(t.polygon)if(a){let e=t.polygon.hierarchy?.getValue();if(e&&e.positions){let r;e.positions.length>0&&!n.Cartesian3.equals(e.positions[0],e.positions[e.positions.length-1])?r=[...e.positions,e.positions[0]]:r=e.positions,this._entity.polyline=new n.PolylineGraphics({positions:r,material:o,width:2,clampToGround:t.polygon.heightReference?.getValue()===n.HeightReference.CLAMP_TO_GROUND})}}else{let e=t.polygon.hierarchy?.getValue();e&&(this._entity.polygon=new n.PolygonGraphics({hierarchy:e,material:o,heightReference:t.polygon.heightReference?.getValue(),classificationType:t.polygon.classificationType?.getValue()||n.ClassificationType.BOTH}))}else if(t.polyline){let e=t.polyline.positions?.getValue();if(e){let r=t.polyline.width?.getValue();this._entity.polyline=new n.PolylineGraphics({positions:e,material:o,width:r+2,clampToGround:t.polyline.clampToGround?.getValue()})}}else if(t.rectangle)if(a){let e=t.rectangle.coordinates?.getValue();if(e){let r=[n.Cartesian3.fromRadians(e.west,e.north),n.Cartesian3.fromRadians(e.east,e.north),n.Cartesian3.fromRadians(e.east,e.south),n.Cartesian3.fromRadians(e.west,e.south),n.Cartesian3.fromRadians(e.west,e.north)];this._entity.polyline=new n.PolylineGraphics({positions:r,material:o,width:2,clampToGround:t.rectangle.heightReference?.getValue()===n.HeightReference.CLAMP_TO_GROUND})}}else{let e=t.rectangle.coordinates?.getValue();e&&(this._entity.rectangle=new n.RectangleGraphics({coordinates:e,material:o,heightReference:t.rectangle.heightReference?.getValue()}))}}else if(t instanceof n.GroundPrimitive){let e=t.geometryInstances,r=Array.isArray(e)?e[0]:e;if(!r.geometry.attributes.position)return;let l=r.geometry.attributes.position.values,c=[];for(let s=0;s<l.length;s+=3)c.push(new n.Cartesian3(l[s],l[s+1],l[s+2]));a?this._entity.polyline=new n.PolylineGraphics({positions:c,material:o,width:2,clampToGround:!0}):this._entity.polygon=new n.PolygonGraphics({hierarchy:new n.PolygonHierarchy(c),material:o,heightReference:n.HeightReference.CLAMP_TO_GROUND,classificationType:n.ClassificationType.BOTH})}}hide(){this._entity&&(this._entity.show=!1)}get defaultColor(){return this._defaultColor}set defaultColor(t){this._defaultColor=t}get entity(){return this._entity}};
|
package/dist/viewer/index.d.cts
CHANGED
|
@@ -38,8 +38,8 @@ declare function cloneViewer(source: Viewer, container: Element | string, option
|
|
|
38
38
|
declare class Highlight {
|
|
39
39
|
private static instances;
|
|
40
40
|
private _defaultColor;
|
|
41
|
-
private
|
|
42
|
-
private
|
|
41
|
+
private _entity;
|
|
42
|
+
private _entities;
|
|
43
43
|
/**
|
|
44
44
|
* Creates a new `Highlight` instance.
|
|
45
45
|
* @private Use {@link getInstance `Highlight.getInstance()`}
|
|
@@ -86,7 +86,7 @@ declare class Highlight {
|
|
|
86
86
|
*/
|
|
87
87
|
set defaultColor(color: Color);
|
|
88
88
|
/** Gets the highlight entity */
|
|
89
|
-
get
|
|
89
|
+
get entity(): Entity;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
/**
|
package/dist/viewer/index.d.ts
CHANGED
|
@@ -38,8 +38,8 @@ declare function cloneViewer(source: Viewer, container: Element | string, option
|
|
|
38
38
|
declare class Highlight {
|
|
39
39
|
private static instances;
|
|
40
40
|
private _defaultColor;
|
|
41
|
-
private
|
|
42
|
-
private
|
|
41
|
+
private _entity;
|
|
42
|
+
private _entities;
|
|
43
43
|
/**
|
|
44
44
|
* Creates a new `Highlight` instance.
|
|
45
45
|
* @private Use {@link getInstance `Highlight.getInstance()`}
|
|
@@ -86,7 +86,7 @@ declare class Highlight {
|
|
|
86
86
|
*/
|
|
87
87
|
set defaultColor(color: Color);
|
|
88
88
|
/** Gets the highlight entity */
|
|
89
|
-
get
|
|
89
|
+
get entity(): Entity;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
/**
|
package/dist/viewer/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c}from"../chunk-
|
|
1
|
+
import{a,b,c}from"../chunk-ATVZC562.js";export{c as Highlight,b as cloneViewer,a as syncCamera};
|
package/package.json
CHANGED
package/dist/chunk-6ED7EA2J.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Viewer as w}from"cesium";import{defined as f}from"cesium";function d(t,i){if(f(t)&&f(i)){let{camera:n}=t;i.camera.position=n.positionWC.clone(),i.camera.direction=n.directionWC.clone(),i.camera.up=n.upWC.clone()}}function _(t,i,n){let o={baseLayerPicker:t.baseLayerPicker!==void 0,geocoder:t.geocoder!==void 0,homeButton:t.homeButton!==void 0,sceneModePicker:t.sceneModePicker!==void 0,timeline:t.timeline!==void 0,navigationHelpButton:t.navigationHelpButton!==void 0,animation:t.animation!==void 0,fullscreenButton:t.fullscreenButton!==void 0,shouldAnimate:t.clock.shouldAnimate,terrainProvider:t.terrainProvider,requestRenderMode:t.scene.requestRenderMode,infoBox:t.infoBox!==void 0},e=new w(i,{...o,...n});d(t,e);let a=t.imageryLayers;e.imageryLayers.removeAll();for(let r=0;r<a.length;r++){let E=a.get(r);e.imageryLayers.addImageryProvider(E.imageryProvider,r)}e.clock.startTime=t.clock.startTime.clone(),e.clock.stopTime=t.clock.stopTime.clone(),e.clock.currentTime=t.clock.currentTime.clone(),e.clock.multiplier=t.clock.multiplier,e.clock.clockStep=t.clock.clockStep,e.clock.clockRange=t.clock.clockRange,e.clock.shouldAnimate=t.clock.shouldAnimate,e.scene.globe.enableLighting=t.scene.globe.enableLighting,e.scene.globe.depthTestAgainstTerrain=t.scene.globe.depthTestAgainstTerrain,e.scene.screenSpaceCameraController.enableCollisionDetection=t.scene.screenSpaceCameraController.enableCollisionDetection;let l=t.scene.screenSpaceCameraController.tiltEventTypes;l&&(e.scene.screenSpaceCameraController.tiltEventTypes=Array.isArray(l)?[...l]:l);let s=t.scene.screenSpaceCameraController.zoomEventTypes;return s&&(e.scene.screenSpaceCameraController.zoomEventTypes=Array.isArray(s)?[...s]:s),e}import{Cartesian3 as h,ClassificationType as m,Color as v,defined as T,Entity as c,GroundPrimitive as u,HeightReference as p,PolygonGraphics as C,PolygonHierarchy as V,PolylineGraphics as g,RectangleGraphics as R}from"cesium";var y=class t{static instances=new Map;_defaultColor=v.YELLOW.withAlpha(.5);_highlightEntity;_viewerEntities;constructor(i){this._viewerEntities=i.entities,this._highlightEntity=this._viewerEntities.add(new c({id:`highlight-entity-${Math.random().toString(36).substring(2)}`,show:!1}))}static getInstance(i){let n=i.container;return t.instances.has(n)||t.instances.set(n,new t(i)),t.instances.get(n)}static releaseInstance(i){let n=i.container,o=t.instances.get(n);o&&(o.hide(),o._highlightEntity&&i.entities.remove(o._highlightEntity),t.instances.delete(n))}show(i,n=this._defaultColor,o=!1){if(!(!T(i)||!this._highlightEntity)){this._clearGeometries();try{if(i instanceof c)this._update(i,n,o);else if(i.id instanceof c)this._update(i.id,n,o);else if(i.primitive instanceof u)this._update(i.primitive,n,o);else return;return this._highlightEntity.show=!0,this._highlightEntity}catch(e){console.error("Failed to highlight object:",e);return}}}_clearGeometries(){this._highlightEntity&&(this._highlightEntity.polygon=void 0,this._highlightEntity.polyline=void 0,this._highlightEntity.rectangle=void 0)}_update(i,n,o){if(this._highlightEntity){if(i instanceof c){if(i.polygon)if(o){let e=i.polygon.hierarchy?.getValue();if(e&&e.positions){let a;e.positions.length>0&&!h.equals(e.positions[0],e.positions[e.positions.length-1])?a=[...e.positions,e.positions[0]]:a=e.positions,this._highlightEntity.polyline=new g({positions:a,material:n,width:2,clampToGround:i.polygon.heightReference?.getValue()===p.CLAMP_TO_GROUND})}}else{let e=i.polygon.hierarchy?.getValue();e&&(this._highlightEntity.polygon=new C({hierarchy:e,material:n,heightReference:i.polygon.heightReference?.getValue(),classificationType:i.polygon.classificationType?.getValue()||m.BOTH}))}else if(i.polyline){let e=i.polyline.positions?.getValue();if(e){let a=i.polyline.width?.getValue()||2;this._highlightEntity.polyline=new g({positions:e,material:n,width:a+2,clampToGround:i.polyline.clampToGround?.getValue()})}}else if(i.rectangle)if(o){let e=i.rectangle.coordinates?.getValue();if(e){let a=[h.fromRadians(e.west,e.north),h.fromRadians(e.east,e.north),h.fromRadians(e.east,e.south),h.fromRadians(e.west,e.south),h.fromRadians(e.west,e.north)];this._highlightEntity.polyline=new g({positions:a,material:n,width:2,clampToGround:i.rectangle.heightReference?.getValue()===p.CLAMP_TO_GROUND})}}else{let e=i.rectangle.coordinates?.getValue();e&&(this._highlightEntity.rectangle=new R({coordinates:e,material:n,heightReference:i.rectangle.heightReference?.getValue()}))}}else if(i instanceof u){let e=i.geometryInstances,a=Array.isArray(e)?e[0]:e;if(!a||!a.geometry.attributes.position)return;let l=a.geometry.attributes.position.values,s=[];for(let r=0;r<l.length;r+=3)s.push(new h(l[r],l[r+1],l[r+2]));o?this._highlightEntity.polyline=new g({positions:s,material:n,width:2,clampToGround:!0}):this._highlightEntity.polygon=new C({hierarchy:new V(s),material:n,heightReference:p.CLAMP_TO_GROUND,classificationType:m.BOTH})}}}hide(){this._highlightEntity&&(this._highlightEntity.show=!1)}get defaultColor(){return this._defaultColor}set defaultColor(i){this._defaultColor=i}get highlightEntity(){return this._highlightEntity}};export{d as a,_ as b,y as c};
|