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