UNPKG

casc-cesium

Version:

Vue 3.x components for CesiumJS.

1 lines 45.8 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: 2022-07-14 22:02:46\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-drawing\\use-drawing-point.ts\n */\n\nimport { VcOverlayHtml } from 'casc-cesium-components/overlays'\nimport { VcCollectionBillboard, VcCollectionLabel, VcCollectionPoint, VcCollectionPrimitive } from 'casc-cesium-components/primitive-collections'\nimport { VcBtn, VcTooltip } from 'casc-cesium-components/ui'\nimport { useLocale } from '../use-locale'\nimport { DrawStatus, MeasureUnits } from 'casc-cesium-shared'\nimport { makeCartesian3 } from 'casc-cesium-utils/cesium-helpers'\nimport { VcPointDrawing } from 'casc-cesium-utils/drawing-types'\nimport { VcComponentInternalInstance, VcDrawingProvider } from 'casc-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 'casc-cesium-components'\nimport { platform } from 'casc-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 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 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 },\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 return (\n `${t('vc.measurement.point.lng')}${MeasureUnits.angleToString(\n positionCartographic.longitude,\n props.measureUnits?.angleUnits,\n props.locale,\n props.decimals?.lng\n )}\\n` +\n `${t('vc.measurement.point.lat')}${MeasureUnits.angleToString(\n positionCartographic.latitude,\n props.measureUnits?.angleUnits,\n props.locale,\n props.decimals?.lat\n )}\\n` +\n `${t('vc.measurement.point.height')}${MeasureUnits.distanceToString(\n point.height,\n props.measureUnits?.distanceUnits,\n props.locale,\n props.decimals?.height\n )}\\n` +\n `${t('vc.measurement.point.slope')}${MeasureUnits.angleToString(\n point.slope,\n props.measureUnits?.slopeUnits,\n props.locale,\n props.decimals?.slope\n )}`\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":[],"mappings":"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"}