casc-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 52.2 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: 2022-08-12 14:31:14\n * @LastEditors: zouyaoji\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 'casc-cesium-utils/types'\nimport { useCommon } from 'casc-cesium-composables'\nimport { show } from 'casc-cesium-utils/cesium-props'\nimport { addCustomProperty, kebabCase } from 'casc-cesium-utils/util'\nimport DynamicOverlay from 'casc-cesium-shared/src/DynamicOverlay'\nimport {\n getPolylineSegmentHeading,\n getPolylineSegmentPitch,\n makeCartesian3,\n makeHeadingPitchRang,\n makeJulianDate\n} from 'casc-cesium-utils/cesium-helpers'\nimport { cloneDeep, differenceBy, remove, find } from 'lodash-unified'\nimport { getInstanceListener } from 'casc-cesium-utils/private/vm'\nimport { commonEmits } from 'casc-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: (overlay: DynamicOverlay, position: SampledPosition, offset: Cesium.HeadingPitchRange, clock: Cesium.Clock) => 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 props.currentTime !== clock.currentTime && 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 props.startTime !== clock.startTime && listener && emit('update:startTime', clock.startTime)\n\n listener = getInstanceListener(instance, 'update:stopTime')\n props.stopTime !== clock.stopTime && 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', overlay, sampledPosition, lastOffset, clock)\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?: (overlay: DynamicOverlay, position: SampledPosition, offset: Cesium.HeadingPitchRange, clock: Cesium.Clock) => 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":[],"mappings":"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