From baeb96afcefcb3fecf05f892b7f2c84cb5182c18 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Sat, 31 Jan 2026 14:47:41 +0800
Subject: [PATCH] feat:侦测范围管理增加地图提示

---
 applications/drone-command/src/views/detectionCountermeasure/detectionRange/DetectionRangeDialog.vue |   31 +++++++++++++++++++++++++++++++
 1 files changed, 31 insertions(+), 0 deletions(-)

diff --git a/applications/drone-command/src/views/detectionCountermeasure/detectionRange/DetectionRangeDialog.vue b/applications/drone-command/src/views/detectionCountermeasure/detectionRange/DetectionRangeDialog.vue
index a939219..b2fa130 100644
--- a/applications/drone-command/src/views/detectionCountermeasure/detectionRange/DetectionRangeDialog.vue
+++ b/applications/drone-command/src/views/detectionCountermeasure/detectionRange/DetectionRangeDialog.vue
@@ -163,6 +163,7 @@
 import * as Cesium from 'cesium'
 import { saveOperationLog } from '@ztzf/apis'
 import { useRoute } from 'vue-router'
+import { MapTooltip } from '@/utils/cesium/shapeTools/Tooltip'
 
 import equipment from '@/assets/images/dataCockpit/legend/equipment.png'
 
@@ -190,6 +191,10 @@
 let viewer
 let redPointEntity
 let rangeCircleEntity
+let mouseMoveBound = false
+let mapTooltip
+let publicCesium
+const tooltipEventKey = 'detection-range-point-tip'
 const formTitle = computed(() => {
 	if (dialogMode.value === 'edit') {
 		return '编辑侦测范围'
@@ -307,6 +312,7 @@
 	viewer = null
 	redPointEntity = null
 	rangeCircleEntity = null
+	clearPointTooltip()
 }
 
 function setMapPoint(longitude, latitude) {
@@ -389,8 +395,32 @@
 	const map = mapRef.value?.getMap()
 	if (!map?.viewer) return
 	viewer = map.viewer
+	publicCesium = map.publicCesium
 	if (!dialogReadonly.value) {
 		map.publicCesium?.addLeftClickEvent?.(null, handleMapClick)
+		ensurePointTooltip()
+	}
+}
+
+function ensurePointTooltip() {
+	if (!viewer || !publicCesium || mouseMoveBound) return
+	mapTooltip ||= new MapTooltip(viewer, { offset: { x: 28, y: 24 } })
+	publicCesium.addMouseHandler?.(
+		null,
+		movement => {
+			if (!visible.value || dialogReadonly.value) return
+			mapTooltip?.show('点击地图选择设备位置', movement.endPosition)
+		},
+		tooltipEventKey
+	)
+	mouseMoveBound = true
+}
+
+function clearPointTooltip() {
+	mapTooltip?.hide()
+	if (publicCesium && mouseMoveBound) {
+		publicCesium.removeMouseHandler?.(tooltipEventKey)
+		mouseMoveBound = false
 	}
 }
 
@@ -408,6 +438,7 @@
 // 打开弹框
 async function open({ mode, row } = {}) {
 	dialogMode.value = mode || 'add'
+	clearPointTooltip()
 	await nextTick()
 	initMap()
 	if (dialogMode.value === 'add') {

--
Gitblit v1.9.3