refactor: 重命名管理器类并更新相关类型导入,优化代码结构
This commit is contained in:
@ -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 传递给组合函数
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -11,7 +11,7 @@ interface ManagedSatelliteEntities {
|
||||
orbitEntity?: Cesium.Entity;
|
||||
}
|
||||
|
||||
export class SatelliteManager {
|
||||
export class HCesiumSatelliteManager {
|
||||
private viewerManager: HCesiumManager;
|
||||
private calculator: SatelliteCalculator;
|
||||
// 用于存储当前由此管理器管理的卫星相关实体的 Map
|
||||
|
@ -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 已销毁。');
|
||||
}
|
||||
}
|
||||
|
@ -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 });
|
@ -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 结束
|
@ -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 实例
|
@ -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>({
|
||||
|
Reference in New Issue
Block a user