From e4bc365cdca026cf7c94717eb5fad3b80cce1567 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Thu, 22 Jan 2026 16:00:24 +0800
Subject: [PATCH] feat:添加地形及报错处理
---
applications/drone-command/src/components/map-container/device-map-container.vue | 39 +++++++++++++++++++++++++++++++++------
1 files changed, 33 insertions(+), 6 deletions(-)
diff --git a/applications/drone-command/src/components/map-container/device-map-container.vue b/applications/drone-command/src/components/map-container/device-map-container.vue
index 1dcdcc8..d34c53a 100644
--- a/applications/drone-command/src/components/map-container/device-map-container.vue
+++ b/applications/drone-command/src/components/map-container/device-map-container.vue
@@ -1,7 +1,7 @@
<template>
<div class="map-shell">
<CommonCesiumMap ref="mapRef" class="command-cesium map-container" :dom-id="props.containerId" :active="true"
- :flat-mode="false" :terrain="false" :layer-mode="4" :contour="false" :boundary="false"
+ :flat-mode="false" :terrain="true" :layer-mode="4" :contour="false" :boundary="false"
:show-admin-boundary="true" :zoom-to-boundary="true" :enable-stage-emit="true" :cluster-height="100000"
@ready="handleMapReady" @stage-change="handleStageChange" />
<div v-if="props.showLayerControl" class="layer-control-root" :class="{ collapsed: props.leftCollapsed }">
@@ -22,7 +22,15 @@
<div v-if="popupVisible" class="device-popup" :style="popupStyle" @click.stop>
<div class="device-popup__header">
- <span class="device-popup__title">{{ popupTitle }}</span>
+ <el-tooltip
+ class="device-popup__title-tooltip"
+ :content="popupTitle"
+ placement="top"
+ effect="dark"
+ :show-after="200"
+ >
+ <span class="device-popup__title">{{ popupTitleDisplay }}</span>
+ </el-tooltip>
<img class="device-popup__close" :src="popupClose" alt="" @click.stop="closePopup">
</div>
@@ -344,7 +352,7 @@
devices.forEach((item, index) => {
const position = getDevicePosition(item)
if (!position) return
- const entityId = `online-device-${item.id ?? index}`
+ const entityId = `online-device-${item.id ?? index}-${index}`
deviceEntityIds.add(entityId)
addDeviceRings(position, entityId, detailVisible.value)
const entity = viewer.entities.add({
@@ -496,11 +504,10 @@
style: Cesium.LabelStyle.FILL_AND_OUTLINE,
verticalOrigin: Cesium.VerticalOrigin.CENTER,
horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
- font: '12pt Source Han Sans CN',
+ font: '11pt Source Han Sans CN',
eyeOffset: new Cesium.Cartesian3(0, 0, -20), // 让label "浮" 在广告牌前面
- pixelOffset: new Cesium.Cartesian2(2, -11),
- pixelOffset: new Cesium.Cartesian2(0, -48),
+ pixelOffset: new Cesium.Cartesian2(0, -35),
disableDepthTestDistance: Number.POSITIVE_INFINITY,
heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
},
@@ -580,7 +587,13 @@
top: `${popupPosition.value.y}px`,
}))
+const POPUP_TITLE_MAX = 12
const popupTitle = computed(() => selectedDevice.value?.deviceName || selectedDevice.value?.deviceModel || '-')
+const popupTitleOverflow = computed(() => popupTitle.value.length > POPUP_TITLE_MAX)
+const popupTitleDisplay = computed(() => {
+ if (!popupTitleOverflow.value) return popupTitle.value
+ return `${popupTitle.value.slice(0, POPUP_TITLE_MAX)}……`
+})
const popupStatusText = computed(() => {
const status = selectedDevice.value?.status
if (status === 0) return '在线'
@@ -829,6 +842,20 @@
border-radius: 0px 0px 5px 5px;
}
+ .device-popup__title-tooltip {
+ flex: 1;
+ min-width: 0;
+ display: block;
+ }
+
+ .device-popup__title {
+ display: inline-block;
+ max-width: 100%;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+
.device-popup__close {
cursor: pointer;
}
--
Gitblit v1.9.3