| | |
| | | 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) |