casc-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 6.89 kB
Source Map (JSON)
{"version":3,"file":"DynamicOverlay.mjs","sources":["../../../../../packages/shared/src/DynamicOverlay.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-11-24 14:20:28\n * @LastEditTime: 2022-09-08 15:41:35\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\shared\\src\\DynamicOverlay.ts\n */\nimport { makeCartesian3, makeJulianDate } from 'casc-cesium-utils/cesium-helpers'\nimport type { DynamicOverlayOpts, VcPosition } from 'casc-cesium-utils/types'\n\nclass DynamicOverlay {\n _sampledPosition: Cesium.SampledPositionProperty\n _entity: Cesium.Entity\n _cache: Cesium.JulianDate[]\n _maxCacheSize: number\n _lastTime: Cesium.JulianDate | undefined\n _velocityVectorProperty: Cesium.VelocityVectorProperty\n\n constructor(options: DynamicOverlayOpts) {\n const { SampledPositionProperty, Entity, ExtrapolationType, VelocityOrientationProperty, CallbackProperty } = Cesium\n this._lastTime = undefined\n this._sampledPosition = new SampledPositionProperty()\n this._sampledPosition.forwardExtrapolationType = options.forwardExtrapolationType || ExtrapolationType.HOLD\n this._sampledPosition.backwardExtrapolationType = options.backwardExtrapolationType || ExtrapolationType.HOLD\n this._cache = []\n this._maxCacheSize = options.maxCacheSize || 10\n\n const entity = new Entity(options)\n entity.position = this._sampledPosition\n\n if (!Cesium.defined(options.orientation)) {\n // entity.orientation = new VelocityOrientationProperty(this._sampledPosition)\n const orientation = new VelocityOrientationProperty(this._sampledPosition)\n // 停止时保持方向\n let lastOri\n entity.orientation = new CallbackProperty((time, result) => {\n const ori = orientation.getValue(time)\n if (ori) {\n lastOri = ori\n } else {\n return lastOri\n }\n return ori\n }, false)\n }\n\n this._entity = entity\n // A velocity vector property will give us the entity's speed and direction at any given time.\n this._velocityVectorProperty = new Cesium.VelocityVectorProperty(this._sampledPosition, false)\n }\n\n get id() {\n return this._entity.id\n }\n set id(id) {\n this._entity.id = id\n }\n\n set maxCacheSize(maxCacheSize) {\n this._maxCacheSize = maxCacheSize\n }\n get maxCacheSize() {\n return this._maxCacheSize\n }\n\n get position() {\n return this._sampledPosition.getValue(Cesium.JulianDate.now())\n }\n\n _removePosition() {\n if (this._cache.length > this._maxCacheSize) {\n const start = Cesium.JulianDate.addSeconds(this._cache[0], -0.2, new Cesium.JulianDate())\n const stop = Cesium.JulianDate.addSeconds(this._cache[this._cache.length - this._maxCacheSize], -0.2, new Cesium.JulianDate())\n this._sampledPosition.removeSamples(\n new Cesium.TimeInterval({\n start: start,\n stop: stop\n })\n )\n this._cache.splice(0, this._cache.length - this._maxCacheSize)\n }\n }\n /**\n *\n * @param position\n * @param interval\n * @returns\n */\n addPosition(position: VcPosition, timeOrInterval: string | number | Cesium.JulianDate | Date) {\n this._removePosition()\n let time: Cesium.JulianDate\n if (typeof timeOrInterval === 'number') {\n const now = Cesium.JulianDate.now()\n time = Cesium.JulianDate.addSeconds(now, timeOrInterval, new Cesium.JulianDate())\n Cesium.destroyObject(now)\n } else {\n time = makeJulianDate(timeOrInterval)\n }\n\n this._sampledPosition.addSample(time, makeCartesian3(position) as Cesium.Cartesian3)\n this._lastTime = time!\n this._cache.push(this._lastTime!)\n\n return time\n }\n}\n\nexport default DynamicOverlay\n"],"names":[],"mappings":"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"}