Browse Source

增加线的悬停显示

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

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

@ -105,6 +105,11 @@ export default {
}, },
beforeDestroy() { beforeDestroy() {
//
if (this.hoverHandler) {
this.hoverHandler.destroy();
this.hoverHandler = null;
}
this.destroyViewer() this.destroyViewer()
}, },
@ -165,6 +170,7 @@ export default {
this.initScaleBar() this.initScaleBar()
this.initPointMovement() this.initPointMovement()
this.initRightClickHandler() this.initRightClickHandler()
this.initHoverHandler()
console.log('Cesium离线二维地图已加载') console.log('Cesium离线二维地图已加载')
} catch (error) { } catch (error) {
@ -219,6 +225,57 @@ export default {
} }
}, Cesium.ScreenSpaceEventType.RIGHT_CLICK) }, 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() { showErrorMessage() {
const container = document.getElementById('cesiumViewer'); const container = document.getElementById('cesiumViewer');
if (container) { if (container) {
@ -414,6 +471,9 @@ export default {
this.initRightClickHandler(); this.initRightClickHandler();
} }
//
this.measurementResult = null;
this.viewer.scene.canvas.style.cursor = 'default'; this.viewer.scene.canvas.style.cursor = 'default';
}, },
@ -462,11 +522,24 @@ export default {
this.tempEntity = null; this.tempEntity = null;
this.tempPreviewEntity = null; this.tempPreviewEntity = null;
// 1. // 1. 线
this.drawingHandler.setInputAction((movement) => { this.drawingHandler.setInputAction((movement) => {
const newPosition = this.getClickPosition(movement.endPosition); const newPosition = this.getClickPosition(movement.endPosition);
if (newPosition) { if (newPosition) {
this.activeCursorPosition = 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); }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);

Loading…
Cancel
Save