vue-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 52.3 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/overlays/dynamic/index.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-11-24 11:38:18\n * @LastEditTime: 2023-06-30 16:50:14\n * @LastEditors: zouyaoji 370681295@qq.com\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\overlays\\dynamic\\index.ts\n */\nimport { WatchStopHandle, PropType, toRaw, ComponentPublicInstance } from 'vue'\nimport { defineComponent, getCurrentInstance, createCommentVNode, onUnmounted, ref, watch } from 'vue'\nimport {\n DynamicOverlayOpts,\n SampledPosition,\n TrackViewOpts,\n VcComponentInternalInstance,\n VcHeadingPitchRange,\n VcReadyObject\n} from '@vue-cesium/utils/types'\nimport { useCommon } from '@vue-cesium/composables'\nimport { show } from '@vue-cesium/utils/cesium-props'\nimport { addCustomProperty, kebabCase } from '@vue-cesium/utils/util'\nimport DynamicOverlay from '@vue-cesium/shared/src/DynamicOverlay'\nimport {\n getPolylineSegmentHeading,\n getPolylineSegmentPitch,\n makeCartesian3,\n makeHeadingPitchRang,\n makeJulianDate\n} from '@vue-cesium/utils/cesium-helpers'\nimport { cloneDeep, differenceBy, remove, find } from 'lodash-unified'\nimport { getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nexport const dynamicOverlayProps = {\n ...show,\n name: {\n type: String,\n default: '__vc__overlay__dynamic__'\n },\n startTime: {\n type: [Object, String, Date] as PropType<Cesium.JulianDate | string | Date>\n },\n stopTime: {\n type: [Object, String, Date] as PropType<Cesium.JulianDate | string | Date>\n },\n currentTime: {\n type: [Object, String, Date] as PropType<Cesium.JulianDate | string | Date>\n },\n clockRange: {\n type: Number as PropType<number | Cesium.ClockRange>,\n default: 0\n },\n clockStep: {\n type: Number as PropType<number | Cesium.ClockStep>,\n default: 1\n },\n shouldAnimate: {\n type: Boolean,\n default: true\n },\n canAnimate: {\n type: Boolean,\n default: true\n },\n multiplier: {\n type: Number,\n default: 1.0\n },\n dynamicOverlays: {\n type: Array as PropType<DynamicOverlayOpts[]>,\n default: () => []\n },\n defaultInterval: {\n type: Number,\n default: 3\n },\n stopArrivedFlag: {\n type: String as PropType<'time' | 'position' | 'both' | 'or'>,\n default: 'time'\n },\n positionPrecision: {\n type: Number,\n default: 0.0000001\n },\n timePrecision: {\n type: Number,\n default: 0.01\n }\n}\nconst emits = {\n ...commonEmits,\n 'update:currentTime': (currentTime: Cesium.JulianDate) => true,\n 'update:shouldAnimate': (shouldAnimate: boolean) => true,\n 'update:canAnimate': (canAnimate: boolean) => true,\n 'update:clockRange': (clockRange: number | Cesium.ClockRange) => true,\n 'update:clockStep': (clockStep: number | Cesium.ClockStep) => true,\n 'update:multiplier': (multiplier: number) => true,\n 'update:startTime': (startTime: Cesium.JulianDate) => true,\n 'update:stopTime': (stopTime: Cesium.JulianDate) => true,\n onStop: (clock: Cesium.Clock) => true,\n stopArrived: (e: {\n overlay: DynamicOverlay\n position: SampledPosition\n offset: Cesium.HeadingPitchRange\n clock: Cesium.Clock\n indexOverlay: number\n indexPosition: number\n }) => true\n}\nexport default defineComponent({\n name: 'VcOverlayDynamic',\n props: dynamicOverlayProps,\n emits: emits,\n setup(props: VcOverlayDynamicProps, ctx) {\n // state\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.cesiumClass = 'VcOverlayDynamic'\n instance.cesiumEvents = []\n const commonState = useCommon(props, ctx, instance)\n if (commonState === void 0) {\n return\n }\n const { $services } = commonState\n const overlays = ref<Array<DynamicOverlay>>([])\n const restoreClockOpts = ref<any>({})\n const { emit } = ctx\n const trackingOverlay = ref<DynamicOverlay>(null)\n const trackView = ref<TrackViewOpts>(null)\n let lastOffset\n let lastPosition\n // watcch\n let unwatchFns: Array<WatchStopHandle> = []\n unwatchFns.push(\n watch(\n () => props.show,\n val => {\n const datasource = instance.cesiumObject as Cesium.CustomDataSource\n datasource && (datasource.show = val)\n }\n )\n )\n\n unwatchFns.push(\n watch(\n () => props.name,\n val => {\n const datasource = instance.cesiumObject as Cesium.CustomDataSource\n datasource && (datasource.name = val)\n }\n )\n )\n\n unwatchFns.push(\n watch(\n () => props.startTime,\n val => {\n const { viewer } = $services\n if (Cesium.defined(viewer) && val) {\n viewer.clock.startTime = makeJulianDate(val)\n }\n }\n )\n )\n\n unwatchFns.push(\n watch(\n () => props.stopTime,\n val => {\n const { viewer } = $services\n if (Cesium.defined(viewer) && val) {\n viewer.clock.stopTime = makeJulianDate(val)\n }\n }\n )\n )\n\n unwatchFns.push(\n watch(\n () => props.currentTime,\n val => {\n const { viewer } = $services\n if (Cesium.defined(viewer) && val) {\n viewer.clock.currentTime = makeJulianDate(val)\n }\n }\n )\n )\n\n unwatchFns.push(\n watch(\n () => props.multiplier,\n val => {\n const { viewer } = $services\n if (Cesium.defined(viewer)) {\n viewer.clock.multiplier = val\n }\n }\n )\n )\n\n unwatchFns.push(\n watch(\n () => props.clockStep,\n val => {\n const { viewer } = $services\n if (Cesium.defined(viewer)) {\n viewer.clock.clockStep = val\n }\n }\n )\n )\n unwatchFns.push(\n watch(\n () => props.clockRange,\n val => {\n const { viewer } = $services\n if (Cesium.defined(viewer)) {\n viewer.clock.clockRange = val\n }\n }\n )\n )\n\n unwatchFns.push(\n watch(\n () => props.canAnimate,\n val => {\n const { viewer } = $services\n if (Cesium.defined(viewer)) {\n viewer.clock.canAnimate = val\n }\n }\n )\n )\n\n unwatchFns.push(\n watch(\n () => props.shouldAnimate,\n val => {\n const { viewer } = $services\n if (Cesium.defined(viewer)) {\n viewer.clock.shouldAnimate = val\n }\n }\n )\n )\n\n unwatchFns.push(\n watch(\n () => cloneDeep(props.dynamicOverlays),\n (newVal, oldVal) => {\n if (!instance.mounted) {\n return\n }\n const datasource = instance.cesiumObject as Cesium.CustomDataSource\n if (newVal.length === oldVal.length) {\n // 视为修改操作\n // Treated as modified\n const modifies: Array<any> = []\n for (let i = 0; i < newVal.length; i++) {\n const options = newVal[i]\n const oldOptions = oldVal[i]\n\n // 忽略 model 的 nodeTransformations\n // 该属性不支持动态响应\n const testReplace = (key, value) => {\n if (key !== 'nodeTransformations' && key !== '_definitionChanged') {\n return value\n }\n }\n\n if (JSON.stringify(options, testReplace) !== JSON.stringify(oldOptions, testReplace)) {\n modifies.push({\n newOptions: options,\n oldOptions: oldOptions\n })\n }\n }\n\n modifies.forEach(v => {\n const modifyEntity = datasource.entities.getById(v.oldOptions.id)\n if (Cesium.defined(modifyEntity)) {\n if (v.oldOptions.id === v.newOptions.id) {\n modifyEntity &&\n Object.keys(v.newOptions).forEach(prop => {\n if (v.oldOptions[prop] !== v.newOptions[prop]) {\n modifyEntity[prop] = commonState.transformProp(prop, v.newOptions[prop])\n }\n })\n } else {\n // 改了 id\n if (modifyEntity) {\n datasource.entities.remove(modifyEntity)\n remove(overlays.value, overlay => overlay.id === modifyEntity.id)\n const entityOptions = v.newOptions\n addDynamicOverlays(datasource, [entityOptions])\n }\n }\n\n const dynamicOverlay = find(overlays.value, v => v.id === modifyEntity.id)\n if (Cesium.defined(dynamicOverlay)) {\n const oldSampledPositions = v.oldOptions.sampledPositions\n const newSampledPositions = v.newOptions.sampledPositions\n const sampledPositionAdds: any = differenceBy(newSampledPositions, oldSampledPositions, 'id')\n const sampledPositionDeletes: any = differenceBy(oldSampledPositions, newSampledPositions, 'id')\n\n sampledPositionDeletes.forEach(sampledPosition => {\n sampledPosition.time && dynamicOverlay._sampledPosition.removeSample(sampledPosition.time)\n })\n\n sampledPositionAdds.forEach((sampledPosition: SampledPosition) => {\n if (sampledPosition.time) {\n dynamicOverlay.addPosition(sampledPosition.position, sampledPosition.time)\n } else if (sampledPosition.interval) {\n dynamicOverlay.addPosition(sampledPosition.position, sampledPosition.interval || props.defaultInterval)\n }\n })\n }\n }\n })\n } else {\n const adds: any = differenceBy(newVal, oldVal, 'id')\n const deletes: any = differenceBy(oldVal, newVal, 'id')\n const deletedEntities: Array<Cesium.Entity> = []\n for (let i = 0; i < deletes.length; i++) {\n const deleteEntity = datasource.entities.getById(deletes[i].id)\n deletedEntities.push(deleteEntity!)\n }\n deletedEntities.forEach(v => {\n datasource.entities.remove(v)\n remove(overlays.value, overlay => overlay.id === v.id)\n })\n\n addDynamicOverlays(datasource, adds)\n }\n },\n {\n deep: true\n }\n )\n )\n\n // methods\n instance.createCesiumObject = async () => {\n return new Cesium.CustomDataSource(props.name)\n }\n\n const onClockTick = (clock: Cesium.Clock) => {\n let listener = getInstanceListener(instance, 'update:currentTime')\n !makeJulianDate(props.currentTime).equalsEpsilon(clock.currentTime, 0.001) && listener && emit('update:currentTime', clock.currentTime)\n\n listener = getInstanceListener(instance, 'update:shouldAnimate')\n props.shouldAnimate !== clock.shouldAnimate && listener && emit('update:shouldAnimate', clock.shouldAnimate)\n\n listener = getInstanceListener(instance, 'update:canAnimate')\n props.canAnimate !== clock.canAnimate && listener && emit('update:canAnimate', clock.canAnimate)\n\n listener = getInstanceListener(instance, 'update:clockRange')\n props.clockRange !== clock.clockRange && listener && emit('update:clockRange', clock.clockRange)\n\n listener = getInstanceListener(instance, 'update:clockStep')\n props.clockStep !== clock.clockStep && listener && emit('update:clockStep', clock.clockStep)\n\n listener = getInstanceListener(instance, 'update:multiplier')\n props.multiplier !== clock.multiplier && listener && emit('update:multiplier', clock.multiplier)\n\n listener = getInstanceListener(instance, 'update:startTime')\n !makeJulianDate(props.startTime).equalsEpsilon(clock.startTime, 0.001) && listener && emit('update:startTime', clock.startTime)\n\n listener = getInstanceListener(instance, 'update:stopTime')\n !makeJulianDate(props.stopTime).equalsEpsilon(clock.stopTime, 0.001) && listener && emit('update:stopTime', clock.stopTime)\n\n setTrackView(clock)\n\n const { JulianDate, Cartesian3 } = Cesium\n listener = getInstanceListener(instance, 'stopArrived')\n if (listener && props.shouldAnimate) {\n for (let i = 0; i < overlays.value.length; i++) {\n const overlay: DynamicOverlay = overlays.value[i]\n const currentPosition = overlay._sampledPosition.getValue(clock.currentTime)\n\n const dynamicOverlayOpts = props.dynamicOverlays[i]\n for (let j = 0; j < dynamicOverlayOpts.sampledPositions.length; j++) {\n const sampledPosition = dynamicOverlayOpts.sampledPositions[j]\n const stopPostion = makeCartesian3(sampledPosition.position) as Cesium.Cartesian3\n const stopTime = makeJulianDate(sampledPosition.time)\n\n const positionFlag = Cartesian3.equalsEpsilon(currentPosition, stopPostion, props.positionPrecision)\n const timeFlag = JulianDate.equalsEpsilon(clock.currentTime, stopTime, props.timePrecision)\n let arrivedFlag = false\n switch (props.stopArrivedFlag) {\n case 'time':\n arrivedFlag = timeFlag\n break\n case 'position':\n arrivedFlag = positionFlag\n break\n case 'both':\n arrivedFlag = timeFlag && positionFlag\n break\n case 'or':\n arrivedFlag = timeFlag || positionFlag\n break\n }\n\n if (arrivedFlag) {\n emit('stopArrived', {\n overlay,\n position: sampledPosition,\n offset: lastOffset,\n clock,\n indexOverlay: i,\n indexPosition: j\n })\n break\n }\n }\n }\n }\n }\n\n const addDynamicOverlays = (datasource: Cesium.CustomDataSource, dynamicOverlays: Array<DynamicOverlayOpts>) => {\n for (let i = 0; i < dynamicOverlays.length; i++) {\n const entityOptions = dynamicOverlays[i] as any\n const entityOptionsTransform = commonState.transformProps<DynamicOverlayOpts>(entityOptions)\n const dynamicOverlay = new DynamicOverlay(entityOptionsTransform)\n overlays.value.push(dynamicOverlay)\n const entity = datasource.entities.add(dynamicOverlay._entity)\n entityOptionsTransform.sampledPositions.forEach((sampledPosition: SampledPosition) => {\n if (sampledPosition.time) {\n dynamicOverlay.addPosition(sampledPosition.position, sampledPosition.time)\n } else if (sampledPosition.interval) {\n sampledPosition.time = dynamicOverlay.addPosition(sampledPosition.position, sampledPosition.interval || props.defaultInterval)\n }\n })\n entityOptions.id !== entity.id && (entityOptions.id = entity.id)\n addCustomProperty(entity, entityOptionsTransform, ['id'])\n }\n }\n\n instance.mount = async () => {\n const { viewer } = $services\n const datasource = instance.cesiumObject as Cesium.CustomDataSource\n datasource.show = props.show\n addDynamicOverlays(datasource, props.dynamicOverlays)\n\n return viewer.dataSources.add(datasource).then(() => {\n restoreClockOpts.value.startTime = viewer.clock.startTime\n restoreClockOpts.value.stopTime = viewer.clock.stopTime\n restoreClockOpts.value.currentTime = viewer.clock.currentTime\n restoreClockOpts.value.multiplier = viewer.clock.multiplier\n restoreClockOpts.value.clockStep = viewer.clock.clockStep\n restoreClockOpts.value.clockRange = viewer.clock.clockRange\n restoreClockOpts.value.canAnimate = viewer.clock.canAnimate\n restoreClockOpts.value.shouldAnimate = viewer.clock.shouldAnimate\n\n if (props.startTime) {\n viewer.clock.startTime = makeJulianDate(props.startTime)\n }\n if (props.stopTime) {\n viewer.clock.stopTime = makeJulianDate(props.stopTime)\n }\n if (props.currentTime) {\n viewer.clock.currentTime = makeJulianDate(props.currentTime)\n }\n\n viewer.clock.multiplier = props.multiplier\n viewer.clock.clockStep = props.clockStep\n viewer.clock.clockRange = props.clockRange\n viewer.clock.canAnimate = false\n viewer.clock.shouldAnimate = props.shouldAnimate\n\n viewer.clock.onTick.addEventListener(onClockTick)\n const listener = getInstanceListener(instance, 'onStop')\n listener && viewer.clock.onStop.addEventListener(listener)\n return true\n })\n }\n\n instance.unmount = async () => {\n const { viewer } = $services\n const datasource = instance.cesiumObject as Cesium.CustomDataSource\n viewer.dataSources.remove(datasource, true)\n\n viewer.clock.startTime = restoreClockOpts.value.startTime\n viewer.clock.stopTime = restoreClockOpts.value.stopTime\n viewer.clock.multiplier = restoreClockOpts.value.multiplier\n viewer.clock.clockStep = restoreClockOpts.value.clockStep\n viewer.clock.clockRange = restoreClockOpts.value.clockRange\n viewer.clock.canAnimate = restoreClockOpts.value.canAnimate\n viewer.clock.shouldAnimate = restoreClockOpts.value.shouldAnimate\n overlays.value.length = 0\n viewer.clock.onTick.removeEventListener(onClockTick)\n const listener = getInstanceListener(instance, 'onStop')\n listener && viewer.clock.onStop.removeEventListener(listener)\n trackingOverlay.value && (viewer.trackedEntity = undefined)\n return true\n }\n\n const setTrackView = (clock: Cesium.Clock) => {\n if (trackView.value && trackingOverlay.value) {\n const { viewer } = $services\n\n if (Cesium.JulianDate.greaterThan(clock.currentTime, clock.stopTime)) {\n // viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY)\n // if (lastOffset && lastPosition) {\n // viewer.camera.lookAt(lastPosition, lastOffset)\n // }\n trackingOverlay.value = null\n return\n }\n const position = trackingOverlay.value._sampledPosition.getValue(clock.currentTime)\n let offset: Cesium.HeadingPitchRange = new Cesium.HeadingPitchRange()\n switch (trackView.value.mode) {\n case 'TP':\n offset.heading = 0\n offset.pitch = trackView.value?.offset?.pitch || Cesium.Math.toRadians(-90)\n offset.range = trackView.value?.offset?.range || 1000\n break\n case 'FP': {\n const nextTickTime = Cesium.JulianDate.addSeconds(clock.currentTime, 1 / 60, new Cesium.JulianDate())\n const nextTickPosition = trackingOverlay.value._sampledPosition.getValue(nextTickTime) || position\n\n if (position.equals(nextTickPosition) && lastOffset) {\n offset = lastOffset\n } else {\n offset.heading = Cesium.Math.toRadians(getPolylineSegmentHeading(position, nextTickPosition))\n offset.pitch = (trackView.value?.offset?.pitch || Cesium.Math.toRadians(-45.0)) + getPolylineSegmentPitch(position, nextTickPosition)\n offset.range = trackView.value?.offset?.range || 500\n }\n\n break\n }\n case 'CUSTOM':\n offset = makeHeadingPitchRang(trackView.value.offset)\n }\n lastOffset = offset\n lastPosition = position\n viewer.camera.lookAt(position, offset)\n }\n }\n\n const trackOverlay = (trackOverlay?: DynamicOverlay | string | number, trackViewOpts?: TrackViewOpts) => {\n const { viewer } = $services\n trackViewOpts = trackViewOpts || {\n mode: trackView.value === null ? 'FP' : 'FREE'\n }\n\n if (trackViewOpts.mode === 'FREE') {\n viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY)\n if (trackingOverlay.value) {\n viewer.trackedEntity = undefined\n trackingOverlay.value = null\n trackView.value = null\n }\n return\n }\n\n trackingOverlay.value = getOverlay(trackOverlay)\n\n viewer.trackedEntity = toRaw(trackingOverlay.value._entity)\n if (trackViewOpts.mode === 'TRACKED') {\n if (trackViewOpts?.viewFrom?.length) {\n viewer.trackedEntity.viewFrom = new Cesium.Cartesian3(\n trackViewOpts.viewFrom[0],\n trackViewOpts.viewFrom[1],\n trackViewOpts.viewFrom[2]\n ) as any\n }\n trackView.value = null\n } else {\n trackView.value = trackViewOpts\n }\n }\n\n const getOverlay = (e: number | string | DynamicOverlay) => {\n if (e instanceof DynamicOverlay) {\n return e\n } else if (typeof e === 'string') {\n return find(overlays.value, v => v.id === e)\n } else if (typeof e === 'number') {\n return overlays.value[e]\n } else {\n return overlays.value[0]\n }\n }\n\n const flyToOverlay = (\n overlays?: number | string | DynamicOverlay | Array<DynamicOverlay | number | string>,\n options?: {\n duration?: number\n maximumHeight?: number\n offset?: VcHeadingPitchRange\n }\n ) => {\n const { viewer } = $services\n if (trackingOverlay.value) {\n viewer.trackedEntity = undefined\n trackingOverlay.value = null\n }\n let target: Cesium.Entity | Array<Cesium.Entity> | Cesium.CustomDataSource\n if (Cesium.defined(overlays)) {\n if (Array.isArray(overlays)) {\n if (overlays.length) {\n const targets: Array<Cesium.Entity> = []\n overlays.forEach(viewOverlay => {\n const target = toRaw(getOverlay(viewOverlay)._entity)\n targets.push(target)\n })\n target = targets\n } else {\n target = instance.cesiumObject as Cesium.CustomDataSource\n }\n } else {\n target = toRaw(getOverlay(overlays)._entity)\n }\n } else {\n target = instance.cesiumObject as Cesium.CustomDataSource\n }\n\n options = options || {\n duration: 3.0\n }\n\n if (Cesium.defined(options.offset)) {\n options.offset = makeHeadingPitchRang(options.offset)\n }\n\n return viewer.flyTo(target, options as any)\n }\n\n const zoomToOverlay = (overlays?: number | string | DynamicOverlay | Array<DynamicOverlay | number | string>, offset?: VcHeadingPitchRange) => {\n const { viewer } = $services\n if (trackingOverlay.value) {\n viewer.trackedEntity = undefined\n trackingOverlay.value = null\n }\n let target: Cesium.Entity | Array<Cesium.Entity> | Cesium.CustomDataSource\n if (Cesium.defined(overlays)) {\n if (Array.isArray(overlays)) {\n if (overlays.length) {\n const targets: Array<Cesium.Entity> = []\n overlays.forEach(viewOverlay => {\n const target = toRaw(getOverlay(viewOverlay)._entity)\n targets.push(target)\n })\n target = targets\n } else {\n target = instance.cesiumObject as Cesium.CustomDataSource\n }\n } else {\n target = toRaw(getOverlay(overlays)._entity)\n }\n } else {\n target = instance.cesiumObject as Cesium.CustomDataSource\n }\n\n return viewer.zoomTo(target, Cesium.defined(offset) ? makeHeadingPitchRang(offset) : undefined)\n }\n\n // life cycle\n onUnmounted(() => {\n unwatchFns.forEach(item => item())\n unwatchFns = []\n })\n\n // expose public methods\n Object.assign(instance.proxy, { getOverlays: () => overlays.value, getOverlay, trackOverlay, zoomToOverlay, flyToOverlay })\n\n return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n }\n})\n\nexport interface VcOverlayDynamicProps {\n /**\n * Specify whether to display the CustomDataSource that hosts the dynamic overlays.\n * Default value: true\n */\n show?: boolean\n /**\n * Specify the name of the CustomDataSource.\n * Default value: __vc__overlay__dynamic__\n */\n name?: string\n /**\n * Specify the start time of the clock.\n */\n startTime?: Cesium.JulianDate | string | Date\n /**\n * Specify the stop time of the clock.\n */\n stopTime?: Cesium.JulianDate | string | Date\n /**\n * Specify the current time.\n */\n currentTime?: Cesium.JulianDate | string | Date\n /**\n * Determines how the clock should behave when Clock#startTime or Clock#stopTime is reached.\n * Default value: 0\n */\n clockRange?: number | Cesium.ClockRange\n /**\n * Determines if calls to Clock#tick are frame dependent or system clock dependent.\n * Default value: 1\n */\n clockStep?: number | Cesium.ClockStep\n /**\n * Indicates whether Clock#tick should attempt to advance time. The clock will only tick when both Clock#canAnimate and Clock#shouldAnimate are true.\n * Default value: true\n */\n shouldAnimate?: boolean\n /**\n * Indicates whether Clock#tick can advance time. This could be false if data is being buffered, for example. The clock will only tick when both Clock#canAnimate and Clock#shouldAnimate are true.\n * Default value: true\n */\n canAnimate?: boolean\n /**\n * Determines how much time advances when Clock#tick is called, negative values allow for advancing backwards.\n * Default value: 1.0\n */\n multiplier?: number\n /**\n * Specify the dynamicOverlays array.\n */\n dynamicOverlays?: Array<DynamicOverlayOpts>\n /**\n * Specify the default refresh interval of the default position information, and it is available to change the position of the dynamic overlays in real time.\n * Default value: 3.0\n */\n defaultInterval?: number\n /**\n * Specify the decision flag for the stopArrived event.\n * Default value: time\n */\n stopArrivedFlag?: 'time' | 'position' | 'both' | 'or'\n /**\n * Specify position accuracy.\n * Default value: 0.0000001\n */\n positionPrecision?: number\n /**\n * Specify time accuracy.\n * 0.01\n */\n timePrecision?: number\n /**\n * Triggers before the VcOverlayDynamic is loaded.\n */\n onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the VcOverlayDynamic is successfully loaded.\n */\n onReady?: (readyObject: VcReadyObject) => void\n /**\n * Triggers when the component load failed.\n */\n onUnready?: (e: any) => void\n /**\n * Triggers when the VcOverlayDynamic is destroyed.\n */\n onDestroyed?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when Clock#stopTime is reached.\n */\n onOnStop?: (clock: Cesium.Clock) => void\n /**\n * Triggers when a stop is reached.\n */\n onStopArrived?: (e: {\n overlay: DynamicOverlay\n position: SampledPosition\n offset: Cesium.HeadingPitchRange\n clock: Cesium.Clock\n indexOverlay: number\n indexPosition: number\n }) => void\n /**\n * Triggers when currentTime changed.\n */\n 'onUpdate:currentTime'?: (currentTime: Cesium.JulianDate) => void\n /**\n * Triggers when shouldAnimate changed.\n */\n 'onUpdate:shouldAnimate'?: (shouldAnimate: boolean) => void\n /**\n * Triggers when canAnimate changed.\n */\n 'onUpdate:canAnimate'?: (canAnimate: boolean) => void\n /**\n * Triggers when clockRange changed.\n */\n 'onUpdate:clockRange'?: (clockRange: number | Cesium.ClockRange) => void\n /**\n * Triggers when clockStep changed.\n */\n 'onUpdate:clockStep'?: (clockStep: number | Cesium.ClockStep) => void\n /**\n * Triggers when multiplier changed.\n */\n 'onUpdate:multiplier'?: (multiplier: number) => void\n /**\n * Triggers when startTime changed.\n */\n 'onUpdate:startTime'?: (startTime: Cesium.JulianDate) => void\n /**\n * Triggers when stopTime changed.\n */\n 'onUpdate:stopTime'?: (stopTime: Cesium.JulianDate) => void\n}\n\nexport type VcOverlayDynamicEmits = typeof emits\n\nexport interface VcOverlayDynamicRef extends ComponentPublicInstance<VcOverlayDynamicProps> {\n /**\n * Get overlay by id or index.\n * @param e id or index.\n */\n getOverlay: (e: number | string | DynamicOverlay) => DynamicOverlay\n /**\n * Get overlays.\n */\n getOverlays: () => Array<DynamicOverlay>\n /**\n * Track dynamic overlay.\n * @param trackOverlay tracked overlay or tracked overlay's id or index. If not passed, the first overlay is tracked by default.\n * @param trackViewOpts view parameters.\n */\n trackOverlay: (trackOverlay?: DynamicOverlay | string | number, trackViewOpts?: TrackViewOpts) => void\n /**\n * Zoom to dynamic overlay(s).\n * @param viewOverlays Dynamic overlays (index, id) or a collection of dynamic overlay (index, id). If you don't pass it or pass in an empty array (empty object), it scales to all overlays.\n * @param offset The camera offset to zoom to the overlay.\n */\n zoomToOverlay: (\n overlays: number | string | DynamicOverlay | Array<DynamicOverlay | number | string>,\n offset?: VcHeadingPitchRange\n ) => Promise<boolean>\n\n /**\n * Fly to dynamic overlay(s).\n * @param viewOverlays Dynamic overlays (index, id) or a collection of dynamic overlay (index, id). If you don't pass it or pass in an empty array (empty object), it scales to all overlays.\n * @param offset The camera offset to zoom to the overlay.\n */\n flyToOverlay: (\n overlays: number | string | DynamicOverlay | Array<DynamicOverlay | number | string>,\n options?: {\n duration?: number\n maximumHeight?: number\n offset?: VcHeadingPitchRange\n }\n ) => Promise<boolean>\n}\n"],"names":["v","trackOverlay","overlays","target"],"mappings":"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