From f3e09a76a7f5147072374b80285901ff69ee2cfe Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Sat, 31 Jan 2026 17:13:20 +0800
Subject: [PATCH] Merge branch 'master' of http://139.196.74.78:10010/r/jagzwxm/ja_web

---
 packages/utils/map/index.js |   45 ++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 44 insertions(+), 1 deletions(-)

diff --git a/packages/utils/map/index.js b/packages/utils/map/index.js
index 2503669..9d137c7 100644
--- a/packages/utils/map/index.js
+++ b/packages/utils/map/index.js
@@ -1,5 +1,6 @@
 import * as Cesium from 'cesium'
 import { MapTooltip } from './MapTooltip'
+import { DrawPolygon } from './DrawPolygon'
 /**
  * 飞到中心点并且所有点在可视范围
  *  @param positionsData 二维数组,每项为 [lon, lat] 或 三维数组 [lon, lat, height]
@@ -61,4 +62,46 @@
 	})
 }
 
-export { MapTooltip, flyVisual }
+// 批量获取点数组经纬度对应高度信息
+const getPointPositionsHeight = (data, viewer, droneHeight = null) => {
+	return new Promise((resolve, reject) => {
+		if (!data || !data.length) {
+			resolve([])
+			return
+		}
+		// 假设 viewer 已经初始化并且 terrainProvider 是有效的
+		const terrainProvider = viewer?.terrainProvider
+		// 创建 Cartographic 对象
+		const cartographics = data.map(item => {
+			const { lng, lat } = item
+			return Cesium.Cartographic.fromDegrees(Number(lng), Number(lat))
+		})
+		// 获取地形数据的Promise
+		const promise = Cesium.sampleTerrainMostDetailed(terrainProvider, cartographics)
+		// 使用 Cesium.when 处理 Promise
+		promise
+			.then(function (updatedPositions) {
+				//  是一个数组,包含更新后的 Cartographic 对象
+				const newPosition = updatedPositions.map((item, index) => {
+					const longitude = Cesium.Math.toDegrees(item.longitude)
+					const latitude = Cesium.Math.toDegrees(item.latitude)
+					let pointData = {
+						...data[index],
+						longitude,
+						latitude,
+						ASL: Number(item.height),
+						customHeight: Number(item.height),
+					}
+					if (droneHeight) pointData.TH = Number(item.height) + Number(droneHeight)
+					return pointData
+				})
+				resolve(newPosition)
+			})
+			.catch(function (error) {
+				console.log('获取高程时发生错误:', error)
+				resolve(data.map(item => ({ ...item, ASL: 0, customHeight: 0, longitude: item.lng, latitude: item.lat })))
+			})
+	})
+}
+
+export { MapTooltip, flyVisual, getPointPositionsHeight, DrawPolygon }

--
Gitblit v1.9.3