From e92dd671ed1f79243bee0083aecbc5627b5cc7f6 Mon Sep 17 00:00:00 2001
From: guonan <guonan201020@163.com>
Date: 星期四, 10 七月 2025 16:17:52 +0800
Subject: [PATCH] 断面echart清除

---
 src/components/menu/CrossSectionalAnalysis.vue |   61 +++++++++++++++++++++++++++---
 1 files changed, 55 insertions(+), 6 deletions(-)

diff --git a/src/components/menu/CrossSectionalAnalysis.vue b/src/components/menu/CrossSectionalAnalysis.vue
index 7c9db5e..3923cee 100644
--- a/src/components/menu/CrossSectionalAnalysis.vue
+++ b/src/components/menu/CrossSectionalAnalysis.vue
@@ -75,8 +75,15 @@
 <script setup>
 import { ElMessage } from 'element-plus';
 import { ref, onMounted, defineExpose } from "vue";
+import { getCrossSection } from '@/api/trApi.js'; // 鍋囪浣犳湁鐪熷疄鎺ュ彛
+import { useSimStore } from '@/store/simulation';
+import { storeToRefs } from 'pinia';
+import { EventBus } from "@/eventBus";
 
+const simStore = useSimStore();
+const { selectedScheme } = storeToRefs(simStore);
 const viewer = window.viewer;
+let selectedSchemeId = selectedScheme.value.id
 
 let pickedPointsCross = ref([]);
 let pickHandlerCross = null;
@@ -110,7 +117,13 @@
 // 閫夊彇涓や釜鏂潰鐐瑰潗鏍囧苟缁樺埗鏂潰鎴潰
 function addPointToViewer(point) {
 	if (pickedPointsCross.value.length >= 2) {
-		clearPoints();
+		for (const id of pickedEntitiesIds.value) {
+			viewer.entities.remove(viewer.entities.getById(id));
+		}
+		pickedPointsCross.value = [];
+		pickedEntitiesIds.value = [];
+		isWallCreated.value = false;
+		isUploaded.value = false;
 	}
 	pickedPointsCross.value.push(point);
 	drawPointOnMap(point);
@@ -164,14 +177,14 @@
 	);
 
 	const cylinderBottomHeight = 0;
-	const cylinderTopHeight = terrainHeight + 190;
+	const cylinderTopHeight = terrainHeight + 100;
 	const cartesianBottom = viewer.scene.globe.ellipsoid.cartographicToCartesian(
 		Cesium.Cartographic.fromDegrees(midLon, midLat, cylinderBottomHeight)
 	);
 	const CrosscylinderEntity = viewer.entities.add({
 		position: cartesianBottom,
 		cylinder: {
-			length: 190.0,
+			length: 100.0,
 			topRadius: 1.0,
 			bottomRadius: 1.0,
 			material: Cesium.Color.YELLOW,
@@ -218,6 +231,15 @@
 	pickedEntitiesIds.value = [];
 	isWallCreated.value = false;
 	isUploaded.value = false;
+	if (pickHandlerCross) {
+		pickHandlerCross.destroy();
+		pickHandlerCross = null;
+	}
+	isPicking.value = false;
+ 	simStore.crossSection = []
+	EventBus.emit("clear-dM")
+	console.log('杩欓噷鍙戦�佽姹傦紝娓呯┖閮鐨別charts2');
+	
 }
 function initPickHandler() {
 	if (isPicking.value) {
@@ -249,7 +271,9 @@
 
 	pickHandlerCross.setInputAction(clickAction, Cesium.ScreenSpaceEventType.LEFT_CLICK);
 }
-function confirmPoints() {
+async function confirmPoints() {
+	console.log(selectedSchemeId,'杩欓噷鎷跨殑鏄柟妗堢殑鏁版嵁');
+	
 	if (pickedPointsCross.value.length < 2) {
 		ElMessage.warning('璇峰厛閫夋嫨涓や釜鐐瑰悗鍐嶈繘琛岀‘璁わ紒');
 		return;
@@ -257,6 +281,7 @@
 
 	const point1 = pickedPointsCross.value[0];
 	const point2 = pickedPointsCross.value[1];
+console.log(point1,point2);
 
 	console.log('绗竴涓偣淇℃伅锛�', {
 		longitude: point1.longitude,
@@ -269,11 +294,35 @@
 		latitude: point2.latitude,
 		cartesian: point2.cartesian
 	});
-
+	const startPoint = `${point1.longitude},${point1.latitude}`;
+	const endPoint = `${point2.longitude},${point2.latitude}`;
+	const result = await getCrossSectionInfo(startPoint, endPoint);
+	simStore.crossSection = result
+	console.log(result,'杩欓噷鏄儹妤犻渶瑕佺殑鏂潰鏁版嵁');
+	
 	isUploaded.value = true;
 	ElMessage.success('姝e湪杩涜--鏂潰鎴潰--鏁版嵁鍒嗘瀽涓婁紶锛岃绋嶇瓑...');
+	
 }
-
+  // 鑾峰彇鐪熷疄鏁版嵁
+function getCrossSectionInfo(a, b) {
+  const params = {
+    startPoint: a,
+    endPoint: b,
+    id: selectedSchemeId
+  };
+  return getCrossSection(params).then(data => {
+    if (data && data.code === 200) {
+      return data.data; // 杩斿洖鍘熷鏁版嵁鏁扮粍
+    } else {
+      return [];
+    }
+  }).catch(error => {
+    console.error('鑾峰彇鏁版嵁鏃跺彂鐢熼敊璇�:', error);
+    ElMessage.warning('鏁版嵁鏈夎锛岃鑱旂郴绠$悊鍛樻垨閲嶆柊杩涜妯℃嫙锛�');
+    return [];
+  });
+}
 defineExpose({
 	clearPoints
 });

--
Gitblit v1.9.3