From 073bf429910865b203437332695c3d3f1fddceb0 Mon Sep 17 00:00:00 2001 From: zhulongchuan <1624729110@qq.com> Date: Tue, 14 Oct 2025 16:57:49 +0800 Subject: [PATCH] =?UTF-8?q?cesium=E5=9C=B0=E5=9B=BE=E7=94=BB=E7=A9=BA?= =?UTF-8?q?=E5=9F=9F=E9=A3=9E=E8=A1=8C=E7=A9=BA=E5=9F=9F=E5=8F=8A=E7=A9=BA?= =?UTF-8?q?=E5=9F=9Fjson?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/cesiums/CesiumViewer.vue | 50 ++- src/views/cesiums/DrawingToolPanel.vue | 198 ++++++++- src/views/cesiums/components/DrawingTool.ts | 419 +++++++++++++++++- .../cesiums/components/useDrawingManager.ts | 225 +++++++++- 4 files changed, 872 insertions(+), 20 deletions(-) diff --git a/src/views/cesiums/CesiumViewer.vue b/src/views/cesiums/CesiumViewer.vue index 2586cd7..512bd57 100644 --- a/src/views/cesiums/CesiumViewer.vue +++ b/src/views/cesiums/CesiumViewer.vue @@ -46,15 +46,17 @@ @fly-to-coordinate="flyToCoordinate" /> - - + - @@ -150,8 +157,41 @@ const { flyToDrawing, updateDrawingOptions, getDrawingStatus, - getDrawingInfoText -} = useDrawingManager(drawingTool); // 直接传递 drawingTool ref + getDrawingInfoText, + printSelectedDrawingInfo, + printAllDrawingsInfo, + printDrawingInfo, + exportSelectedDrawingAsText +} = useDrawingManager(drawingTool); + + +// 打印方法 +const handlePrintSelectedDrawingInfo = () => { + console.log('执行打印选中空域'); + printSelectedDrawingInfo(); +}; + +const handlePrintAllDrawingsInfo = () => { + console.log('执行打印所有空域'); + printAllDrawingsInfo(); +}; + +const handlePrintDrawingInfo = (id: string) => { + console.log('执行打印指定空域:', id); + printDrawingInfo(id); +}; + +const handleExportDrawingInfo = () => { + const text = exportSelectedDrawingAsText(); + if (text) { + navigator.clipboard.writeText(text).then(() => { + console.log('空域信息已复制到剪贴板'); + // 可以添加提示消息 + }).catch(err => { + console.error('复制失败:', err); + }); + } +}; // 添加预定义模型 diff --git a/src/views/cesiums/DrawingToolPanel.vue b/src/views/cesiums/DrawingToolPanel.vue index 7ccbf0e..e6a3ae4 100644 --- a/src/views/cesiums/DrawingToolPanel.vue +++ b/src/views/cesiums/DrawingToolPanel.vue @@ -8,6 +8,37 @@ + +
+

信息操作

+
+ + + +
+
+

绘制工具

@@ -49,6 +80,9 @@ +
@@ -56,9 +90,14 @@

已绘制空域 ({{ drawings.size }})

- +
+ + +
+
+

样式设置

@@ -226,6 +267,21 @@ import { ref } from 'vue'; import * as Cesium from 'cesium'; import type { DrawingResult } from './components/DrawingTool'; +// const props = defineProps<{ +// isDrawing: boolean; +// currentDrawingType: string | null; +// drawings: Map; +// selectedDrawing: string | null; +// drawingInfo: any; +// drawingOptions: any; +// getDrawingStatus: () => string; +// getDrawingInfoText: () => string; +// printSelectedDrawingInfo: () => void; +// printAllDrawingsInfo: () => void; +// exportSelectedDrawingAsText: () => string; +// }>(); + +// 定义props const props = defineProps<{ isDrawing: boolean; currentDrawingType: string | null; @@ -249,7 +305,11 @@ const emit = defineEmits<{ 'update-circle-option': [key: string, value: any]; 'update-polygon-option': [key: string, value: any]; 'copy-drawing-info': []; - 'fly-to-selected-drawing': []; + 'fly-to-selected-drawing': [id: string]; + 'print-selected-drawing-info': []; + 'print-all-drawings-info': []; + 'print-drawing-info': [id: string]; + 'export-drawing-info': [id: string]; }>(); const activeTab = ref<'circle' | 'polygon'>('circle'); @@ -279,10 +339,35 @@ const clearAllDrawings = () => { emit('clear-drawings'); }; +// 方法实现 const flyToDrawing = (id: string) => { + console.log('点击飞向空域按钮:', id); emit('fly-to-drawing', id); }; + + +// 打印方法 +const handlePrintSelectedDrawingInfo = () => { + console.log('点击了打印选中空域按钮'); + emit('print-selected-drawing-info'); +}; + +const handlePrintAllDrawingsInfo = () => { + console.log('点击了打印所有空域按钮'); + emit('print-all-drawings-info'); +}; + +const handlePrintDrawingInfo = (id: string) => { + console.log('点击了打印空域信息按钮:', id); + emit('print-drawing-info', id); +}; + +const handleExportSelectedDrawingInfo = () => { + console.log('点击了导出空域信息按钮'); + emit('export-drawing-info'); +}; + const updateCircleOption = (key: string, value: any) => { emit('update-circle-option', key, value); }; @@ -296,6 +381,7 @@ const copyDrawingInfo = () => { }; const flyToSelectedDrawing = () => { + console.log('点击飞向选中空域按钮'); emit('fly-to-selected-drawing'); }; @@ -331,6 +417,110 @@ const hexToColor = (hex: string): Cesium.Color => {