From 39b3b3ba2cb55cd2ceb7ce426d11141ab2156426 Mon Sep 17 00:00:00 2001
From: 张含笑 <zhx18749296735@163.com>
Date: Wed, 29 Oct 2025 09:59:11 +0800
Subject: [PATCH] feat:解析坐标
---
src/views/layerManagement/index.vue | 22 ++++++++++++++++++----
1 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/src/views/layerManagement/index.vue b/src/views/layerManagement/index.vue
index cf12936..ab59411 100644
--- a/src/views/layerManagement/index.vue
+++ b/src/views/layerManagement/index.vue
@@ -56,16 +56,30 @@
activeType.value = clickedTab.type;
activeName.value = clickedTab.name;
};
-// 解析 geo_data 并转换为 DrawPolygon 所需的坐标格式
+
+// 解析 geo_data 并转换为坐标格式(兼容 Polygon 和 LineString)
const parseGeoDataToPositions = (geoDataStr, altitude) => {
try {
const geoData = JSON.parse(geoDataStr);
- if (geoData.type !== 'Polygon') return [];
- const coordinates = geoData.coordinates[0];
+ let coordinates = [];
+
+
+ if (geoData.type === 'Polygon') {
+ // Polygon 坐标格式:[[[lng, lat], ...]] → 取第一个多边形的顶点
+ coordinates = geoData.coordinates[0] || [];
+ } else if (geoData.type === 'LineString') {
+ // LineString 坐标格式:[[lng, lat], ...] → 直接取顶点
+ coordinates = geoData.coordinates || [];
+ } else {
+ console.warn(`不支持的地理数据类型:${geoData.type}`);
+ return [];
+ }
+
+ // 转换为 {lng, lat, height} 格式
return coordinates.map(([lng, lat]) => ({
lng: Number(lng),
lat: Number(lat),
- height: Number(altitude) || 0,
+ height: Number(altitude) || 0,
}));
} catch (error) {
console.error('解析 geo_data 失败:', error);
--
Gitblit v1.9.3