一些技术路线测试,增加git,方便代码还原
shuishen
2025-11-22 efc256c6c311b84b40184109750ea2e5c216cd5b
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)