From 924d12f53617c917e2d14d6deca6f1942e22ca93 Mon Sep 17 00:00:00 2001
From: 张含笑 <zhx18749296735@163.com>
Date: Tue, 28 Oct 2025 17:56:58 +0800
Subject: [PATCH] feat:渲染数据

---
 src/views/layerManagement/index.vue |   52 +++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 45 insertions(+), 7 deletions(-)

diff --git a/src/views/layerManagement/index.vue b/src/views/layerManagement/index.vue
index 0b1618b..f8c45e7 100644
--- a/src/views/layerManagement/index.vue
+++ b/src/views/layerManagement/index.vue
@@ -128,17 +128,55 @@
     drawPolygonExample.removeEntities();
   }
 };
-const loadDataToMap = dataList => {
-  // 清空之前的绘制内容
-  drawPolygonExample.removeEntities();
+const loadDataToMap = (dataList) => {
+  if (!viewer) return; 
+  viewer.entities.removeAll();
   dataList.forEach(item => {
-    // 转换坐标格式
+    // 解析 geo_data 为经纬度坐标数组(使用已有的 parseGeoDataToPositions 方法)
     const positions = parseGeoDataToPositions(item.geo_data, item.altitude);
-    if (positions.length < 3) return; // 少于3个点无法构成多边形
+    if (positions.length < 3) {
+      console.warn(`数据 ${item.name} 坐标点不足,无法绘制`);
+      return;
+    }
+console.log('positions',positions);
 
-    // 调用 DrawPolygon 的 initPolygon 方法渲染多边形
-    drawPolygonExample.initPolygon(viewer, positions, true);
+    //  转换为 Cesium 所需的 [lng, lat, lng, lat, ...] 扁平数组格式
+    let degreesArray = [];
+    positions.forEach(pos => {
+      degreesArray.push(pos.lng, pos.lat, pos.height);   
+      
+    });   
+    viewer.entities.add({
+      id: `polygon_${item.id}`, 
+      customType: 'fence_polygon', 
+      customInfo: item,
+      polygon: {
+        hierarchy: new Cesium.PolygonHierarchy(
+          Cesium.Cartesian3.fromDegreesArrayHeights(degreesArray)
+        ),
+        material: Cesium.Color.YELLOW.withAlpha(0.5), // 填充色
+        outline: true, // 显示边框
+        outlineColor: Cesium.Color.YELLOW, // 边框色
+        outlineWidth: 2, // 边框宽度
+        clampToGround: true, // 贴地显示
+       
+      },
+    
+      polyline: {
+        positions: Cesium.Cartesian3.fromDegreesArrayHeights(degreesArray),
+        width: 2,
+        material: Cesium.Color.YELLOW,
+        clampToGround: true,
+      },
+      zIndex: 99, // 层级,确保在其他图层上方显示
+    });
   });
+
+  //  添加点击事件(参考 entitiesAddSpot 的 spotHighlighting 逻辑)
+  // 移除已有点击事件,避免重复绑定
+  // viewInstance.value?.removeLeftClickEvent('fenceHighlighting');
+  // 绑定新的点击事件,用于高亮选中的围栏
+  // viewInstance.value?.addLeftClickEvent(null, handleFenceClick, 'fenceHighlighting');
 };
 
 let publicCesiumInstance = null;

--
Gitblit v1.9.3