From 0efcb9f12301633ffe5c77a97cef585e2cc39e73 Mon Sep 17 00:00:00 2001
From: jihongshun <1151753686@qq.com>
Date: 星期五, 01 八月 2025 13:21:25 +0800
Subject: [PATCH] 偏移算法优化

---
 src/views/system/project/components/addPorjectDialog.vue |   48 ++++++++++++++++++++----------------------------
 1 files changed, 20 insertions(+), 28 deletions(-)

diff --git a/src/views/system/project/components/addPorjectDialog.vue b/src/views/system/project/components/addPorjectDialog.vue
index 661d048..ee57820 100644
--- a/src/views/system/project/components/addPorjectDialog.vue
+++ b/src/views/system/project/components/addPorjectDialog.vue
@@ -71,7 +71,7 @@
 import chooseDeviceDialog from './chooseDeviceDialog.vue';
 import chooseModelDialog from './chooseModelDialog.vue';
 import { obtainRealData ,buildKmz} from "@/api/system/template"
-
+let rotationAngle = Cesium.Math.toRadians(0)
 export  default{
   components: {
     CesiumMap,
@@ -99,9 +99,9 @@
       this.$emit('close')
     },
     flyToLocal(row){
-      console.log(row)
        const position = Cesium.Cartesian3.fromDegrees(row.longitude,row.latitude, row.deviceHeight);
-
+      // rotationAngle  = Cesium.Math.toRadians(row.face)  ||  Cesium.Math.toRadians(0)
+      rotationAngle  = Cesium.Math.toRadians(row.face)  ||  Cesium.Math.toRadians(0)
       // 璁剧疆妯″瀷鏂瑰悜锛堝彲閫夛級
       const heading = Cesium.Math.toRadians(row.face); // 鏈濅笢鍗楁柟鍚�
       const pitch = 0;
@@ -196,7 +196,6 @@
     },
     receiveModel(obj){
       //deal閫昏緫
-      console.log(obj)
       let flightTemplateId =obj.modelObj.id
       let deviceId = obj.deviceId
       this.dealTableTemplate(obj)
@@ -204,10 +203,9 @@
       obtainRealData(flightTemplateId,deviceId).then(res=>{
         console.log(res)
         let treeDealData = this.transformFlightData(res.data?.coordinateSystemVoS || [])
-        console.log(treeDealData)
         this.dealTreeMerge(obj,treeDealData)
-        // const aaa = this.rotateAllPoints(this.treeData || [],res.data.longitude,res.data.latitude,res.data.height)
-         this.drawConnectionsWithLabels(this.treeData)
+        this.rotateAllPoints(this.treeData || [],res.data.longitude,res.data.latitude,res.data.height)
+        this.drawConnectionsWithLabels(this.treeData)
       })
       // this.dealTreeMerge(obj)
     },
@@ -261,10 +259,8 @@
     },
     drawConnectionsWithLabels(devices) {
       const airPoints = [];
-
       devices.forEach(device => {
         if (!Array.isArray(device.children)) return;
-
         device.children.forEach(airPoint => {
           // 绌轰腑鐐逛綅缃�
           const airPos = Cesium.Cartesian3.fromDegrees(
@@ -351,21 +347,9 @@
     },
     rotateAllPoints(dataList,towerLongitude,towerLatitude,towerhHight) {
       return dataList.map(item => {
-        console.log(item)
-        console.log(towerLongitude)
-        console.log(towerLatitude)
-        console.log(towerhHight)
-        const groundPoint = Cesium.Cartesian3.fromDegrees(item.longitude, item.latitude, item.height);
         const towerPoint = Cesium.Cartesian3.fromDegrees(towerLongitude, towerLatitude, towerhHight);
-        let rotationAngle = Cesium.Math.toRadians(135)
-        // 鏃嬭浆鍦伴潰鐐规湰韬紙浼氬彉锛屼絾缁曡嚜韬棆杞笉浼氱Щ鍔級
-        const newGroundPoint = this.rotateAroundPoint( groundPoint,towerPoint, rotationAngle);
-        const newGroundCarto = Cesium.Cartographic.fromCartesian(newGroundPoint);
         const newGround = {
           ...item,
-          longitude: Cesium.Math.toDegrees(newGroundCarto.longitude),
-          latitude: Cesium.Math.toDegrees(newGroundCarto.latitude),
-          height: newGroundCarto.height
         };
         console.log(newGround)
         // 澶勭悊瀛愮┖涓偣
@@ -373,13 +357,20 @@
           const airPoint = Cesium.Cartesian3.fromDegrees(child.longitude, child.latitude, child.height);
           const rotatedAirPoint = this.rotateAroundPoint( airPoint,towerPoint, rotationAngle);
           const rotatedAirCarto = Cesium.Cartographic.fromCartesian(rotatedAirPoint);
-
-          return {
-            ...child,
-            longitude: Cesium.Math.toDegrees(rotatedAirCarto.longitude),
-            latitude: Cesium.Math.toDegrees(rotatedAirCarto.latitude),
-            height: rotatedAirCarto.height
-          };
+          child.longitude = Cesium.Math.toDegrees(rotatedAirCarto.longitude)
+          child.latitude = Cesium.Math.toDegrees(rotatedAirCarto.latitude)
+          child.height = rotatedAirCarto.height
+          child.children = child.children.map(sonChild => {
+            const groundPoint = Cesium.Cartesian3.fromDegrees(sonChild.longitude, sonChild.latitude, sonChild.height);
+            const newGroundPoint = this.rotateAroundPoint( groundPoint,towerPoint, rotationAngle);
+            const newGroundCarto = Cesium.Cartographic.fromCartesian(newGroundPoint);
+            return {
+              ...sonChild,
+              longitude: Cesium.Math.toDegrees(newGroundCarto.longitude),
+              latitude: Cesium.Math.toDegrees(newGroundCarto.latitude),
+              height: newGroundCarto.height
+            };
+          });
         });
 
         return newGround;
@@ -388,6 +379,7 @@
     //聽璁$畻鐐笰缁曠偣B閫嗘椂閽堟棆杞寚瀹氳搴﹀悗鐨勬柊浣嶇疆
     //  绌轰腑鐐规垨鑰呭湴闈㈢偣绗涘崱灏斿潗鏍� 濉旂殑绗涘崱灏斿潗鏍�    濉旂殑鏈濆悜鍊�
     rotateAroundPoint(startPoint,pivotPoint,rotationAngle) {
+      console.log(rotationAngle)
       //聽鍒涘缓涓�涓粠B鐐瑰埌鏈湴鍧愭爣绯荤殑杞崲鐭╅樀锛堜笢鏂瑰悜涓篨杞达紝鍖楁柟鍚戜负Y杞达紝鍨傜洿鏂瑰悜涓篫杞达級
      const transformationMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(pivotPoint);
       //聽鑾峰彇涓栫晫鍧愭爣绯诲埌鏈湴鍧愭爣绯荤殑杞崲鐭╅樀

--
Gitblit v1.9.3