refactor: 重命名管理器类并更新相关类型导入,优化代码结构
This commit is contained in:
@ -1,9 +1,9 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import type { GroundStationState, SatelliteState } from './useHCesiumViewerCls.types';
|
import type { GroundStationState, SatelliteState } from './useHCesiumManager.types';
|
||||||
|
|
||||||
import { useHCesiumViewerCls } from './useHCesiumViewerCls';
|
import { useHCesiumManager } from './useHCesiumManager';
|
||||||
import { useHCesiumViewerClsSatellite } from './useHCesiumViewerCls.卫星';
|
import { useHCesiumViewerClsSatellite } from './useHCesiumManager.卫星';
|
||||||
import { useHCesiumViewerClsGroundStation } from './useHCesiumViewerCls.站点';
|
import { useHCesiumViewerClsGroundStation } from './useHCesiumManager.站点';
|
||||||
|
|
||||||
import 'cesium/Build/Cesium/Widgets/widgets.css';
|
import 'cesium/Build/Cesium/Widgets/widgets.css';
|
||||||
|
|
||||||
@ -13,7 +13,7 @@ const props = defineProps<{
|
|||||||
}>();
|
}>();
|
||||||
|
|
||||||
// 1. 管理 Cesium Viewer 实例生命周期
|
// 1. 管理 Cesium Viewer 实例生命周期
|
||||||
const { hCesiumViewerManager } = useHCesiumViewerCls('cesium-container'); // 获取新的 Manager 实例
|
const { hCesiumViewerManager } = useHCesiumManager('cesium-container'); // 获取新的 Manager 实例
|
||||||
|
|
||||||
// 2. 同步地面站实体
|
// 2. 同步地面站实体
|
||||||
// 将实例的 getter 和 props 的 getter 传递给组合函数
|
// 将实例的 getter 和 props 的 getter 传递给组合函数
|
||||||
|
@ -11,7 +11,6 @@ configureCesium();
|
|||||||
|
|
||||||
export class HCesiumManager {
|
export class HCesiumManager {
|
||||||
viewer: Cesium.Viewer | null = null;
|
viewer: Cesium.Viewer | null = null;
|
||||||
private containerId: Element | null | string = null;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 初始化 Cesium Viewer。
|
* 初始化 Cesium Viewer。
|
||||||
@ -25,7 +24,6 @@ export class HCesiumManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
this.containerId = container; // 保存 container 引用或 ID
|
|
||||||
this.viewer = new Cesium.Viewer(container, VIEWER_OPTIONS_FN());
|
this.viewer = new Cesium.Viewer(container, VIEWER_OPTIONS_FN());
|
||||||
|
|
||||||
configureTimeLine(this.viewer);
|
configureTimeLine(this.viewer);
|
||||||
@ -59,12 +57,10 @@ export class HCesiumManager {
|
|||||||
console.error('销毁 Cesium Viewer 时出错:', error);
|
console.error('销毁 Cesium Viewer 时出错:', error);
|
||||||
} finally {
|
} finally {
|
||||||
this.viewer = null;
|
this.viewer = null;
|
||||||
this.containerId = null;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// console.log('Cesium Viewer 未初始化或已被销毁,无需再次销毁。');
|
// console.log('Cesium Viewer 未初始化或已被销毁,无需再次销毁。');
|
||||||
this.viewer = null; // 确保 viewer 为 null
|
this.viewer = null; // 确保 viewer 为 null
|
||||||
this.containerId = null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ interface ManagedSatelliteEntities {
|
|||||||
orbitEntity?: Cesium.Entity;
|
orbitEntity?: Cesium.Entity;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class SatelliteManager {
|
export class HCesiumSatelliteManager {
|
||||||
private viewerManager: HCesiumManager;
|
private viewerManager: HCesiumManager;
|
||||||
private calculator: SatelliteCalculator;
|
private calculator: SatelliteCalculator;
|
||||||
// 用于存储当前由此管理器管理的卫星相关实体的 Map
|
// 用于存储当前由此管理器管理的卫星相关实体的 Map
|
||||||
|
@ -3,7 +3,7 @@ import * as Cesium from 'cesium';
|
|||||||
import type { HCesiumManager } from './HCesiumManager';
|
import type { HCesiumManager } from './HCesiumManager';
|
||||||
import type { I站点 } from './HCesiumManager.types';
|
import type { I站点 } from './HCesiumManager.types';
|
||||||
|
|
||||||
export class GroundStationManager {
|
export class HCesiumStationManager {
|
||||||
private viewerManager: HCesiumManager;
|
private viewerManager: HCesiumManager;
|
||||||
// 用于存储当前由此管理器管理的地面站实体的 Map
|
// 用于存储当前由此管理器管理的地面站实体的 Map
|
||||||
private currentStationEntities: Map<string, Cesium.Entity> = new Map();
|
private currentStationEntities: Map<string, Cesium.Entity> = new Map();
|
||||||
@ -119,6 +119,5 @@ export class GroundStationManager {
|
|||||||
*/
|
*/
|
||||||
destroy(): void {
|
destroy(): void {
|
||||||
this.clearAllStations();
|
this.clearAllStations();
|
||||||
// console.log('GroundStationManager 已销毁。');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,11 @@
|
|||||||
// src/utils/useHCesiumViewerCls.ts
|
import { HCesiumManager } from './managers/HCesiumManager';
|
||||||
|
|
||||||
import { HCesiumManager } from './managers/HCesiumManager'; // 导入新的 Manager
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 管理 HCesiumViewerManager 实例的生命周期。
|
* 管理 HCesiumViewerManager 实例的生命周期。
|
||||||
* @param containerId - Cesium Viewer 容器的 DOM ID。
|
* @param containerId - Cesium Viewer 容器的 DOM ID。
|
||||||
* @returns 返回包含 HCesiumViewerManager 实例的对象。
|
* @returns 返回包含 HCesiumViewerManager 实例的对象。
|
||||||
*/
|
*/
|
||||||
export function useHCesiumViewerCls(containerId: string) {
|
export function useHCesiumManager(containerId: string) {
|
||||||
const hCesiumViewerManager = new HCesiumManager();
|
const hCesiumViewerManager = new HCesiumManager();
|
||||||
// 可以在开发模式下暴露 manager 实例,方便调试
|
// 可以在开发模式下暴露 manager 实例,方便调试
|
||||||
if ($__DEV__) Object.assign(globalThis, { hCesiumViewerManager });
|
if ($__DEV__) Object.assign(globalThis, { hCesiumViewerManager });
|
@ -6,7 +6,7 @@ import type { HCesiumManager } from './managers/HCesiumManager'; // 导入新的
|
|||||||
import type { I卫星 } from './managers/HCesiumManager.types'; // 类型定义保持不变
|
import type { I卫星 } from './managers/HCesiumManager.types'; // 类型定义保持不变
|
||||||
|
|
||||||
import { SatelliteCalculator } from './calculators/SatelliteCalculator'; // 导入计算器
|
import { SatelliteCalculator } from './calculators/SatelliteCalculator'; // 导入计算器
|
||||||
import { SatelliteManager } from './managers/HCesiumManager.卫星'; // 导入 Satellite Manager
|
import { HCesiumSatelliteManager } from './managers/HCesiumManager.卫星'; // 导入 Satellite Manager
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 管理 Cesium Viewer 中的卫星实体,根据选中的 ID 列表进行同步。
|
* 管理 Cesium Viewer 中的卫星实体,根据选中的 ID 列表进行同步。
|
||||||
@ -20,7 +20,7 @@ export function useHCesiumViewerClsSatellite(
|
|||||||
selectedSatelliteIds: MaybeRefOrGetter<Set<string> | undefined>,
|
selectedSatelliteIds: MaybeRefOrGetter<Set<string> | undefined>,
|
||||||
) {
|
) {
|
||||||
// SatelliteManager 和 Calculator 实例引用
|
// SatelliteManager 和 Calculator 实例引用
|
||||||
const satelliteManager = ref<null | SatelliteManager>(null); // 正确的类型顺序
|
const satelliteManager = ref<HCesiumSatelliteManager | null>(null);
|
||||||
// Calculator 通常是无状态的,可以在 setup 作用域创建一次
|
// Calculator 通常是无状态的,可以在 setup 作用域创建一次
|
||||||
const satelliteCalculator = new SatelliteCalculator();
|
const satelliteCalculator = new SatelliteCalculator();
|
||||||
|
|
||||||
@ -51,7 +51,7 @@ export function useHCesiumViewerClsSatellite(
|
|||||||
// 确保 SatelliteManager 实例存在且与当前的 ViewerManager 关联
|
// 确保 SatelliteManager 实例存在且与当前的 ViewerManager 关联
|
||||||
if (!satelliteManager.value) {
|
if (!satelliteManager.value) {
|
||||||
// 创建 SatelliteManager 时传入 ViewerManager 和 Calculator
|
// 创建 SatelliteManager 时传入 ViewerManager 和 Calculator
|
||||||
satelliteManager.value = new SatelliteManager(viewerManagerInstance, satelliteCalculator);
|
satelliteManager.value = new HCesiumSatelliteManager(viewerManagerInstance, satelliteCalculator);
|
||||||
}
|
}
|
||||||
|
|
||||||
const manager = satelliteManager.value; // 使用 manager 实例
|
const manager = satelliteManager.value; // 使用 manager 实例
|
||||||
@ -78,7 +78,6 @@ export function useHCesiumViewerClsSatellite(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
{ immediate: true, deep: false }, // 立即执行一次,非深度监听
|
{ immediate: true, deep: false }, // 立即执行一次,非深度监听
|
||||||
); // watch 结束
|
); // watch 结束
|
@ -5,7 +5,7 @@ import type { MaybeRefOrGetter } from 'vue';
|
|||||||
import type { HCesiumManager } from './managers/HCesiumManager'; // 导入新的 Viewer Manager
|
import type { HCesiumManager } from './managers/HCesiumManager'; // 导入新的 Viewer Manager
|
||||||
import type { I站点 } from './managers/HCesiumManager.types'; // 类型定义保持不变
|
import type { I站点 } from './managers/HCesiumManager.types'; // 类型定义保持不变
|
||||||
|
|
||||||
import { GroundStationManager } from './managers/HCesiumManager.站点'; // 导入 GroundStation Manager
|
import { HCesiumStationManager } from './managers/HCesiumManager.站点'; // 导入 GroundStation Manager
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 管理 Cesium Viewer 中的地面站实体,根据选中的 ID 列表进行同步。
|
* 管理 Cesium Viewer 中的地面站实体,根据选中的 ID 列表进行同步。
|
||||||
@ -19,7 +19,7 @@ export function useHCesiumViewerClsGroundStation(
|
|||||||
selectedStationIds: MaybeRefOrGetter<Set<string> | undefined>,
|
selectedStationIds: MaybeRefOrGetter<Set<string> | undefined>,
|
||||||
) {
|
) {
|
||||||
// GroundStationManager 实例引用
|
// GroundStationManager 实例引用
|
||||||
const groundStationManager = ref<GroundStationManager | null>(null);
|
const groundStationManager = ref<HCesiumStationManager | null>(null);
|
||||||
|
|
||||||
// 创建一个从 ID 到站点选项的映射,方便查找
|
// 创建一个从 ID 到站点选项的映射,方便查找
|
||||||
const stationMap = computed(() => {
|
const stationMap = computed(() => {
|
||||||
@ -47,7 +47,7 @@ export function useHCesiumViewerClsGroundStation(
|
|||||||
|
|
||||||
// 确保 GroundStationManager 实例存在且与当前的 ViewerManager 关联
|
// 确保 GroundStationManager 实例存在且与当前的 ViewerManager 关联
|
||||||
if (!groundStationManager.value) {
|
if (!groundStationManager.value) {
|
||||||
groundStationManager.value = new GroundStationManager(viewerManagerInstance);
|
groundStationManager.value = new HCesiumStationManager(viewerManagerInstance);
|
||||||
}
|
}
|
||||||
|
|
||||||
const manager = groundStationManager.value; // 使用 manager 实例
|
const manager = groundStationManager.value; // 使用 manager 实例
|
@ -4,7 +4,7 @@ meta:
|
|||||||
</route>
|
</route>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<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>({
|
const groundStationState = reactive<GroundStationState>({
|
||||||
|
Reference in New Issue
Block a user