UNPKG

vue-cesium

Version:
1 lines 14.2 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/overlays/echarts/index.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-11 15:52:55\n * @LastEditTime: 2023-04-15 14:05:13\n * @LastEditors: zouyaoji 370681295@qq.com\n * @Description:\n * @FilePath: \\vue-cesium\\packages\\components\\overlays\\echarts\\index.ts\n */\nimport type { CSSProperties, WatchStopHandle, PropType } from 'vue'\nimport { defineComponent, getCurrentInstance, ref, h, reactive, createCommentVNode, watch, onUnmounted, nextTick } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from '@vue-cesium/utils/types'\nimport { useCommon } from '@vue-cesium/composables'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport * as echarts from 'echarts'\nimport { EChartsType, EChartsOption } from 'echarts'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nexport const echartsOverlayProps = {\n options: {\n type: Object as PropType<EChartsOption>,\n required: true\n },\n autoHidden: {\n type: Boolean,\n default: true\n },\n customClass: String,\n coordinateSystem: {\n type: String,\n default: 'cesium'\n }\n}\nconst emits = {\n ...commonEmits,\n mouseenter: (evt: MouseEvent) => true,\n mouseleave: (evt: MouseEvent) => true,\n click: (evt: MouseEvent) => true\n}\nexport default defineComponent({\n name: 'VcOverlayEcharts',\n props: echartsOverlayProps,\n emits: ['beforeLoad', 'ready', 'destroyed', 'mouseenter', 'mouseleave', 'click'],\n setup(props, ctx) {\n // state\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.cesiumClass = 'VcOverlayEcharts'\n instance.cesiumEvents = []\n const commonState = useCommon(props, ctx, instance)\n if (commonState === void 0) {\n return\n }\n const { $services } = commonState\n const canRender = ref(false)\n const rootRef = ref<HTMLElement>()\n const rootStyle = reactive<CSSProperties>({\n left: '0px',\n top: '0px',\n pointerEvents: 'none',\n position: 'absolute'\n })\n let chart: EChartsType\n const visible = ref(true)\n // watcch\n let unwatchFns: Array<WatchStopHandle> = []\n unwatchFns.push(\n watch(\n () => props.options,\n val => {\n commonState.reload()\n }\n )\n )\n\n // methods\n instance.createCesiumObject = async () => {\n return rootRef.value\n }\n instance.mount = async () => {\n const { viewer } = $services\n canRender.value = true\n\n nextTick(() => {\n echarts.registerCoordinateSystem(props.coordinateSystem, getE3CoordinateSystem(viewer))\n if (rootRef.value) {\n chart = echarts.init(rootRef.value)\n\n setCharts()\n viewer.scene.postRender.addEventListener(onPreRender)\n }\n })\n\n return true\n }\n\n instance.unmount = async () => {\n const { viewer } = $services\n viewer.scene.postRender.removeEventListener(onPreRender)\n canRender.value = false\n return true\n }\n\n const onPreRender = () => {\n if (visible.value) {\n const { viewer } = $services\n chart.resize({\n width: viewer.canvas.width,\n height: viewer.canvas.height\n })\n }\n }\n\n const setCharts = () => {\n if (visible.value && props.options) {\n chart.setOption(props.options)\n }\n }\n const getE3CoordinateSystem = (viewer: Cesium.Viewer) => {\n const CoordSystem = function CoordSystem(this: any, viewer) {\n this.viewer = viewer\n this._mapOffset = [0, 0]\n }\n\n CoordSystem.create = function (ecModel) {\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.get('coordinateSystem') === props.coordinateSystem) {\n seriesModel.coordinateSystem = new CoordSystem(viewer)\n }\n })\n return []\n }\n\n CoordSystem.getDimensionsInfo = function () {\n return ['x', 'y']\n }\n\n CoordSystem.dimensions = ['x', 'y']\n CoordSystem.prototype.dimensions = ['x', 'y']\n CoordSystem.prototype.setMapOffset = function setMapOffset(mapOffset) {\n this._mapOffset = mapOffset\n }\n CoordSystem.prototype.dataToPoint = function (data) {\n const result = []\n const cartesian3 = Cesium.Cartesian3.fromDegrees(data[0], data[1])\n if (!cartesian3) {\n return result\n }\n\n if (props.autoHidden) {\n const up = Cesium.Ellipsoid.WGS84.geodeticSurfaceNormal(cartesian3, new Cesium.Cartesian3())\n const cd = this.viewer.camera.direction\n if (Cesium.Cartesian3.dot(up, cd) >= 0) {\n return result\n }\n }\n\n const coords = this.viewer.scene.cartesianToCanvasCoordinates(cartesian3)\n if (!coords) {\n return result\n }\n return [coords.x - this._mapOffset[0], coords.y - this._mapOffset[1]]\n }\n CoordSystem.prototype.pointToData = function (pt) {\n const mapOffset = this._mapOffset\n const ellipsoid = viewer.scene.globe.ellipsoid\n const car3 = new Cesium.Cartesian3(pt[1] + mapOffset[1], pt[2] + mapOffset[2], 0)\n const cart = ellipsoid.cartesianToCartographic(car3)\n return cart ? [cart.longitude, cart.latitude] : [0, 0]\n }\n CoordSystem.prototype.getviewerRect = function () {\n const canvas = this.viewer.canvas\n return new echarts.graphic.BoundingRect(0, 0, canvas.width, canvas.height)\n }\n CoordSystem.prototype.getRoamTransform = function () {\n return echarts.matrix.create()\n }\n\n return CoordSystem\n }\n\n const renderContent = () => {\n if (canRender.value) {\n return h(\n 'div',\n {\n ref: rootRef,\n class: `vc-echart-container${props.customClass ? ' ' + props.customClass : ''}`,\n style: rootStyle,\n onMouseenter: onMouseenter,\n onMouseleave: onMouseleave,\n onClick: onClick\n },\n hSlot(ctx.slots.default)\n )\n } else {\n return createCommentVNode('v-if')\n }\n }\n\n const onClick = evt => {\n ctx.emit('click', evt)\n }\n\n const onMouseenter = evt => {\n ctx.emit('mouseenter', evt)\n }\n\n const onMouseleave = evt => {\n ctx.emit('mouseleave', evt)\n }\n\n // life cycle\n onUnmounted(() => {\n unwatchFns.forEach(item => item())\n unwatchFns = []\n })\n\n return () => renderContent()\n }\n})\n\nexport type VcOverlayEchartsEmits = typeof emits\nexport interface VcOverlayEchartsProps {\n /**\n * Specify the configuration items of the Echarts.\n */\n options: EChartsOption\n /**\n * Specify whether Echart elements are automatically hidden when they are on the back of the viewer.\n * Default value: true\n */\n autoHidden?: boolean\n /**\n * Specify div class of echart.\n */\n customClass?: string\n /**\n * Specify the name of the custom coordinate system when Echart is initialized.\n * Default value: cesium\n */\n coordinateSystem?: string\n /**\n * Triggers before the VcOverlayEcharts is loaded.\n */\n onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the VcOverlayEcharts 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 VcOverlayEcharts is destroyed.\n */\n onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcOverlayEchartsRef = VcComponentPublicInstance<VcOverlayEchartsProps>\n"],"names":["CoordSystem","viewer"],"mappings":"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"}