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