From efc256c6c311b84b40184109750ea2e5c216cd5b Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Sat, 22 Nov 2025 14:33:21 +0800
Subject: [PATCH] feat:中心控制器的显示控制。

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

diff --git a/js/modules/edit-manager.js b/js/modules/edit-manager.js
index 63faffc..686a72e 100644
--- a/js/modules/edit-manager.js
+++ b/js/modules/edit-manager.js
@@ -49,17 +49,40 @@
     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) => {
+      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
+      this.entityFactory.removeEntityLikeName('polygonEditPoint')
       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)

--
Gitblit v1.9.3