From bdb40c598aa43389d0717edd37de390373a6332c Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Mon, 02 Feb 2026 11:00:04 +0800
Subject: [PATCH] feat:缓冲圆半径显示优化

---
 applications/drone-command/src/utils/cesium/shapeTools/shapeUtils.js |   38 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 38 insertions(+), 0 deletions(-)

diff --git a/applications/drone-command/src/utils/cesium/shapeTools/shapeUtils.js b/applications/drone-command/src/utils/cesium/shapeTools/shapeUtils.js
index 86d13bd..8c83c26 100644
--- a/applications/drone-command/src/utils/cesium/shapeTools/shapeUtils.js
+++ b/applications/drone-command/src/utils/cesium/shapeTools/shapeUtils.js
@@ -93,3 +93,41 @@
 	if (meters >= 1000) return `${(meters / 1000).toFixed(2)} km`
 	return `${meters.toFixed(2)} m`
 }
+
+export const getBufferRadiusPoint = (centerCartesian, radius) => {
+	if (!centerCartesian || !Number.isFinite(radius)) return null
+	const frame = Cesium.Transforms.eastNorthUpToFixedFrame(centerCartesian)
+	const local = new Cesium.Cartesian3(radius, 0, 0)
+	return Cesium.Matrix4.multiplyByPoint(frame, local, new Cesium.Cartesian3())
+}
+
+export const getBufferRadiusLabelStyle = () => ({
+	font: '14px Source Han Sans CN',
+	fillColor: Cesium.Color.WHITE,
+	outlineColor: Cesium.Color.fromBytes(24, 48, 92, 255),
+	outlineWidth: 2,
+	style: Cesium.LabelStyle.FILL_AND_OUTLINE,
+	showBackground: true,
+	backgroundColor: Cesium.Color.fromBytes(8, 12, 22, 180),
+	heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
+	verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
+	horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
+	pixelOffset: new Cesium.Cartesian2(0, -12),
+	disableDepthTestDistance: Number.POSITIVE_INFINITY,
+})
+
+export const addBufferRadiusLabelEntity = (dataSource, centerCartesian, radius, options = {}) => {
+	if (!dataSource) return null
+	const position = getBufferRadiusPoint(centerCartesian, radius)
+	if (!position) return null
+	const { name, customData } = options
+	return dataSource.entities.add({
+		...(name ? { name } : {}),
+		...(customData ? { customData } : {}),
+		position,
+		label: {
+			...getBufferRadiusLabelStyle(),
+			text: formatBufferRadius(radius),
+		},
+	})
+}

--
Gitblit v1.9.3