From 21deb676625eef63caed1caafb2b93cb09e153af Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Mon, 09 Feb 2026 15:57:36 +0800
Subject: [PATCH] feat: 免密登陆
---
applications/drone-command/src/components/map-container/device-map-container.vue | 97 ++++++------------------------------------------
1 files changed, 12 insertions(+), 85 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 2c0181c..6f48e5a 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
@@ -77,6 +77,7 @@
const DETAIL_HEIGHT = 10000
const POLYGON_HEIGHT_M = 0.2
const DRONE_TRACK_DURATION_S = 30 * 60
+const FIXED_DRONE_TRACK_IDS = ['6000000000602', '6000000000601']
const props = defineProps({
allDevices: {
@@ -131,8 +132,8 @@
let favoritePulseElapsed = 0
const favoritePulseEntities = []
const pulseBaseColor = Cesium.Color.fromCssColorString('#FF3B30')
-const PULSE_MIN_RADIUS_M = 2
-const PULSE_MAX_RADIUS_M = 30
+const PULSE_MIN_RADIUS_M = 20
+const PULSE_MAX_RADIUS_M = 80
const PULSE_DURATION_S = 1.4
const detailVisible = ref(true)
const clusterVisible = ref(false)
@@ -216,93 +217,17 @@
return canvas
}
-class PulseSphereMaterialProperty {
- constructor(color, speed = 1.2, bands = 3.0, softness = 0.18) {
- this._definitionChanged = new Cesium.Event()
- this.color = color
- this.speed = speed
- this.bands = bands
- this.softness = softness
- }
- get isConstant() {
- return true
- }
- get definitionChanged() {
- return this._definitionChanged
- }
- getType() {
- return 'PulseSphereMaterial'
- }
- getValue(_time, result = {}) {
- result.color = this.color
- result.time = (performance.now() / 1000) * this.speed
- result.bands = this.bands
- result.softness = this.softness
- return result
- }
- equals(other) {
- return (
- other instanceof PulseSphereMaterialProperty &&
- Cesium.Color.equals(this.color, other.color) &&
- this.speed === other.speed &&
- this.bands === other.bands &&
- this.softness === other.softness
- )
- }
-}
-
-let pulseSphereMaterial = null
-const getPulseSphereMaterial = () => {
- if (pulseSphereMaterial) return pulseSphereMaterial
- Cesium.Material._materialCache.addMaterial('PulseSphereMaterial', {
- fabric: {
- type: 'PulseSphereMaterial',
- uniforms: {
- color: pulseBaseColor.withAlpha(0.45),
- time: 0,
- bands: 3.0,
- softness: 0.18,
- },
- source: `
- czm_material czm_getMaterial(czm_materialInput materialInput)
- {
- czm_material material = czm_getDefaultMaterial(materialInput);
- vec3 normalEC = normalize(materialInput.normalEC);
- vec3 viewEC = normalize(-materialInput.positionToEyeEC);
- float ndv = max(dot(normalEC, viewEC), 0.0);
- float fresnel = pow(1.0 - ndv, 1.6);
- float wave = sin((ndv * bands + time) * 6.2831853);
- float ring = smoothstep(-softness, softness, wave);
- float alpha = (ring * 0.6 + fresnel * 0.4) * color.a;
- material.diffuse = color.rgb;
- material.alpha = alpha;
- return material;
- }
- `,
- },
- translucent: () => true,
- })
- pulseSphereMaterial = new PulseSphereMaterialProperty(pulseBaseColor.withAlpha(0.45), 1.1, 3.2, 0.22)
- return pulseSphereMaterial
-}
-
const createFavoritePulseEntity = (billboard) => {
if (!viewer || !billboard) return
- const material = getPulseSphereMaterial()
const pulse = {
- material,
offset: Math.random() * PULSE_DURATION_S,
entity: null,
}
- const getPulseRadius3D = () => {
- const radius = getPulseRadius(pulse)
- return new Cesium.Cartesian3(radius, radius, radius)
- }
pulse.entity = viewer.entities.add({
position: new Cesium.CallbackProperty(() => getBillboardPosition(billboard), false),
- ellipsoid: {
- radii: new Cesium.CallbackProperty(() => getPulseRadius3D(), false),
- material,
+ point: {
+ pixelSize: new Cesium.CallbackProperty(() => getPulseRadius(pulse), false),
+ color: pulseBaseColor.withAlpha(0.4),
},
})
favoritePulseEntities.push(pulse)
@@ -607,10 +532,10 @@
latitude: 27.097666,
height: 400
},
- ]
+ ],
]
- return basePoints[center.trackIndex]
+ return basePoints[center.trackIndex] || basePoints[1]
}
@@ -794,7 +719,9 @@
droneTrackPolylineCollection.show = detailVisible.value
droneTrackRuntime = []
const baseTrackColor = Cesium.Color.fromCssColorString('red')
- ; (list || []).forEach((item, trackIndex) => {
+ ; (FIXED_DRONE_TRACK_IDS || []).forEach((trackId, trackIndex) => {
+ const item = (list || []).find(entry => String(entry?.id) === String(trackId))
+ if (!item) return
const position = getDevicePosition(item)
if (!position) return
const points = buildSimulatedTrackPoints({ ...position, height: item.flightHeightM, trackIndex })
@@ -818,7 +745,7 @@
width: 3,
material: trackMaterial,
})
- const droneId = `drone-alarm-${item?.alarmRecordId ?? item?.id ?? trackIndex}`
+ const droneId = `drone-alarm-${trackId}`
const startTime = viewer.clock.startTime
const stopTime = viewer.clock.stopTime
const positionProperty = new Cesium.SampledPositionProperty()
--
Gitblit v1.9.3