UNPKG

vue-cesium

Version:
1 lines 47.8 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/overlays/typhoon/index.ts"],"sourcesContent":["import type { PropType, VNode } from 'vue'\nimport { defineComponent, getCurrentInstance, ref, h, reactive } from 'vue'\nimport type {\n VcAppearance,\n VcCartesian3Array,\n VcColor,\n VcComponentInternalInstance,\n VcComponentPublicInstance,\n VcPickEvent,\n VcPosition,\n VcReadyObject,\n VcTyphoonDatasource,\n VcTyphoonPoint,\n VcTyphoonRoute\n} from '@vue-cesium/utils/types'\nimport { useLocale } from '@vue-cesium/composables'\nimport { makeCartesian3Array } from '@vue-cesium/utils/cesium-helpers'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nimport {\n VcCollectionLabel,\n VcCollectionPoint,\n VcCollectionPrimitive,\n VcCollectionPrimitiveRef,\n VcLabelProps,\n VcPointProps,\n VcPolygon\n} from '@vue-cesium/components/primitive-collections'\nimport { cloneDeep, merge, uniqWith } from 'lodash-es'\nimport useLog from '@vue-cesium/composables/private/use-log'\nimport { VcPrimitive, VcPrimitiveProps } from '@vue-cesium/components/primitives'\nimport { VcGeometryInstance } from '@vue-cesium/components/geometry-instance'\nimport { VcGeometryPolyline, VcGeometryPolylineProps } from '@vue-cesium/components/geometries'\nimport VcOverlayHtml from '@vue-cesium/components/overlays/html'\nimport circle from '@turf/circle'\nimport { useCommon } from '@vue-cesium/composables'\n\nconst defaultPointProps = {\n color: '#409eff',\n pixelSize: 8,\n outlineColor: 'rgba(0,0,0,0.6)',\n outlineWidth: 1,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n}\n\nconst defaultLinePrimitiveProps = {\n enableMouseEvent: false,\n asynchronous: false,\n allowPicking: true\n}\n\nconst defaultLineGeometryProps = {\n width: 2.0,\n show: true\n}\n\nconst defaultLabelProps = {\n pixelOffset: [20, 0],\n showBackground: true,\n backgroundColor: 'rgba(0,0,0,1)',\n enableMouseEvent: false\n}\n\nexport const typhoonOverlayProps = {\n typhoonRoutes: {\n type: Array as PropType<VcTyphoonRoute[]>\n },\n clampToGround: {\n type: Boolean,\n default: false\n },\n radius7Color: {\n type: String,\n default: 'rgba(68, 255, 230, 0.3)'\n },\n radius10Color: {\n type: String,\n default: 'rgba(32, 237, 39, 0.3)'\n },\n radius12Color: {\n type: String,\n default: 'rgba(255, 247, 16, 0.3)'\n },\n pointProps: {\n type: [Object, Function] as PropType<VcPointProps | ((e: VcTyphoonPoint) => VcPointProps)>,\n default: () => defaultPointProps\n },\n linePrimitiveProps: {\n type: [Object, Function] as PropType<VcPrimitiveProps | ((e: VcTyphoonDatasource) => VcPrimitiveProps)>,\n default: () => defaultLinePrimitiveProps\n },\n lineGeometryProps: {\n type: [Object, Function] as PropType<VcGeometryPolylineProps | ((e: VcTyphoonDatasource) => VcGeometryPolylineProps)>,\n default: () => defaultLineGeometryProps\n },\n labelProps: {\n type: [Object, Function] as PropType<VcLabelProps | ((e: VcTyphoonDatasource) => VcLabelProps)>,\n default: () => defaultLabelProps\n },\n circleOverlayPosition: {\n type: [String, Function] as PropType<string | ((e: VcTyphoonPoint) => string)>,\n default: '-175px'\n },\n setsArray: {\n type: Array as PropType<string[]>,\n default: () => ['中央台', '日本', '美国', '韩国', '中国香港']\n }\n}\nconst emits = {\n ...commonEmits,\n mouseover: (e: VcPickEvent) => true,\n mouseout: (e: VcPickEvent) => true,\n click: (e: VcPickEvent) => true,\n clickout: (e: VcPickEvent) => true,\n forecastRouteAdded: (e: { livePoint: VcTyphoonPoint; datasource: VcTyphoonDatasource; addedByClick: boolean }) => true\n}\n\nexport default defineComponent({\n name: 'VcOverlayTyphoon',\n props: typhoonOverlayProps,\n emits: emits,\n setup(props: VcOverlayTyphoonProps, ctx) {\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.cesiumClass = 'VcOverlayTyphoon'\n instance.cesiumEvents = []\n const commonState = useCommon(props, ctx, instance)\n if (commonState === void 0) {\n return\n }\n\n const { $services } = commonState\n const logger = useLog(instance as VcComponentInternalInstance)\n const { t } = useLocale()\n const primitiveCollectionRef = ref<VcCollectionPrimitiveRef>(null)\n const typhoonDatasources: VcTyphoonDatasource[] = reactive([])\n\n instance.createCesiumObject = async () => {\n return primitiveCollectionRef\n }\n\n const addTyphoonPath = (index: number, datasource: VcTyphoonDatasource) => {\n datasource.playIndex = index\n const point = datasource.typhoonRoute.points[index]\n point.type = 'live'\n point.index = index\n point.tfbh = datasource.name\n\n const position = [point.lng, point.lat]\n datasource.positions.push(position)\n\n const pointProps = typeof props.pointProps === 'function' ? merge(cloneDeep(defaultPointProps), props.pointProps(point)) : props.pointProps\n datasource.points.push({\n id: point.id || Cesium.createGuid(),\n position,\n onMouseover(evt: VcPickEvent) {\n ctx.emit('mouseover', evt)\n },\n onMouseout(evt) {\n ctx.emit('mouseout', evt)\n },\n onClick(evt) {\n showForecast(point, datasource, index, true)\n datasource.playIndex = point.index\n ctx.emit('click', evt)\n },\n onClickout(evt) {\n ctx.emit('clickout', evt)\n },\n ...pointProps,\n ...point\n })\n const lastPoint = datasource.points[index]\n lastPoint && datasource.colors.push(lastPoint.color)\n // 最后一个实况点,展示预报路径 如最后一个点没有预报路径则显示最新一个点的预报路径\n if (index === datasource.typhoonRoute.points.length - 1) {\n showForecast(point, datasource, index)\n }\n }\n const playTyphoonRoute = (tfbh: string) => {\n const typhoonDatasourceIndex = typhoonDatasources.findIndex(datasource => datasource.name === tfbh)\n if (typhoonDatasourceIndex >= 0) {\n let index = 0\n const datasource = typhoonDatasources[typhoonDatasourceIndex] as VcTyphoonDatasource\n datasource.points.length = 0\n datasource.positions.length = 0\n const typhoonData = datasource.typhoonRoute\n addTyphoonPath(index, datasource)\n\n cancelAnimationFrame(datasource.playInterval)\n const animation = () => {\n index++\n if (index >= typhoonData.points.length) {\n cancelAnimationFrame(datasource.playInterval)\n } else {\n addTyphoonPath(index, datasource)\n }\n\n datasource.playInterval = requestAnimationFrame(animation)\n }\n datasource.playInterval = requestAnimationFrame(animation)\n } else {\n // logger.warn('播放台风失败,原因:未找到对应编号的台风数据。')\n logger.warn(t(`vc.typhoon.warn`) || '播放台风失败,原因:未找到对应编号的台风数据。')\n }\n }\n\n const showForecast = (livePoint: VcTyphoonPoint, datasource: VcTyphoonDatasource, index?: number, fromClick = false) => {\n // 1. 删除预报数据\n datasource.children.length = 0\n // 2. 添加预报\n let forecast = fromClick ? livePoint.forecast || [] : []\n if (!fromClick) {\n for (let i = 0; i < props.setsArray.length; i++) {\n const f = (livePoint, index) => {\n const forecastRaw: Array<any> = livePoint?.forecast || []\n forecast.push(...forecastRaw)\n\n if (fromClick) {\n return\n }\n\n forecast = uniqWith(forecast, (a: any, b) => a.sets === b.sets)\n\n const sets = props.setsArray[i]\n const setsIndex = forecast.findIndex(v => v.sets === sets)\n\n if (setsIndex > -1) {\n if (!forecast[setsIndex].unshifted) {\n forecast[setsIndex].points.unshift({\n lat: livePoint.lat,\n lng: livePoint.lng\n } as any)\n forecast[setsIndex].unshifted = true\n }\n\n // continue\n } else if (index > 0) {\n const preLivePoint = datasource.typhoonRoute.points[index - 1]\n f(preLivePoint, index - 1)\n }\n }\n\n f(livePoint, index)\n }\n }\n\n if (!forecast || forecast.length <= 0) {\n return\n }\n // let newForecast = []\n // newForecast = forecast.filter(point => {\n // return point.sets !== '英国'\n // })\n for (let i = 0; i < forecast.length; i++) {\n // 预报机构数据\n const typhoonRouteBySet = forecast[i]\n\n const points: VcTyphoonPoint[] = []\n const positions: VcPosition[] = []\n const datasourceBySet: VcTyphoonDatasource = {\n name: datasource.name + '_' + typhoonRouteBySet.sets,\n typhoonRoute: typhoonRouteBySet,\n show: true,\n positions,\n points,\n type: 'forc'\n }\n datasource.children.push(datasourceBySet)\n typhoonRouteBySet.points.forEach((point, index) => {\n const position = [point.lng, point.lat]\n datasourceBySet.positions.push(position)\n\n if (index === 0 && fromClick) {\n datasourceBySet.positions.unshift([livePoint.lng, livePoint.lat])\n }\n\n point.sets = typhoonRouteBySet.sets\n point.type = 'forc'\n point.index = index\n const pointProps = typeof props.pointProps === 'function' ? props.pointProps(point) : props.pointProps\n index !== 0 &&\n datasourceBySet.points.push({\n id: point.id || Cesium.createGuid(),\n position,\n onMouseover(evt: VcPickEvent) {\n ctx.emit('mouseover', evt)\n },\n onMouseout(evt) {\n ctx.emit('mouseout', evt)\n },\n onClick(evt) {\n ctx.emit('click', evt)\n },\n ...pointProps,\n ...point\n })\n })\n }\n\n ctx.emit('forecastRouteAdded', {\n livePoint,\n datasource,\n addedByClick: fromClick\n })\n }\n\n const addTyphoonRoute = (typhoonRoute: VcTyphoonRoute) => {\n const points: VcTyphoonPoint[] = []\n const positions: VcPosition[] = []\n const typhoonDatasource: VcTyphoonDatasource = {\n name: typhoonRoute.tfbh,\n typhoonRoute,\n show: true,\n positions,\n points,\n children: [],\n colors: [],\n type: 'live'\n }\n\n typhoonDatasources.push(typhoonDatasource)\n\n playTyphoonRoute(typhoonRoute.tfbh)\n\n return typhoonDatasource\n }\n\n const flyToTyphoonRoute = (\n typhoon: string | Array<string>,\n options?: {\n duration?: number\n offset?: Cesium.HeadingPitchRange\n complete?: Cesium.Camera.FlightCompleteCallback\n cancel?: Cesium.Camera.FlightCancelledCallback\n endTransform?: Cesium.Matrix4\n maximumHeight?: number\n pitchAdjustHeight?: number\n flyOverLongitude?: number\n flyOverLongitudeWeight?: number\n easingFunction?: Cesium.EasingFunction.Callback\n }\n ) => {\n const names = []\n if (typeof typhoon === 'string') {\n names.push(typhoon)\n } else {\n names.push(...typhoon)\n }\n let boundingSphereUnion = null\n names.forEach(name => {\n const positions = []\n const typhoonDatasource = typhoonDatasources.find(v => v.name === name)\n if (typhoonDatasource && typhoonDatasource.typhoonRoute.points) {\n typhoonDatasource.typhoonRoute.points.forEach(point => {\n positions.push([point.lng, point.lat])\n })\n }\n\n // 预报路径点\n if (typhoonDatasource?.children?.length) {\n typhoonDatasource.children.forEach(v => {\n v.typhoonRoute.points.forEach(point => {\n positions.push([point.lng, point.lat])\n })\n })\n }\n\n const cartesian3Array = makeCartesian3Array(positions)\n const boundingSphere = Cesium.BoundingSphere.fromPoints(cartesian3Array as Cesium.Cartesian3[])\n if (null === boundingSphereUnion) {\n boundingSphereUnion = boundingSphere\n } else {\n boundingSphereUnion = Cesium.BoundingSphere.union(boundingSphereUnion, boundingSphere)\n }\n })\n\n $services.viewer.camera.flyToBoundingSphere(new Cesium.BoundingSphere(boundingSphereUnion.center, boundingSphereUnion.radius), {\n ...options\n })\n }\n\n const removeTyphoonData = (datasource: VcTyphoonDatasource) => {\n const index = typhoonDatasources.indexOf(datasource)\n if (index >= 0) {\n clearInterval(datasource.playInterval)\n typhoonDatasources.splice(index, 1)\n }\n }\n\n const removeAllTyphoonData = () => {\n typhoonDatasources.forEach(datasource => {\n clearInterval(datasource.playInterval)\n })\n typhoonDatasources.length = 0\n }\n\n const getTyphoonCirclePostions = (center: VcPosition, radiusData) => {\n let positions: VcPosition[] = []\n if (typeof radiusData === 'number') {\n positions = circle(center as number[], radiusData * 1000, {\n units: 'meters'\n }).geometry.coordinates as unknown as VcPosition[]\n } else if (radiusData['ne']) {\n const _angInterval = 6\n const _pointNums = 360 / (_angInterval * 4)\n const quadrant = {\n // 逆时针算角度\n '0': 'ne',\n '1': 'nw',\n '2': 'sw',\n '3': 'se'\n }\n for (let i = 0; i < 4; i++) {\n let _r = parseFloat(radiusData[quadrant[i]]) * 1000 // 单位是km\n if (!_r) _r = 0\n for (let j = i * _pointNums; j <= (i + 1) * _pointNums; j++) {\n const _ang = _angInterval * j\n const x: number = center[0] + (_r * Math.cos((_ang * Math.PI) / 180)) / 111000\n const y: number = center[1] + (_r * Math.sin((_ang * Math.PI) / 180)) / 111000\n positions.push([x, y])\n }\n }\n }\n return positions as VcCartesian3Array\n }\n\n const getChildren = (datasources: VcTyphoonDatasource[], centerPointCircle: VNode[]) => {\n const children: Array<VNode> = []\n datasources.forEach(typhoonDatasource => {\n // polyline 台风路径-线\n if (typhoonDatasource.positions.length > 1) {\n const linePrimitiveProps: any =\n typeof props.linePrimitiveProps === 'function'\n ? merge(cloneDeep(defaultLinePrimitiveProps), props.linePrimitiveProps(typhoonDatasource))\n : props.linePrimitiveProps\n\n const lineGeometryProps =\n typeof props.lineGeometryProps === 'function'\n ? merge(cloneDeep(defaultLineGeometryProps), props.lineGeometryProps(typhoonDatasource))\n : props.lineGeometryProps\n\n children.push(\n h(\n VcPrimitive,\n {\n show: typhoonDatasource.show,\n appearance: {\n type: typhoonDatasource.type === 'live' ? 'PolylineColorAppearance' : 'PolylineMaterialAppearance',\n options: {\n material:\n typhoonDatasource.type === 'live'\n ? undefined\n : {\n fabric: {\n type: 'PolylineDash',\n uniforms: {\n color: '#000000'\n }\n }\n },\n translucent: true\n }\n } as VcAppearance,\n onMouseover: evt => {\n ctx.emit('mouseover', evt)\n },\n onMouseout: evt => {\n ctx.emit('mouseout', evt)\n },\n onClick: evt => {\n ctx.emit('click', evt)\n },\n onClickout: evt => {\n ctx.emit('clickout', evt)\n },\n ...linePrimitiveProps\n },\n () =>\n h(\n VcGeometryInstance,\n {\n id: typhoonDatasource.name || Cesium.createGuid()\n },\n () =>\n h(VcGeometryPolyline, {\n positions: makeCartesian3Array(typhoonDatasource.positions as VcCartesian3Array),\n colors: typhoonDatasource.colors,\n ...lineGeometryProps\n })\n )\n )\n )\n }\n // points 台风路径-点\n typhoonDatasource.points.length &&\n children.push(\n h(VcCollectionPoint, {\n show: typhoonDatasource.show,\n points: typhoonDatasource.points,\n onReady: (e: VcReadyObject) => {\n const { cesiumObject: pointPrimitiveCollection } = e as any\n const originalUpdate = pointPrimitiveCollection.update\n\n pointPrimitiveCollection.update = function (frameState) {\n const originalLength = frameState.commandList.length\n originalUpdate.call(this, frameState)\n const endLength = frameState.commandList.length\n for (let i = originalLength; i < endLength; ++i) {\n frameState.commandList[i].pass = Cesium['Pass'].TRANSLUCENT\n frameState.commandList[i].renderState = Cesium['RenderState'].fromCache({\n depthTest: {\n enabled: false\n },\n depthMask: false\n })\n }\n }\n }\n })\n )\n\n // polygon 台风风圈\n if (typhoonDatasource.type === 'live') {\n const labelProps =\n typeof props.labelProps === 'function' ? merge(cloneDeep(defaultLabelProps), props.labelProps(typhoonDatasource)) : props.labelProps\n\n //text 台风名字\n children.push(\n h(VcCollectionLabel, {\n show: typhoonDatasource.show,\n enableMouseEvent: false,\n labels: [\n {\n text: typhoonDatasource.typhoonRoute.name,\n position: typhoonDatasource.positions[0],\n ...labelProps\n } as VcLabelProps\n ]\n })\n )\n\n const point = typhoonDatasource.points[typhoonDatasource.playIndex]\n centerPointCircle.length =\n // 旋转图形\n centerPointCircle.push(\n h(VcOverlayHtml, { show: typhoonDatasource.show, position: point.position, autoHidden: true }, () =>\n h('div', {\n class: 'vc-typhoon-circle',\n style: {\n backgroundPosition:\n typeof props.circleOverlayPosition == 'function' ? props.circleOverlayPosition(point) : props.circleOverlayPosition\n }\n })\n )\n )\n // 7 级风圈\n if (point?.radius7 > 0) {\n children.push(\n h(VcPolygon, {\n show: typhoonDatasource.show,\n positions: getTyphoonCirclePostions(point.position, point.radius7_quad),\n clampToGround: props.clampToGround,\n asynchronous: false,\n allowPicking: false,\n enableMouseEvent: false,\n classificationType: 2,\n appearance: {\n type: 'MaterialAppearance',\n options: {\n material: {\n fabric: {\n type: 'Color',\n uniforms: {\n color: props.radius7Color\n }\n }\n }\n }\n } as VcAppearance,\n onReady: onVcPolygonReady\n })\n )\n }\n // 10 级风圈\n if (point?.radius10 > 0) {\n children.push(\n h(VcPolygon, {\n show: typhoonDatasource.show,\n positions: getTyphoonCirclePostions(point.position, point.radius10_quad),\n clampToGround: props.clampToGround,\n asynchronous: false,\n allowPicking: false,\n enableMouseEvent: false,\n classificationType: 2,\n appearance: {\n type: 'MaterialAppearance',\n options: {\n material: {\n fabric: {\n type: 'Color',\n uniforms: {\n color: props.radius10Color\n }\n }\n }\n }\n } as VcAppearance,\n onReady: onVcPolygonReady\n })\n )\n }\n // 12 级风圈\n if (point?.radius12 > 0) {\n children.push(\n h(VcPolygon, {\n show: typhoonDatasource.show,\n positions: getTyphoonCirclePostions(point.position, point.radius12_quad),\n clampToGround: props.clampToGround,\n asynchronous: false,\n allowPicking: false,\n enableMouseEvent: false,\n classificationType: 2,\n appearance: {\n type: 'MaterialAppearance',\n options: {\n material: {\n fabric: {\n type: 'Color',\n uniforms: {\n color: props.radius12Color\n }\n }\n }\n }\n } as VcAppearance,\n onReady: onVcPolygonReady\n })\n )\n }\n }\n\n if (typhoonDatasource.children) {\n children.push(...getChildren(typhoonDatasource.children, centerPointCircle))\n }\n })\n\n return children\n }\n\n const onVcPolygonReady = e => {\n const primitive = e.cesiumObject as any\n const originalPrimitiveUpdate = primitive.update\n\n primitive.update = function (frameState) {\n const originalLength = frameState.commandList.length\n originalPrimitiveUpdate.call(this, frameState)\n const endLength = frameState.commandList.length\n for (let i = originalLength; i < endLength; ++i) {\n if (frameState.commandList[i].pass !== Cesium['Pass'].TRANSLUCENT) {\n continue\n }\n frameState.commandList[i].pass = Cesium['Pass'].OPAQUE\n frameState.commandList[i].renderState = Cesium['RenderState'].fromCache({\n depthTest: {\n enabled: false\n },\n depthMask: false,\n blending: Cesium.BlendingState.ALPHA_BLEND\n })\n }\n }\n }\n\n Object.assign(instance.proxy, {\n addTyphoonRoute,\n playTyphoonRoute,\n flyToTyphoonRoute,\n showForecast,\n removeTyphoonData,\n removeAllTyphoonData,\n getTyphoonDatasources: () => typhoonDatasources\n })\n\n props.typhoonRoutes.forEach(typhoonData => {\n addTyphoonRoute(typhoonData)\n })\n\n return () => {\n const centerPointCircle: VNode[] = []\n const children = getChildren(typhoonDatasources, centerPointCircle)\n return [\n h(\n VcCollectionPrimitive,\n {\n ref: primitiveCollectionRef,\n show: true\n // onReady: e => {\n // ctx.emit('ready', e)\n // }\n },\n () => children\n ),\n ...centerPointCircle\n ]\n }\n }\n})\n\nexport type VcOverlayTyphoonEmits = typeof emits\nexport interface VcOverlayTyphoonProps {\n /**\n * Specify the routes of typhoon.\n */\n typhoonRoutes?: VcTyphoonRoute[]\n /**\n * Specify whether the route object is attached to the ground or 3dtiles.\n */\n clampToGround?: boolean\n /**\n * Specify the color of radius7.\n * Default value: rgba(68, 255, 230, 0.3)\n */\n radius7Color?: VcColor\n /**\n * Specify the color of radius10.\n * Default value: rgba(32, 237, 39, 0.3)\n */\n radius10Color?: VcColor\n /**\n * Specify the color of radius12.\n * Default value: rgba(255, 247, 16, 0.3)\n */\n radius12Color?: VcColor\n /**\n * Specify the props of point.\n */\n pointProps?: VcPointProps | ((e: VcTyphoonPoint) => VcPointProps)\n /**\n * Specify the props of line primitive.\n */\n linePrimitiveProps?: VcPrimitiveProps | ((e: VcTyphoonDatasource) => VcPrimitiveProps)\n /**\n * Specify the props of line geometry.\n */\n lineGeometryProps?: VcGeometryPolylineProps | ((e: VcTyphoonDatasource) => VcGeometryPolylineProps)\n /**\n * Specify the props of typhoon name label.\n */\n labelProps?: VcLabelProps | ((e: VcTyphoonDatasource) => VcLabelProps)\n /**\n * Specify the position of the background map of the typhoon wind circle.\n * Default value: '-175px'\n */\n circleOverlayPosition?: string | ((e: VcTyphoonPoint) => string)\n /**\n * Specify the forecasting agency.\n */\n setsArray?: string[]\n /**\n * Triggers before the VcOverlayHtml is loaded.\n */\n onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the VcOverlayHtml is successfully loaded.\n */\n onReady?: (readyObject: VcReadyObject) => void\n /**\n * Triggers when the component load failed.\n */\n onUnready?: (evt: any) => void\n /**\n * Triggers when the VcOverlayHtml is destroyed.\n */\n onDestroyed?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the mouse moves over to the typhoon object.\n */\n onMouseover?: (evt: VcPickEvent) => void\n /**\n * Triggers when the mouse moves out to the typhoon object.\n */\n onMouseout?: (evt: VcPickEvent) => void\n /**\n * Triggers when the mouse clicks on the typhoon object.\n */\n onClick?: (evt: VcPickEvent) => void\n /**\n * Triggers when the mouse clicks outside the typhoon object.\n */\n onClickout?: (evt: VcPickEvent) => void\n /**\n * Triggers when the forecast route is added.\n */\n onForecastRouteAdded?: (e: { livePoint: VcTyphoonPoint; datasource: VcTyphoonDatasource; addedByClick: boolean }) => void\n}\n\nexport interface VcOverlayTyphoonRef extends VcComponentPublicInstance<VcOverlayTyphoonProps> {\n /**\n * Add typhoon track data.\n * @param typhoonRoute\n * @returns\n */\n addTyphoonRoute: (typhoonRoute: VcTyphoonRoute) => VcTyphoonDatasource\n /**\n * Play typhoon route data.\n * @param tfbh\n * @returns\n */\n playTyphoonRoute: (tfbh: string) => void\n /**\n * Fly to typhoon route data.\n * @param tfbhs\n * @returns\n */\n flyToTyphoonRoute: (tfbhs: string | string[]) => void\n /**\n * Shows the forecast typhoon track of the live point.\n * @param livePoint\n * @param datasource\n * @param index\n * @param fromClick\n * @returns\n */\n showForecast: (livePoint: VcTyphoonPoint, datasource: VcTyphoonDatasource, index?: number, fromClick?: boolean) => void\n /**\n * Remove typhoon track data.\n * @param datasource\n * @returns\n */\n removeTyphoonData: (datasource: VcTyphoonDatasource) => void\n /**\n * Remove all typhoon track data.\n * @returns\n */\n removeAllTyphoonData: () => void\n /**\n * Get all typhoon track data.\n * @returns\n */\n getTyphoonDatasources: () => VcTyphoonDatasource[]\n}\n"],"names":["livePoint","index","VcOverlayHtml"],"mappings":"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"}