From d262de819c02c1a8a110449cf93e13153d0d98d1 Mon Sep 17 00:00:00 2001 From: sd <1504629600@qq.com> Date: Wed, 21 Jan 2026 14:21:00 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=84=91=E8=A2=8B=E6=90=AC=E5=AE=B6?= =?UTF-8?q?=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-ui/src/views/cesiumMap/index.vue | 57 +- ruoyi-ui/src/views/childRoom/BottomLeftPanel.vue | 49 +- ruoyi-ui/src/views/childRoom/TopHeader.vue | 769 +++++++++++++++++++++++ ruoyi-ui/src/views/childRoom/index.vue | 714 +++------------------ 4 files changed, 938 insertions(+), 651 deletions(-) create mode 100644 ruoyi-ui/src/views/childRoom/TopHeader.vue diff --git a/ruoyi-ui/src/views/cesiumMap/index.vue b/ruoyi-ui/src/views/cesiumMap/index.vue index a72c2b2..da95076 100644 --- a/ruoyi-ui/src/views/cesiumMap/index.vue +++ b/ruoyi-ui/src/views/cesiumMap/index.vue @@ -963,31 +963,34 @@ export default { return entity }, addCircleEntity(center, radius) { - this.entityCounter++ - const id = `circle_${this.entityCounter}` + // 确保半径有效 + const validRadius = Math.max(radius, 1) + + this.entityCounter++ + const id = `circle_${this.entityCounter}` - const entity = this.viewer.entities.add({ - id: id, - name: `圆形 ${this.entityCounter}`, - position: center, // 圆心位置 - - // 【优化】使用 ellipse (椭圆) 绘制圆形 - ellipse: { - semiMinorAxis: radius, // 半短轴 = 半径 - semiMajorAxis: radius, // 半长轴 = 半径 - material: Cesium.Color.fromCssColorString(this.defaultStyles.circle.color) - .withAlpha(this.defaultStyles.circle.opacity), - outline: true, - outlineColor: Cesium.Color.fromCssColorString(this.defaultStyles.circle.color), - outlineWidth: this.defaultStyles.circle.width - } - }) + const entity = this.viewer.entities.add({ + id: id, + name: `圆形 ${this.entityCounter}`, + position: center, // 圆心位置 - // 【重要修改】直接把 entity 推入数组 - this.allEntities.push(entity) + // 【优化】使用 ellipse (椭圆) 绘制圆形 + ellipse: { + semiMinorAxis: validRadius, // 半短轴 = 半径 + semiMajorAxis: validRadius, // 半长轴 = 半径 + material: Cesium.Color.fromCssColorString(this.defaultStyles.circle.color) + .withAlpha(this.defaultStyles.circle.opacity), + outline: true, + outlineColor: Cesium.Color.fromCssColorString(this.defaultStyles.circle.color), + outlineWidth: this.defaultStyles.circle.width + } + }) - return entity -}, + // 【重要修改】直接把 entity 推入数组 + this.allEntities.push(entity) + + return entity + }, // ================== 工具方法 ================== @@ -1379,11 +1382,17 @@ export default { break case 'circle': + // 检查半径是否有效 + const radius = entityData.data.radius || 1000 + if (radius <= 0) { + this.$message.error('圆形半径必须大于0') + return + } entity = this.viewer.entities.add({ position: Cesium.Cartesian3.fromDegrees(entityData.data.center.lng, entityData.data.center.lat), ellipse: { - semiMinorAxis: entityData.data.radius, - semiMajorAxis: entityData.data.radius, + semiMinorAxis: radius, + semiMajorAxis: radius, material: Cesium.Color.fromCssColorString(color).withAlpha(0.5), outline: true, outlineColor: Cesium.Color.fromCssColorString(color), diff --git a/ruoyi-ui/src/views/childRoom/BottomLeftPanel.vue b/ruoyi-ui/src/views/childRoom/BottomLeftPanel.vue index 177a63a..57bae6e 100644 --- a/ruoyi-ui/src/views/childRoom/BottomLeftPanel.vue +++ b/ruoyi-ui/src/views/childRoom/BottomLeftPanel.vue @@ -31,7 +31,7 @@