refactor: 重命名管理器类并更新相关类型导入,优化代码结构

This commit is contained in:
严浩
2025-04-03 13:17:34 +08:00
parent 29678d8f61
commit 64e82fbb7f
9 changed files with 16 additions and 24 deletions

View File

@ -1,9 +1,9 @@
<script setup lang="ts">
import type { GroundStationState, SatelliteState } from './useHCesiumViewerCls.types';
import type { GroundStationState, SatelliteState } from './useHCesiumManager.types';
import { useHCesiumViewerCls } from './useHCesiumViewerCls';
import { useHCesiumViewerClsSatellite } from './useHCesiumViewerCls.卫星';
import { useHCesiumViewerClsGroundStation } from './useHCesiumViewerCls.站点';
import { useHCesiumManager } from './useHCesiumManager';
import { useHCesiumViewerClsSatellite } from './useHCesiumManager.卫星';
import { useHCesiumViewerClsGroundStation } from './useHCesiumManager.站点';
import 'cesium/Build/Cesium/Widgets/widgets.css';
@ -13,7 +13,7 @@ const props = defineProps<{
}>();
// 1. 管理 Cesium Viewer 实例生命周期
const { hCesiumViewerManager } = useHCesiumViewerCls('cesium-container'); // 获取新的 Manager 实例
const { hCesiumViewerManager } = useHCesiumManager('cesium-container'); // 获取新的 Manager 实例
// 2. 同步地面站实体
// 将实例的 getter 和 props 的 getter 传递给组合函数

View File

@ -11,7 +11,6 @@ configureCesium();
export class HCesiumManager {
viewer: Cesium.Viewer | null = null;
private containerId: Element | null | string = null;
/**
* 初始化 Cesium Viewer。
@ -25,7 +24,6 @@ export class HCesiumManager {
}
try {
this.containerId = container; // 保存 container 引用或 ID
this.viewer = new Cesium.Viewer(container, VIEWER_OPTIONS_FN());
configureTimeLine(this.viewer);
@ -59,12 +57,10 @@ export class HCesiumManager {
console.error('销毁 Cesium Viewer 时出错:', error);
} finally {
this.viewer = null;
this.containerId = null;
}
} else {
// console.log('Cesium Viewer 未初始化或已被销毁,无需再次销毁。');
this.viewer = null; // 确保 viewer 为 null
this.containerId = null;
}
}

View File

@ -11,7 +11,7 @@ interface ManagedSatelliteEntities {
orbitEntity?: Cesium.Entity;
}
export class SatelliteManager {
export class HCesiumSatelliteManager {
private viewerManager: HCesiumManager;
private calculator: SatelliteCalculator;
// 用于存储当前由此管理器管理的卫星相关实体的 Map

View File

@ -3,7 +3,7 @@ import * as Cesium from 'cesium';
import type { HCesiumManager } from './HCesiumManager';
import type { I站点 } from './HCesiumManager.types';
export class GroundStationManager {
export class HCesiumStationManager {
private viewerManager: HCesiumManager;
// 用于存储当前由此管理器管理的地面站实体的 Map
private currentStationEntities: Map<string, Cesium.Entity> = new Map();
@ -119,6 +119,5 @@ export class GroundStationManager {
*/
destroy(): void {
this.clearAllStations();
// console.log('GroundStationManager 已销毁。');
}
}

View File

@ -1,13 +1,11 @@
// src/utils/useHCesiumViewerCls.ts
import { HCesiumManager } from './managers/HCesiumManager'; // 导入新的 Manager
import { HCesiumManager } from './managers/HCesiumManager';
/**
* HCesiumViewerManager
* @param containerId - Cesium Viewer DOM ID
* @returns HCesiumViewerManager
*/
export function useHCesiumViewerCls(containerId: string) {
export function useHCesiumManager(containerId: string) {
const hCesiumViewerManager = new HCesiumManager();
// 可以在开发模式下暴露 manager 实例,方便调试
if ($__DEV__) Object.assign(globalThis, { hCesiumViewerManager });

View File

@ -6,7 +6,7 @@ import type { HCesiumManager } from './managers/HCesiumManager'; // 导入新的
import type { I卫星 } from './managers/HCesiumManager.types'; // 类型定义保持不变
import { SatelliteCalculator } from './calculators/SatelliteCalculator'; // 导入计算器
import { SatelliteManager } from './managers/HCesiumManager.卫星'; // 导入 Satellite Manager
import { HCesiumSatelliteManager } from './managers/HCesiumManager.卫星'; // 导入 Satellite Manager
/**
* Cesium Viewer ID
@ -20,7 +20,7 @@ export function useHCesiumViewerClsSatellite(
selectedSatelliteIds: MaybeRefOrGetter<Set<string> | undefined>,
) {
// SatelliteManager 和 Calculator 实例引用
const satelliteManager = ref<null | SatelliteManager>(null); // 正确的类型顺序
const satelliteManager = ref<HCesiumSatelliteManager | null>(null);
// Calculator 通常是无状态的,可以在 setup 作用域创建一次
const satelliteCalculator = new SatelliteCalculator();
@ -51,7 +51,7 @@ export function useHCesiumViewerClsSatellite(
// 确保 SatelliteManager 实例存在且与当前的 ViewerManager 关联
if (!satelliteManager.value) {
// 创建 SatelliteManager 时传入 ViewerManager 和 Calculator
satelliteManager.value = new SatelliteManager(viewerManagerInstance, satelliteCalculator);
satelliteManager.value = new HCesiumSatelliteManager(viewerManagerInstance, satelliteCalculator);
}
const manager = satelliteManager.value; // 使用 manager 实例
@ -78,7 +78,6 @@ export function useHCesiumViewerClsSatellite(
}
}
}
},
{ immediate: true, deep: false }, // 立即执行一次,非深度监听
); // watch 结束

View File

@ -5,7 +5,7 @@ import type { MaybeRefOrGetter } from 'vue';
import type { HCesiumManager } from './managers/HCesiumManager'; // 导入新的 Viewer Manager
import type { I站点 } from './managers/HCesiumManager.types'; // 类型定义保持不变
import { GroundStationManager } from './managers/HCesiumManager.站点'; // 导入 GroundStation Manager
import { HCesiumStationManager } from './managers/HCesiumManager.站点'; // 导入 GroundStation Manager
/**
* Cesium Viewer ID
@ -19,7 +19,7 @@ export function useHCesiumViewerClsGroundStation(
selectedStationIds: MaybeRefOrGetter<Set<string> | undefined>,
) {
// GroundStationManager 实例引用
const groundStationManager = ref<GroundStationManager | null>(null);
const groundStationManager = ref<HCesiumStationManager | null>(null);
// 创建一个从 ID 到站点选项的映射,方便查找
const stationMap = computed(() => {
@ -47,7 +47,7 @@ export function useHCesiumViewerClsGroundStation(
// 确保 GroundStationManager 实例存在且与当前的 ViewerManager 关联
if (!groundStationManager.value) {
groundStationManager.value = new GroundStationManager(viewerManagerInstance);
groundStationManager.value = new HCesiumStationManager(viewerManagerInstance);
}
const manager = groundStationManager.value; // 使用 manager 实例

View File

@ -4,7 +4,7 @@ meta:
</route>
<script setup lang="ts">
import type { GroundStationState, SatelliteState } from '@/components/h-cesium-viewer/useHCesiumViewerCls.types';
import type { GroundStationState, SatelliteState } from '@/components/h-cesium-viewer/useHCesiumManager.types';
// 地面站和选中状态
const groundStationState = reactive<GroundStationState>({