vue-cesium-jyt
Version:
Vue 3.x components for CesiumJS.
1 lines • 5.9 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-01-23 00:50:50\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 } = 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 entity.orientation = new VelocityOrientationProperty(this._sampledPosition)\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) {\n this._removePosition()\n let time\n if (typeof timeOrInterval === 'number') {\n const now = Cesium.JulianDate.now()\n time = Cesium.JulianDate.addSeconds(now, timeOrInterval, new Cesium.JulianDate())\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 this\n }\n}\n\nexport default DynamicOverlay\n"],"names":[],"mappings":";;AACA,MAAM,cAAc,CAAC;AACrB,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,GAAG,MAAM,CAAC;AACvG,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;AAC5B,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,uBAAuB,EAAE,CAAC;AAC1D,IAAI,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,IAAI,iBAAiB,CAAC,IAAI,CAAC;AAChH,IAAI,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,IAAI,iBAAiB,CAAC,IAAI,CAAC;AAClH,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACrB,IAAI,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;AACpD,IAAI,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;AACvC,IAAI,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC5C,IAAI,MAAM,CAAC,WAAW,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAChF,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,CAAC,uBAAuB,GAAG,IAAI,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACnG,GAAG;AACH,EAAE,IAAI,EAAE,GAAG;AACX,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;AAC3B,GAAG;AACH,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE;AACb,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;AACzB,GAAG;AACH,EAAE,IAAI,YAAY,CAAC,YAAY,EAAE;AACjC,IAAI,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;AACtC,GAAG;AACH,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC;AAC9B,GAAG;AACH,EAAE,IAAI,QAAQ,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;AACnE,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE;AACjD,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AAChG,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AACrI,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC;AAClE,QAAQ,KAAK;AACb,QAAQ,IAAI;AACZ,OAAO,CAAC,CAAC,CAAC;AACV,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;AACrE,KAAK;AACL,GAAG;AACH,EAAE,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE;AACxC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,IAAI,IAAI,IAAI,CAAC;AACb,IAAI,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE;AAC5C,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AACxF,KAAK,MAAM;AACX,MAAM,IAAI,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpE,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACrC,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;;;;"}