UNPKG

vue-cesium

Version:
1 lines 45.6 kB
{"version":3,"file":"use-drawing-point.mjs","sources":["../../../../../packages/composables/use-drawing/use-drawing-point.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-19 11:34:26\n * @LastEditTime: 2024-10-09 15:33:13\n * @LastEditors: zouyaoji 370681295@qq.com\n * @Description:\n * @FilePath: \\vue-cesium\\packages\\composables\\use-drawing\\use-drawing-point.ts\n */\n\nimport { VcOverlayHtml } from '@vue-cesium/components/overlays'\nimport { VcCollectionBillboard, VcCollectionLabel, VcCollectionPoint, VcCollectionPrimitive } from '@vue-cesium/components/primitive-collections'\nimport { VcBtn, VcTooltip } from '@vue-cesium/components/ui'\nimport { useLocale } from '../use-locale'\nimport { DrawStatus, MeasureUnits } from '@vue-cesium/shared'\nimport { makeCartesian3 } from '@vue-cesium/utils/cesium-helpers'\nimport { VcPointDrawing } from '@vue-cesium/utils/drawing-types'\nimport { VcComponentInternalInstance, VcDrawingProvider } from '@vue-cesium/utils/types'\nimport { getCurrentInstance, nextTick, onUnmounted, ref, VNode, watch, WatchStopHandle, h } from 'vue'\nimport useCommon from '../use-common'\nimport useDrawingAction from './use-drawing-action'\nimport { VcAnalysesRef, VcDrawingsRef, VcMeasurementsRef } from '@vue-cesium/components'\nimport { platform } from '@vue-cesium/utils/platform'\n\nexport default function (props, ctx, cmpName: string) {\n const instance = getCurrentInstance() as VcComponentInternalInstance\n\n const commonState = useCommon(props, ctx, instance)\n if (commonState === void 0) {\n return\n }\n\n const { t } = useLocale()\n const $services = commonState.$services as VcDrawingProvider\n const { emit } = ctx\n\n const {\n drawingType,\n drawTip,\n drawTipOpts,\n drawStatus,\n canShowDrawTip,\n drawTipPosition,\n showEditor,\n editorPosition,\n mouseoverPoint,\n editingPoint,\n primitiveCollectionRef,\n editorType,\n onMouseoverPoints,\n onMouseoutPoints,\n onMouseenterEditor,\n onMouseleaveEditor,\n onPrimitiveCollectionReady,\n onVcCollectionPointReady,\n onVcCollectionLabelReady\n } = useDrawingAction(props, ctx, instance, cmpName, $services)\n\n const renderDatas = ref<Array<VcPointDrawing>>([])\n let restorePosition\n let unwatchFns: Array<WatchStopHandle> = []\n\n if (cmpName === 'VcDrawingPin' && props.billboardOpts.image === '') {\n props.billboardOpts.image = Cesium.buildModuleUrl('Assets/Textures/pin.svg')\n }\n\n // watch\n unwatchFns.push(\n watch(\n () => props.editable,\n val => {\n const { drawingFabInstance, selectedDrawingActionInstance } = $services\n if (val && selectedDrawingActionInstance?.name === drawingType) {\n const drawingFabInstanceVm = drawingFabInstance?.proxy as VcDrawingsRef | VcMeasurementsRef | VcAnalysesRef\n drawingFabInstanceVm.toggleAction(selectedDrawingActionInstance)\n }\n }\n )\n )\n\n const convert2Degrees = (position, point, scene) => {\n const cart = Cesium.Cartographic.fromCartesian(position, scene.globe.ellipsoid)\n const positionDegrees = [Cesium.Math.toDegrees(cart.longitude), Cesium.Math.toDegrees(cart.latitude), cart.height] as [number, number, number]\n point.positionDegrees = positionDegrees\n }\n\n const startNew = () => {\n const { Cartesian3 } = Cesium\n const point: VcPointDrawing = {\n drawStatus: DrawStatus.Drawing,\n show: false,\n position: new Cartesian3(),\n lng: 0,\n lat: 0,\n height: 0,\n slope: 0,\n pointOpts: {},\n labelOpts: {},\n billboardOpts: {}\n }\n\n renderDatas.value.push(point)\n drawStatus.value = DrawStatus.Drawing\n canShowDrawTip.value = true\n drawTip.value = drawTipOpts.value.drawingTipStart\n }\n\n const stop = (removeLatest = true) => {\n if (removeLatest && drawStatus.value === DrawStatus.Drawing) {\n renderDatas.value.pop()\n }\n\n const index = editingPoint.value ? editingPoint.value._vcPolylineIndx : renderDatas.value.length - 1\n const point: VcPointDrawing = renderDatas.value[index]\n if (point) {\n point.drawStatus = DrawStatus.AfterDraw\n }\n\n drawStatus.value = DrawStatus.AfterDraw\n canShowDrawTip.value = false\n drawTipPosition.value = [0, 0, 0]\n }\n\n const handleMouseClick = (movement, options?) => {\n const { viewer, drawingFabInstance, getWorldPosition, selectedDrawingActionInstance } = $services\n const drawingFabInstanceVm = drawingFabInstance?.proxy as VcDrawingsRef | VcMeasurementsRef | VcAnalysesRef\n if (options.button === 2 && options.ctrl) {\n const drawingsOption = drawingFabInstanceVm?.getDrawingActionInstance(drawingType)\n drawingFabInstanceVm?.toggleAction(drawingsOption)\n\n nextTick(() => {\n emit(\n 'drawEvt',\n {\n name: drawingType,\n finished: true,\n windowPoistion: movement,\n type: 'cancel'\n },\n viewer\n )\n })\n return\n }\n\n // if (drawStatus.value === DrawStatus.AfterDraw) {\n // startNew()\n // }\n\n const index = editingPoint.value ? editingPoint.value._vcPolylineIndx : renderDatas.value.length - 1\n const point: VcPointDrawing = renderDatas.value[index]\n\n if (options.button === 2 && editingPoint.value) {\n drawingFabInstanceVm.editingActionName = undefined\n renderDatas.value[index] = restorePosition\n drawStatus.value = DrawStatus.AfterDraw\n renderDatas.value[index].drawStatus = DrawStatus.AfterDraw\n editingPoint.value = undefined\n drawTip.value = drawTipOpts.value.drawingTipStart\n canShowDrawTip.value = Cesium.defined(selectedDrawingActionInstance)\n nextTick(() => {\n emit(\n 'drawEvt',\n {\n name: drawingType,\n index,\n renderDatas,\n finished: true,\n windowPoistion: movement,\n type: 'cancel'\n },\n viewer\n )\n })\n return\n }\n\n if (options.button !== 0) {\n return\n }\n\n const { defined } = Cesium\n let type = 'new'\n if (drawStatus.value === DrawStatus.BeforeDraw) {\n const scene = viewer.scene\n const position = getWorldPosition(scene, movement, {} as any)\n\n if (!defined(position)) {\n return\n }\n\n point.position = position\n point.show = true\n point.drawStatus = DrawStatus.AfterDraw\n drawStatus.value = DrawStatus.AfterDraw\n drawTip.value = drawTipOpts.value.drawingTipStart\n\n nextTick(() => {\n emit(\n 'drawEvt',\n {\n index,\n renderDatas,\n name: drawingType,\n finished: true,\n position,\n windowPoistion: movement,\n type\n },\n viewer\n )\n })\n } else {\n drawStatus.value = DrawStatus.AfterDraw\n point.drawStatus = DrawStatus.AfterDraw\n\n const scene = viewer.scene\n\n if (platform().hasTouch === true) {\n const position = getWorldPosition(scene, movement, {} as any)\n convert2Degrees(position, point, scene)\n if (defined(position)) {\n point.position = position\n point.show = true\n }\n }\n\n if (editingPoint.value) {\n editingPoint.value = undefined\n drawingFabInstanceVm.editingActionName = undefined\n canShowDrawTip.value = false\n type = editorType.value\n } else {\n if (props.mode === 1) {\n nextTick(() => {\n drawingFabInstanceVm.toggleAction(selectedDrawingActionInstance)\n })\n }\n }\n\n if (selectedDrawingActionInstance) {\n drawTip.value = drawTipOpts.value.drawingTipStart\n canShowDrawTip.value = true\n }\n\n nextTick(() => {\n emit(\n 'drawEvt',\n {\n index,\n renderDatas,\n name: drawingType,\n finished: true,\n position: renderDatas.value[index].position,\n positionDegrees: renderDatas.value[index].positionDegrees,\n windowPoistion: movement,\n type\n },\n viewer\n )\n })\n }\n }\n\n const handleMouseMove = movement => {\n const { viewer, getWorldPosition } = $services\n const scene = viewer.scene\n const { defined, SceneMode } = Cesium\n\n if (scene.mode !== SceneMode.MORPHING) {\n const position = getWorldPosition(scene, movement, {} as any)\n\n if (!defined(position)) {\n return\n }\n\n drawTipPosition.value = position\n\n if (drawStatus.value === DrawStatus.AfterDraw) {\n startNew()\n }\n\n if (drawStatus.value !== DrawStatus.Drawing) {\n return\n }\n\n const index = editingPoint.value ? editingPoint.value._vcPolylineIndx : renderDatas.value.length - 1\n const point: VcPointDrawing = renderDatas.value[index]\n point.position = position\n convert2Degrees(position, point, scene)\n getMeasurementResult(point, movement)\n const type = editingPoint.value ? editorType.value : 'new'\n nextTick(() => {\n emit(\n 'drawEvt',\n {\n index,\n renderDatas,\n name: drawingType,\n finished: false,\n position,\n positionDegrees: point.positionDegrees,\n windowPoistion: movement,\n type\n },\n viewer\n )\n })\n }\n }\n\n const getMeasurementResult = (point: VcPointDrawing, movement?) => {\n const { viewer } = $services\n const scene = viewer.scene\n const { defined, defaultValue, Math: CesiumMath, SceneMode } = Cesium\n const ellipsoid = scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid\n const positionCartographic = ellipsoid.cartesianToCartographic(point.position, {} as any)\n const globe = scene.globe\n let height = defined(globe) ? defaultValue(globe.getHeight(positionCartographic), 0) : 0\n height = props.heightReference === 0 ? positionCartographic.height : positionCartographic.height - height\n CesiumMath.equalsEpsilon(height, 0, CesiumMath.EPSILON3) && (height = 0)\n let slope = 0\n\n if (scene.mode !== SceneMode.SCENE2D) {\n if (!movement) {\n movement = scene.cartesianToCanvasCoordinates(point.position, {} as any)\n }\n slope = getSlope(scene, movement)\n }\n\n point.show = true\n point.lng = positionCartographic.longitude\n point.lat = positionCartographic.latitude\n point.height = height\n point.slope = slope\n }\n\n const getSlope = (scene: Cesium.Scene, movement: Cesium.Cartesian2) => {\n const { getWorldPosition } = $services\n const { defined, Cartesian2, Cartesian3, Math: CesiumMath } = Cesium\n const position = getWorldPosition(scene, movement, {} as any)\n if (defined(position)) {\n const cameraPosition = scene.camera.position\n const distance = Cartesian3.distance(position, cameraPosition)\n const scratchCartesian3s = [new Cartesian3(), new Cartesian3(), new Cartesian3(), new Cartesian3(), new Cartesian3()]\n const normalScratch = new Cartesian3()\n const surfaceNormalScratch = new Cartesian3()\n if (!(1e4 < distance)) {\n const p0 = scratchCartesian3s[0]\n const p1 = scratchCartesian3s[1]\n const p2 = scratchCartesian3s[2]\n const p3 = scratchCartesian3s[3]\n let surfaceNormal = scene.frameState.mapProjection.ellipsoid.geodeticSurfaceNormal(position, normalScratch)\n surfaceNormal = Cartesian3.negate(surfaceNormal, surfaceNormal)\n const u = Cartesian2.clone(movement, scratchCartesian3s[0])\n u.x -= 2\n u.y -= 2\n const d = Cartesian2.clone(movement, scratchCartesian3s[1])\n d.x -= 2\n d.y += 2\n const h = Cartesian2.clone(movement, scratchCartesian3s[2])\n h.x += 2\n h.y += 2\n const p = Cartesian2.clone(movement, scratchCartesian3s[3])\n p.x += 2\n p.y -= 2\n\n const T = getWorldPosition(scene, u, p0)\n const x = getWorldPosition(scene, d, p1)\n const b = getWorldPosition(scene, h, p2)\n const E = getWorldPosition(scene, p, p3)\n let m, f, g, _, y, C, v, S\n if (defined(T)) {\n m = Cartesian3.subtract(T, position, p0)\n f = Cartesian3.magnitude(m) / distance <= 0.05 ? Cartesian3.normalize(m, p0) : undefined\n }\n if (defined(x)) {\n g = Cartesian3.subtract(x, position, p1)\n _ = Cartesian3.magnitude(g) / distance <= 0.05 ? Cartesian3.normalize(g, p1) : undefined\n }\n if (defined(b)) {\n y = Cartesian3.subtract(b, position, p2)\n C = Cartesian3.magnitude(y) / distance <= 0.05 ? Cartesian3.normalize(y, p2) : undefined\n }\n if (defined(E)) {\n v = Cartesian3.subtract(E, position, p3)\n S = Cartesian3.magnitude(v) / distance <= 0.05 ? Cartesian3.normalize(v, p3) : undefined\n }\n\n let P = Cartesian3.clone(Cartesian3.ZERO, surfaceNormalScratch)\n let A = scratchCartesian3s[4]\n\n if (defined(f) && defined(_)) {\n A = Cartesian3.normalize(Cartesian3.cross(f, _, A), A)\n P = Cartesian3.add(P, A, P)\n }\n\n if (defined(_) && defined(C)) {\n A = Cartesian3.normalize(Cartesian3.cross(_, C, A), A)\n P = Cartesian3.add(P, A, P)\n }\n\n if (defined(C) && defined(S)) {\n A = Cartesian3.normalize(Cartesian3.cross(C, S, A), A)\n P = Cartesian3.add(P, A, P)\n }\n\n if (defined(S) && defined(f)) {\n A = Cartesian3.normalize(Cartesian3.cross(S, f, A), A)\n P = Cartesian3.add(P, A, P)\n }\n if (!P.equals(Cartesian3.ZERO)) {\n P = Cartesian3.normalize(P, P)\n return CesiumMath.asinClamped(Math.abs(Math.sin(Cartesian3.angleBetween(P, surfaceNormal))))\n }\n }\n }\n return 0\n }\n\n const onEditorClick = e => {\n editorPosition.value = [0, 0, 0]\n showEditor.value = false\n\n if (!props.editable) {\n return\n }\n editorType.value = e\n const { viewer, drawingFabInstance } = $services\n const drawingFabInstanceVm = drawingFabInstance?.proxy as VcDrawingsRef | VcMeasurementsRef | VcAnalysesRef\n if (e === 'move') {\n drawTip.value = drawTipOpts.value.drawingTipEditing\n drawStatus.value = DrawStatus.Drawing\n editingPoint.value = mouseoverPoint.value\n canShowDrawTip.value = true\n restorePosition = Object.assign({}, renderDatas.value[editingPoint.value._vcPolylineIndx])\n drawingFabInstanceVm.editingActionName = drawingType\n } else if (e === 'remove') {\n const index = mouseoverPoint.value._vcPolylineIndx\n renderDatas.value.splice(index, 1)\n } else {\n const index = mouseoverPoint.value._vcPolylineIndx\n const polyline = renderDatas.value[index]\n props.editorOpts?.[e]?.callback?.(index, polyline)\n }\n\n emit(\n 'editorEvt',\n {\n type: e,\n name: drawingType,\n renderDatas,\n index: mouseoverPoint.value._vcPolylineIndx,\n pointIndex: mouseoverPoint.value._index,\n point: mouseoverPoint.value\n },\n viewer\n )\n }\n\n const clear = () => {\n renderDatas.value = []\n stop()\n }\n\n const getLabelText = (point: VcPointDrawing) => {\n const { viewer } = $services\n const scene = viewer.scene\n const positionCartographic = (scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid).cartesianToCartographic(point.position, {} as any)\n if (!Cesium.defined(positionCartographic)) {\n return ''\n }\n\n const angleFormatter = props.angleFormatter || MeasureUnits.angleToString\n const distanceFormatter = props.distanceFormatter || MeasureUnits.distanceToString\n\n return (\n `${t('vc.measurement.point.lng')}${angleFormatter(\n positionCartographic.longitude,\n props.measureUnits?.angleUnits,\n props.locale,\n props.decimals?.lng\n )}\\n` +\n `${t('vc.measurement.point.lat')}${angleFormatter(\n positionCartographic.latitude,\n props.measureUnits?.angleUnits,\n props.locale,\n props.decimals?.lat\n )}\\n` +\n `${t('vc.measurement.point.height')}${distanceFormatter(\n point.height,\n props.measureUnits?.distanceUnits,\n props.locale,\n props.decimals?.height\n )}\\n` +\n `${t('vc.measurement.point.slope')}${angleFormatter(point.slope, props.measureUnits?.slopeUnits, props.locale, props.decimals?.slope)}`\n )\n }\n\n if (props.preRenderDatas && props.preRenderDatas.length) {\n const { viewer } = $services\n props.preRenderDatas.forEach(preRenderData => {\n const pointDrawing: VcPointDrawing = {\n drawStatus: DrawStatus.AfterDraw,\n show: true,\n position: makeCartesian3(preRenderData) as Cesium.Cartesian3,\n lng: 0,\n lat: 0,\n height: 0,\n slope: 0,\n\n pointOpts: {},\n labelOpts: {},\n billboardOpts: {}\n }\n const cart = Cesium.Cartographic.fromCartesian(pointDrawing.position, viewer.scene.globe.ellipsoid)\n pointDrawing.positionDegrees = [Cesium.Math.toDegrees(cart.longitude), Cesium.Math.toDegrees(cart.latitude), cart.height] as [\n number,\n number,\n number\n ]\n\n getMeasurementResult(pointDrawing)\n\n renderDatas.value.push(pointDrawing)\n })\n }\n\n // life cycle\n onUnmounted(() => {\n unwatchFns.forEach(item => item())\n unwatchFns = []\n })\n\n // expose public methods\n const publicMethods = { renderDatas, startNew, stop, clear, handleMouseClick, handleMouseMove }\n Object.assign(instance.proxy, publicMethods)\n\n return () => {\n const { createGuid } = Cesium\n const children: Array<VNode> = []\n const pointsRender: Array<any> = []\n const labelsRender: Array<any> = []\n const billboardsRender: Array<any> = []\n renderDatas.value.forEach((point, index) => {\n const pointOpts = Object.assign({}, props.pointOpts, point.pointOpts)\n pointsRender.push({\n position: point.position,\n id: createGuid(),\n _vcPolylineIndx: index, // for editor\n ...pointOpts,\n show: (point.show && props.pointOpts?.show) || props.editable || point.drawStatus === DrawStatus.Drawing\n })\n\n const labelsOpts = Object.assign({}, props.labelOpts, point.labelOpts)\n\n if (props.showLabel) {\n if (cmpName === 'VcDrawingPin') {\n const billboardOpts = Object.assign({}, props.billboardOpts, point.billboardOpts)\n billboardsRender.push({\n position: point.position,\n id: createGuid(),\n _vcPolylineIndx: index, // for editor\n ...billboardOpts\n })\n\n labelsOpts.text &&\n labelsRender.push({\n position: point.position,\n id: createGuid(),\n ...labelsOpts\n })\n } else {\n labelsRender.push({\n position: point.position,\n id: createGuid(),\n text: getLabelText(point),\n ...labelsOpts\n })\n }\n }\n })\n children.push(\n h(VcCollectionPoint, {\n enableMouseEvent: props.enableMouseEvent,\n points: pointsRender,\n onMouseover: onMouseoverPoints,\n onMouseout: onMouseoutPoints,\n onReady: onVcCollectionPointReady\n })\n )\n // ;(cmpName.includes('VcMeasurement') || cmpName === 'VcDrawingPin') &&\n children.push(\n h(VcCollectionLabel, {\n enableMouseEvent: props.enableMouseEvent,\n labels: labelsRender,\n onReady: onVcCollectionLabelReady\n })\n )\n\n cmpName === 'VcDrawingPin' &&\n children.push(\n h(VcCollectionBillboard, {\n enableMouseEvent: props.enableMouseEvent,\n billboards: billboardsRender\n })\n )\n\n if (props.drawtip?.show && canShowDrawTip.value) {\n const { viewer } = $services\n children.push(\n h(\n VcOverlayHtml,\n {\n position: drawTipPosition.value,\n pixelOffset: props.drawtip?.pixelOffset,\n teleport: {\n to: viewer.container\n }\n },\n () =>\n h(\n 'div',\n {\n class: 'vc-drawtip vc-tooltip--style'\n },\n drawTip.value\n )\n )\n )\n }\n\n if (showEditor.value) {\n const buttons: Array<VNode> = []\n if (mouseoverPoint.value) {\n const editorOpts = props.editorOpts\n for (const key in editorOpts) {\n if (!Array.isArray(editorOpts[key]) && typeof editorOpts[key] !== 'number') {\n const opts = {\n ...editorOpts[key]\n }\n delete opts.color\n\n buttons.push(\n h(\n VcBtn,\n {\n style: { color: editorOpts[key].color, background: editorOpts[key].background },\n ...opts,\n onclick: onEditorClick.bind(undefined, key)\n },\n () =>\n h(\n VcTooltip,\n {\n ...editorOpts[key].tooltip\n },\n () => h('strong', null, editorOpts[key].tooltip?.tip || t(`vc.drawing.editor.${key}`))\n )\n )\n )\n }\n }\n }\n\n const { viewer } = $services\n children.push(\n h(\n VcOverlayHtml,\n {\n position: editorPosition.value,\n pixelOffset: props.editorOpts?.pixelOffset,\n teleport: {\n to: viewer.container\n },\n onMouseenter: onMouseenterEditor,\n onMouseleave: onMouseleaveEditor\n },\n () =>\n h(\n 'div',\n {\n class: 'vc-editor'\n },\n buttons\n )\n )\n )\n }\n return h(\n VcCollectionPrimitive,\n {\n ref: primitiveCollectionRef,\n show: props.show,\n onReady: onPrimitiveCollectionReady\n },\n () => children\n )\n }\n}\n"],"names":["h","_a"],"mappings":"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"}