UNPKG

vue-cesium

Version:
1 lines 6.78 kB
{"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 '@vue-cesium/utils/cesium-helpers'\nimport type { DynamicOverlayOpts, VcPosition } from '@vue-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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"}