From 0f16db42e4e331bfaf084c27ca602c275e87668d Mon Sep 17 00:00:00 2001
From: 张含笑 <zhx18749296735@163.com>
Date: Tue, 28 Oct 2025 18:07:42 +0800
Subject: [PATCH] feat:渲染数据
---
src/views/layerManagement/index.vue | 27 +++++++++++++++++++++++++++
1 files changed, 27 insertions(+), 0 deletions(-)
diff --git a/src/views/layerManagement/index.vue b/src/views/layerManagement/index.vue
index f8c45e7..8690df9 100644
--- a/src/views/layerManagement/index.vue
+++ b/src/views/layerManagement/index.vue
@@ -18,6 +18,7 @@
</template>
<script setup>
+import { flyVisual } from '@/utils/cesium/mapUtil'
import rightEdit from '@/views/layerManagement/components/rightEdit.vue';
import leftList from '@/views/layerManagement/components/leftList.vue';
import { DrawPolygon } from '@/views/layerManagement/components/utils';
@@ -131,6 +132,8 @@
const loadDataToMap = (dataList) => {
if (!viewer) return;
viewer.entities.removeAll();
+ // 存储所有有效坐标,用于后续定位
+ const allCoordinates = [];
dataList.forEach(item => {
// 解析 geo_data 为经纬度坐标数组(使用已有的 parseGeoDataToPositions 方法)
const positions = parseGeoDataToPositions(item.geo_data, item.altitude);
@@ -178,7 +181,31 @@
// 绑定新的点击事件,用于高亮选中的围栏
// viewInstance.value?.addLeftClickEvent(null, handleFenceClick, 'fenceHighlighting');
};
+// 围栏点击处理函数(高亮选中项 + 可联动右侧编辑组件)
+const handleFenceClick = (movement) => {
+ if (!viewer) return;
+ // 拾取点击的实体
+ const pickedObject = viewer.scene.pick(movement.position);
+ if (Cesium.defined(pickedObject) && pickedObject.id?.customType === 'fence_polygon') {
+ const selectedEntity = pickedObject.id;
+ console.log('选中的围栏数据:', selectedEntity.customInfo);
+
+ // 1. 高亮处理(清除其他实体高亮,仅高亮当前选中)
+ viewer.entities.values.forEach(entity => {
+ if (entity.customType === 'fence_polygon') {
+ // 恢复默认样式
+ entity.polygon.material = entity === selectedEntity
+ ? selectedEntity.polygon.material.color.withAlpha(0.8) // 选中时加深透明度
+ : selectedEntity.polygon.material.color.withAlpha(0.5); // 未选中恢复默认
+ }
+ });
+
+ // 2. 联动右侧编辑组件(假设 rightEdit 有接收数据的方法)
+ // 例如:通过 ref 调用 rightEdit 的 setData 方法
+ // rightEditRef.value?.setData(selectedEntity.customInfo);
+ }
+};
let publicCesiumInstance = null;
let viewer = null;
const viewInstance = shallowRef(null);
--
Gitblit v1.9.3