From 06a7756f5df918ed44016a6860c4bde246a76f54 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Mon, 24 Nov 2025 09:43:10 +0800
Subject: [PATCH] feat:GSD可见光,相对被射面距离,安全起飞高度(相对起飞高度),测区方向,航线方向,完成动作,拍照方式,旁向重叠率,航向重叠率等处理

---
 js/modules/edit-manager.js |   44 ++++++++++++++++++++++++++++++++++++++------
 1 files changed, 38 insertions(+), 6 deletions(-)

diff --git a/js/modules/edit-manager.js b/js/modules/edit-manager.js
index 63faffc..44bd3df 100644
--- a/js/modules/edit-manager.js
+++ b/js/modules/edit-manager.js
@@ -4,6 +4,10 @@
     this.entityFactory = entityFactory
     this.eventHub = eventHub
     this.labelManager = labelManager
+    this.enableCornerDrag = false
+    // 后续开启方式:如需恢复顶点拖拽控制点,在外层调用
+    // editManager.setCornerDragEnabled(true)
+    // 保持现有逻辑不变,避免再次修改核心代码
   }
 
   computeCenter (positions) {
@@ -49,17 +53,41 @@
     const editTriggerHandler = this.eventHub.get('editTrigger')
     const editDragHandler = this.eventHub.get('editDrag')
 
-    editTriggerHandler.setInputAction((click) => {
-      const pickC = viewer.scene.pick(click.position)
+    isActivateEditRef.value = true
+    if (axisManager && typeof axisManager.setEditingEnabled === 'function') axisManager.setEditingEnabled(true)
+
+    const toggleHandler = this.eventHub.get('editModeToggle')
+    toggleHandler.setInputAction((click) => {
+      const results = viewer.scene.drillPick(click.position)
+      let hitPolygon = false
+      let hitController = false
+      if (Array.isArray(results) && results.length > 0) {
+        for (let k = 0; k < results.length; k++) {
+          const rid = (results[k] && (results[k].id?.id || results[k].id || results[k].primitive?.id))
+          if (!rid) continue
+          const s = String(rid)
+          if (s === 'polygon') { hitPolygon = true; break }
+          if (s.slice(0, 6) === 'sphere' || s.slice(0, 4) === 'axis') { hitController = true; break }
+        }
+      }
+      if (hitController) return
+      if (hitPolygon) { isActivateEditRef.value = true; if (axisManager && axisManager.setEditingEnabled) axisManager.setEditingEnabled(true); return }
+      isActivateEditRef.value = false
       this.entityFactory.removeEntityLikeName('polygonEditPoint')
-      let isEdit = false
-      if (Cesium.defined(pickC) && pickC.id) { } else { isEdit = false }
-      if (!isEdit) return
+      if (axisManager && axisManager.setEditingEnabled) axisManager.setEditingEnabled(false)
+    }, Cesium.ScreenSpaceEventType.LEFT_CLICK)
+
+    editTriggerHandler.setInputAction((click) => {
+      this.entityFactory.removeEntityLikeName('polygonEditPoint')
+      if (!this.enableCornerDrag) return
+      if (!isActivateEditRef.value) return
+      const pickC = viewer.scene.pick(click.position)
+      const rid = pickC && (pickC.id?.id || pickC.id || pickC.primitive?.id)
+      if (String(rid) !== 'polygon') return
       const positions = polygonPositionListRef.value
       positions.forEach((ele, index) => {
         viewer.entities.add({ name: 'polygonEditPoint', id: 'point' + index, position: ele, point: { color: new Cesium.Color(0, 1, 1, 0.9), pixelSize: 10 } })
       })
-      isActivateEditRef.value = true
       editDragHandler.setInputAction((e) => {
         let center, centerVector
         const pick = viewer.scene.pick(e.position)
@@ -101,4 +129,8 @@
       }, Cesium.ScreenSpaceEventType.LEFT_DOWN)
     }, Cesium.ScreenSpaceEventType.LEFT_CLICK)
   }
+
+  // 开启/关闭顶点拖拽控制点(外层调用)
+  // 使用方式:editManager.setCornerDragEnabled(true)
+  setCornerDragEnabled (flag) { this.enableCornerDrag = !!flag }
 }
\ No newline at end of file

--
Gitblit v1.9.3