From 89380e6260a75d1d3b94de687ebcc2f50d50659d Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Tue, 03 Feb 2026 15:44:33 +0800
Subject: [PATCH] feat:环境变量配置调整
---
packages/utils/map/index.js | 68 +++++++++++++++++++++++----------
1 files changed, 47 insertions(+), 21 deletions(-)
diff --git a/packages/utils/map/index.js b/packages/utils/map/index.js
index b2bee02..9d137c7 100644
--- a/packages/utils/map/index.js
+++ b/packages/utils/map/index.js
@@ -1,24 +1,6 @@
import * as Cesium from 'cesium'
-
-// 获取正射影像4至点
-export function getOrthoImageBoundaryPoints (data) {
- const arr = JSON.parse(data)
-
- if (arr.length !== 4) return undefined
-
- const west = Math.min(arr[0], arr[2])
- const east = Math.max(arr[0], arr[2])
- const south = Math.min(arr[1], arr[3])
- const north = Math.max(arr[1], arr[3])
-
- return Cesium.Rectangle.fromDegrees(
- west,
- south,
- east,
- north
- )
-}
-
+import { MapTooltip } from './MapTooltip'
+import { DrawPolygon } from './DrawPolygon'
/**
* 飞到中心点并且所有点在可视范围
* @param positionsData 二维数组,每项为 [lon, lat] 或 三维数组 [lon, lat, height]
@@ -26,7 +8,7 @@
* @param multiple 缩放倍数-默认为4
* @param pitch 俯仰角-默认为-90
*/
-export function flyVisual({ positionsData, viewer, multiple = 4, pitch = -90 }) {
+function flyVisual({ positionsData, viewer, multiple = 4, pitch = -90 }) {
if (!Array.isArray(positionsData) || positionsData.length === 0) return
// 如果是一个点,加两个点方便后续生成外包围盒
@@ -79,3 +61,47 @@
},
})
}
+
+// 批量获取点数组经纬度对应高度信息
+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