cesium-plot-js/examples/CesiumPlot.umd.cjs

2 lines
33 KiB
JavaScript
Raw Normal View History

2024-02-23 09:33:26 +00:00
(function(L,M){typeof exports=="object"&&typeof module<"u"?module.exports=M():typeof define=="function"&&define.amd?define(M):(L=typeof globalThis<"u"?globalThis:L||self,L.CesiumPlot=M())})(this,function(){"use strict";var pt=Object.defineProperty;var yt=(L,M,A)=>M in L?pt(L,M,{enumerable:!0,configurable:!0,writable:!0,value:A}):L[M]=A;var l=(L,M,A)=>(yt(L,typeof M!="symbol"?M+"":M,A),A);class L{constructor(){l(this,"listeners");this.listeners=new Map([["drawStart",new Set],["drawUpdate",new Set],["drawEnd",new Set],["editStart",new Set],["editEnd",new Set]])}on(i,t){if(!this.listeners.has(i)){console.warn("Event binding must be one of 'drawStart', 'drawUpdate', or 'drawEnd'.");return}this.listeners.get(i).add(t)}off(i,t){this.listeners.has(i)&&this.listeners.get(i).delete(t)}dispatchEvent(i,t){this.listeners.has(i)&&this.listeners.get(i).forEach(e=>{e(t)})}}class M{constructor(i,t,e){l(this,"cesium");l(this,"viewer");l(this,"eventHandler");l(this,"polygonEntity");l(this,"geometryPoints",[]);l(this,"state","drawing");l(this,"controlPoints",[]);l(this,"controlPointsEventHandler");l(this,"lineEntity");l(this,"type");l(this,"freehand");l(this,"style");l(this,"outlineEntity");l(this,"eventDispatcher");l(this,"dragEventHandler");l(this,"entityId","");l(this,"points",[]);this.cesium=i,this.viewer=t,this.type=this.getType(),this.mergeStyle(e),this.cartesianToLnglat=this.cartesianToLnglat.bind(this),this.pixelToCartesian=this.pixelToCartesian.bind(this),this.eventDispatcher=new L,this.onClick()}mergeStyle(i){this.type==="polygon"?this.style=Object.assign({material:this.cesium.Color.fromCssColorString("rgba(59, 178, 208, 0.2)"),outlineMaterial:this.cesium.Color.fromCssColorString("rgba(59, 178, 208, 1.0)"),outlineWidth:2},i):this.type==="line"&&(this.style=Object.assign({material:this.cesium.Color.fromCssColorString("rgba(59, 178, 208, 1.0)"),lineWidth:2},i))}setState(i){this.state=i}getState(){return this.state}onClick(){this.eventHandler=new this.cesium.ScreenSpaceEventHandler(this.viewer.canvas),this.eventHandler.setInputAction(i=>{const t=this.viewer.scene.pick(i.position),e=this.cesium.defined(t)&&t.id instanceof this.cesium.Entity;let s=this.polygonEntity;if(this.type==="line"&&(s=this.lineEntity),this.state==="drawing"){const n=this.pixelToCartesian(i.position),o=this.getPoints();if(!n||!this.freehand&&o.length>0&&!this.checkDistance(n,o[o.length-1]))return;this.addPoint(n),this.getPoints().length===1&&this.eventDispatcher.dispatchEvent("drawStart"),this.eventDispatcher.dispatchEvent("drawUpdate",n)}else if(this.state==="edit")(!e||s.id!==t.id.id)&&(this.setState("static"),this.removeControlPoints(),this.disableDrag(),this.eventDispatcher.dispatchEvent("drawEnd",this.getPoints()));else if(this.state==="static"&&e&&s.id===t.id.id){const n=this.type==="line"?t.id.polyline:t.id.polygon;this.cesium.defined(n)&&(this.setState("edit"),this.addControlPoints(),this.draggable(),this.eventDispatcher.dispatchEvent("editStart"))}},this.cesium.ScreenSpaceEventType.LEFT_CLICK)}onMouseMove(){this.eventHandler.setInputAction(i=>{const t=this.getPoints(),e=this.pixelToCartesian(i.endPosition);e&&this.checkDistance(e,t[t.length-1])&&this.updateMovingPoint(e,t.length)},this.cesium.ScreenSpaceEventType.MOUSE_MOVE)}onDoubleClick(){this.eventHandler.setInputAction(i=>{this.state==="drawing"&&this.finishDrawing()},this.cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK)}checkDistance(i,t){return this.cesium.Cartesian3.distance(i,t)>10}finishDrawing(){this.removeMoveListener(),this.setState("edit"),this.addControlPoints(),this.draggable();const i=this.polygonEntity||this.lineEntity;this.entityId=i.id,this.eventDispatcher.dispatchEvent("drawEnd",this.getPoints())}removeClickListener(){this.eventHandler.removeInputAction(this.cesium.ScreenSpaceEventType.LEFT_CLICK)}removeMoveListener(){this.eventHandler.removeInputAction(this.cesium.ScreenSpaceEventType.MOUSE_MOVE)}removeDoubleClickListener(){this.eventHandler.removeInputAction(this.cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK)}setGeometryPoints(i){this.geometryPoints=i}getGeometryPoints(){return this