Browse Source

增加线的悬停显示

master
ctw 2 months ago
parent
commit
d40be59b6f
  1. 81
      ruoyi-ui/src/views/cesiumMap/index.vue

81
ruoyi-ui/src/views/cesiumMap/index.vue

@ -105,6 +105,11 @@ export default {
},
beforeDestroy() {
//
if (this.hoverHandler) {
this.hoverHandler.destroy();
this.hoverHandler = null;
}
this.destroyViewer()
},
@ -163,9 +168,10 @@ export default {
})
this.initScaleBar()
this.initPointMovement()
this.initRightClickHandler()
console.log('Cesium离线二维地图已加载')
this.initPointMovement()
this.initRightClickHandler()
this.initHoverHandler()
console.log('Cesium离线二维地图已加载')
} catch (error) {
console.error('地图错误:', error)
@ -219,6 +225,57 @@ export default {
}
}, Cesium.ScreenSpaceEventType.RIGHT_CLICK)
},
//
initHoverHandler() {
//
this.hoverHandler = new Cesium.ScreenSpaceEventHandler(this.viewer.scene.canvas)
// 线
this.hoverHandler.setInputAction((movement) => {
//
if (this.isDrawing) {
return;
}
const pickedObject = this.viewer.scene.pick(movement.endPosition)
if (Cesium.defined(pickedObject) && pickedObject.id) {
const pickedEntity = pickedObject.id
//
let entityData = this.allEntities.find(e => e.entity === pickedEntity || e === pickedEntity)
// 线线
if (!entityData) {
// 线
for (const lineEntity of this.allEntities) {
if (lineEntity.type === 'line' && lineEntity.pointEntities) {
if (lineEntity.pointEntities.includes(pickedEntity)) {
entityData = lineEntity
break
}
}
}
}
// 线
if (entityData && entityData.type === 'line') {
const length = this.calculateLineLength(entityData.positions)
this.measurementResult = {
distance: length,
type: 'line'
};
} else {
// 线
this.measurementResult = null;
}
} else {
//
this.measurementResult = null;
}
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE)
},
showErrorMessage() {
const container = document.getElementById('cesiumViewer');
if (container) {
@ -414,6 +471,9 @@ export default {
this.initRightClickHandler();
}
//
this.measurementResult = null;
this.viewer.scene.canvas.style.cursor = 'default';
},
@ -462,11 +522,24 @@ export default {
this.tempEntity = null;
this.tempPreviewEntity = null;
// 1.
// 1. 线
this.drawingHandler.setInputAction((movement) => {
const newPosition = this.getClickPosition(movement.endPosition);
if (newPosition) {
this.activeCursorPosition = newPosition;
// 线
if (this.drawingPoints.length > 0) {
// 线
const tempPositions = [...this.drawingPoints, newPosition];
const length = this.calculateLineLength(tempPositions);
//
this.measurementResult = {
distance: length,
type: 'line'
};
}
}
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);

Loading…
Cancel
Save