@gis_victory/gismap 2.0.23 → 2.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/App.vue.d.ts +2 -0
- package/dist/adapters/index.d.ts +13 -0
- package/dist/adapters/mapbox/MapboxAdapter.d.ts +44 -0
- package/dist/adapters/types.d.ts +216 -0
- package/dist/api/BaseController.d.ts +6 -0
- package/dist/api/CommonController.d.ts +51 -0
- package/dist/components/MapCompass/index.vue.d.ts +2 -0
- package/dist/components/MapContainer/index.d.ts +2 -0
- package/dist/components/MapContainer/index.vue.d.ts +344 -0
- package/dist/components/MapLayer/components/CustomLayerDialog.vue.d.ts +22 -0
- package/dist/components/MapLayer/components/LayerTab.vue.d.ts +2179 -0
- package/dist/components/MapLayer/index.d.ts +2 -0
- package/dist/components/MapLayer/index.vue.d.ts +2287 -0
- package/dist/components/MapLegend/index.d.ts +2 -0
- package/dist/components/MapLegend/index.vue.d.ts +14 -0
- package/dist/components/MapMeasure/index.vue.d.ts +2 -0
- package/dist/components/MapPrint/MapPrintPanel.vue.d.ts +21 -0
- package/dist/components/MapPrint/MapPrintService.d.ts +155 -0
- package/dist/components/MapPrint/index.vue.d.ts +37 -0
- package/dist/components/MapQueryResult/index.vue.d.ts +29 -0
- package/dist/components/MapQueryResult/popup.vue.d.ts +16 -0
- package/dist/components/MapSearch/index.d.ts +2 -0
- package/dist/components/MapSearch/index.vue.d.ts +56 -0
- package/dist/components/MapSwitch/index.d.ts +2 -0
- package/dist/components/MapSwitch/index.vue.d.ts +37 -0
- package/dist/components/MapTools/index.d.ts +2 -0
- package/dist/components/MapTools/index.vue.d.ts +40 -0
- package/dist/components/MobileMapLayer/BaseLayerSwitch.vue.d.ts +16 -0
- package/dist/components/MobileMapLayer/index.vue.d.ts +9 -0
- package/dist/components/Widgets/PopupBar/BarItem.vue.d.ts +75 -0
- package/dist/components/Widgets/PopupBar/index.vue.d.ts +21 -0
- package/dist/composables/index.d.ts +13 -0
- package/dist/composables/useControl.d.ts +39 -0
- package/dist/composables/useDraw.d.ts +49 -0
- package/dist/composables/useLayer.d.ts +57 -0
- package/dist/composables/useMap.d.ts +111 -0
- package/dist/composables/useMarker.d.ts +55 -0
- package/dist/composables/useMeasure.d.ts +49 -0
- package/dist/composables/useSearch.d.ts +20 -0
- package/dist/config/api.config.d.ts +40 -0
- package/dist/config/gismap.config.d.ts +156 -0
- package/dist/core/ManagerRegistry.d.ts +75 -0
- package/dist/core/PluginSystem.d.ts +71 -0
- package/dist/core/StateStore.d.ts +96 -0
- package/dist/core/TypedEventEmitter.d.ts +67 -0
- package/dist/core/di/Container.d.ts +61 -0
- package/dist/core/di/decorators.d.ts +32 -0
- package/dist/core/di/index.d.ts +7 -0
- package/dist/core/di/types.d.ts +59 -0
- package/dist/core/event/EventBus.d.ts +101 -0
- package/dist/core/event/index.d.ts +5 -0
- package/dist/core/event/types.d.ts +215 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/state/Store.d.ts +145 -0
- package/dist/core/state/index.d.ts +6 -0
- package/dist/core/state/types.d.ts +134 -0
- package/dist/domain/index.d.ts +8 -0
- package/dist/domain/layer/LayerEntity.d.ts +90 -0
- package/dist/domain/layer/LayerService.d.ts +128 -0
- package/dist/domain/marker/MarkerEntity.d.ts +77 -0
- package/dist/domain/marker/MarkerService.d.ts +105 -0
- package/dist/domain/types.d.ts +66 -0
- package/dist/examples/DrawDemo.vue.d.ts +2 -0
- package/dist/examples/DrawPanel.vue.d.ts +2 -0
- package/dist/examples/Map.vue.d.ts +74 -0
- package/dist/examples/MapDemoExample.vue.d.ts +2 -0
- package/dist/examples/MeasureDemo.vue.d.ts +2 -0
- package/dist/examples/MeasurePanel.vue.d.ts +2 -0
- package/dist/examples/SplitScreenDrawDemo.vue.d.ts +7 -0
- package/dist/examples/SplitScreenDrawPanel.vue.d.ts +12 -0
- package/dist/examples/SplitScreenPanel.vue.d.ts +12 -0
- package/dist/examples/TdtControlPanel.vue.d.ts +2 -0
- package/dist/examples/TiandituDemo.vue.d.ts +2 -0
- package/dist/gismap.css +1 -1
- package/dist/index.es.js +1 -1
- package/dist/main.d.ts +0 -0
- package/dist/manager/IconManager.d.ts +18 -0
- package/dist/manager/LayerManager.d.ts +50 -0
- package/dist/manager/MaskManager.d.ts +52 -0
- package/dist/manager/PlaceholderManager.d.ts +28 -0
- package/dist/manager/PopupManager.d.ts +13 -0
- package/dist/manager/QuickSearchManager.d.ts +24 -0
- package/dist/manager/RadarManager.d.ts +46 -0
- package/dist/manager/SplitScreenDrawManager.d.ts +75 -0
- package/dist/manager/SplitScreenManager.d.ts +81 -0
- package/dist/manager/TDTManager.d.ts +33 -0
- package/dist/manager/TemplateManager.d.ts +52 -0
- package/dist/manager/TerrainManager.d.ts +39 -0
- package/dist/manager/layer/MarkerLayer.d.ts +89 -0
- package/dist/manager/layer/VectorLayer.d.ts +30 -0
- package/dist/manager/mapbox/DrawManager.d.ts +153 -0
- package/dist/manager/mapbox/MeasureManager.d.ts +158 -0
- package/dist/router/index.d.ts +2 -0
- package/dist/services/MapContext.d.ts +171 -0
- package/dist/services/index.d.ts +5 -0
- package/dist/types/IEvents.d.ts +178 -0
- package/dist/types/IGISMap.d.ts +234 -0
- package/dist/types/IManager.d.ts +113 -0
- package/dist/types/IMapSearch.d.ts +28 -0
- package/dist/types/IState.d.ts +259 -0
- package/dist/types/ITemplate.d.ts +35 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/utils/hooks/layout.d.ts +4 -0
- package/dist/utils/http/axios.d.ts +3 -0
- package/dist/utils/http/config.d.ts +3 -0
- package/dist/utils/http/request.d.ts +46 -0
- package/dist/utils/index.d.ts +49 -0
- package/package.json +1 -1
- package/dist/index.umd.js +0 -1
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { MapState, IStateStore, StateSubscriber, ITimeTravelStore } from '../types/IState';
|
|
2
|
+
/**
|
|
3
|
+
* 状态存储实现
|
|
4
|
+
*/
|
|
5
|
+
export declare class StateStore implements IStateStore {
|
|
6
|
+
private state;
|
|
7
|
+
private subscribers;
|
|
8
|
+
private mutationId;
|
|
9
|
+
constructor(initialState?: Partial<MapState>);
|
|
10
|
+
/**
|
|
11
|
+
* 获取当前状态
|
|
12
|
+
*/
|
|
13
|
+
getState(): MapState;
|
|
14
|
+
/**
|
|
15
|
+
* 获取特定状态
|
|
16
|
+
*/
|
|
17
|
+
get<K extends keyof MapState>(key: K): MapState[K];
|
|
18
|
+
/**
|
|
19
|
+
* 更新状态
|
|
20
|
+
*/
|
|
21
|
+
setState(partial: Partial<MapState>): void;
|
|
22
|
+
/**
|
|
23
|
+
* 设置特定状态
|
|
24
|
+
*/
|
|
25
|
+
set<K extends keyof MapState>(key: K, value: MapState[K]): void;
|
|
26
|
+
/**
|
|
27
|
+
* 订阅状态变更
|
|
28
|
+
*/
|
|
29
|
+
subscribe(listener: StateSubscriber): () => void;
|
|
30
|
+
/**
|
|
31
|
+
* 重置状态
|
|
32
|
+
*/
|
|
33
|
+
reset(): void;
|
|
34
|
+
/**
|
|
35
|
+
* 持久化状态
|
|
36
|
+
*/
|
|
37
|
+
persist(): void;
|
|
38
|
+
/**
|
|
39
|
+
* 恢复状态
|
|
40
|
+
*/
|
|
41
|
+
restore(): void;
|
|
42
|
+
/**
|
|
43
|
+
* 通知订阅者
|
|
44
|
+
*/
|
|
45
|
+
private notifySubscribers;
|
|
46
|
+
/**
|
|
47
|
+
* 获取 mutation ID
|
|
48
|
+
*/
|
|
49
|
+
getMutationId(): number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* 支持时间旅行的状态存储
|
|
53
|
+
*/
|
|
54
|
+
export declare class TimeTravelStateStore extends StateStore implements ITimeTravelStore {
|
|
55
|
+
private past;
|
|
56
|
+
private future;
|
|
57
|
+
private maxHistorySize;
|
|
58
|
+
private isRestoring;
|
|
59
|
+
constructor(initialState?: Partial<MapState>);
|
|
60
|
+
/**
|
|
61
|
+
* 撤销
|
|
62
|
+
*/
|
|
63
|
+
undo(): void;
|
|
64
|
+
/**
|
|
65
|
+
* 重做
|
|
66
|
+
*/
|
|
67
|
+
redo(): void;
|
|
68
|
+
/**
|
|
69
|
+
* 是否可撤销
|
|
70
|
+
*/
|
|
71
|
+
canUndo(): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* 是否可重做
|
|
74
|
+
*/
|
|
75
|
+
canRedo(): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* 清空历史
|
|
78
|
+
*/
|
|
79
|
+
clearHistory(): void;
|
|
80
|
+
/**
|
|
81
|
+
* 设置历史记录最大大小
|
|
82
|
+
*/
|
|
83
|
+
setMaxHistorySize(size: number): void;
|
|
84
|
+
/**
|
|
85
|
+
* 覆盖父类方法以支持时间旅行
|
|
86
|
+
*/
|
|
87
|
+
setState(partial: Partial<MapState>): void;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* 创建状态存储
|
|
91
|
+
*/
|
|
92
|
+
export declare function createStateStore(initialState?: Partial<MapState>): IStateStore;
|
|
93
|
+
/**
|
|
94
|
+
* 创建支持时间旅行的状态存储
|
|
95
|
+
*/
|
|
96
|
+
export declare function createTimeTravelStore(initialState?: Partial<MapState>): ITimeTravelStore;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { GISMapEventName, GISMapEventData, EventCallback, EventHistoryItem } from '../types/IEvents';
|
|
2
|
+
export declare class TypedEventEmitter {
|
|
3
|
+
private events;
|
|
4
|
+
private onceEvents;
|
|
5
|
+
private history;
|
|
6
|
+
private maxHistorySize;
|
|
7
|
+
private namespaceListeners;
|
|
8
|
+
/**
|
|
9
|
+
* 订阅事件
|
|
10
|
+
*/
|
|
11
|
+
on<K extends GISMapEventName>(event: K, callback: EventCallback<GISMapEventData[K]>): () => void;
|
|
12
|
+
/**
|
|
13
|
+
* 订阅事件(仅触发一次)
|
|
14
|
+
*/
|
|
15
|
+
once<K extends GISMapEventName>(event: K, callback: EventCallback<GISMapEventData[K]>): () => void;
|
|
16
|
+
/**
|
|
17
|
+
* 取消订阅
|
|
18
|
+
*/
|
|
19
|
+
off(event: GISMapEventName, callback?: EventCallback): void;
|
|
20
|
+
/**
|
|
21
|
+
* 发射事件
|
|
22
|
+
*/
|
|
23
|
+
emit<K extends GISMapEventName>(event: K, data?: GISMapEventData[K]): void;
|
|
24
|
+
/**
|
|
25
|
+
* 订阅命名空间下的所有事件
|
|
26
|
+
*/
|
|
27
|
+
onNamespace(namespace: string, callback: (payload: {
|
|
28
|
+
event: string;
|
|
29
|
+
data: any;
|
|
30
|
+
}) => void): () => void;
|
|
31
|
+
/**
|
|
32
|
+
* 获取事件历史
|
|
33
|
+
*/
|
|
34
|
+
getHistory(): EventHistoryItem[];
|
|
35
|
+
/**
|
|
36
|
+
* 清空事件历史
|
|
37
|
+
*/
|
|
38
|
+
clearHistory(): void;
|
|
39
|
+
/**
|
|
40
|
+
* 获取订阅者数量
|
|
41
|
+
*/
|
|
42
|
+
listenerCount(event: GISMapEventName): number;
|
|
43
|
+
/**
|
|
44
|
+
* 检查是否有订阅者
|
|
45
|
+
*/
|
|
46
|
+
hasListeners(event?: GISMapEventName): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* 获取所有事件名称
|
|
49
|
+
*/
|
|
50
|
+
eventNames(): GISMapEventName[];
|
|
51
|
+
/**
|
|
52
|
+
* 清空所有事件
|
|
53
|
+
*/
|
|
54
|
+
clear(): void;
|
|
55
|
+
/**
|
|
56
|
+
* 添加到历史记录
|
|
57
|
+
*/
|
|
58
|
+
private addToHistory;
|
|
59
|
+
/**
|
|
60
|
+
* 设置历史记录最大大小
|
|
61
|
+
*/
|
|
62
|
+
setMaxHistorySize(size: number): void;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 创建事件发射器实例
|
|
66
|
+
*/
|
|
67
|
+
export declare function createEventEmitter(): TypedEventEmitter;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Token, Provider, IContainer, InjectableConstructor } from './types';
|
|
2
|
+
/** 依赖注入容器 */
|
|
3
|
+
export declare class Container implements IContainer {
|
|
4
|
+
private services;
|
|
5
|
+
private singletons;
|
|
6
|
+
private parent;
|
|
7
|
+
private disposed;
|
|
8
|
+
constructor(parent?: Container);
|
|
9
|
+
/**
|
|
10
|
+
* 注册服务
|
|
11
|
+
*/
|
|
12
|
+
register<T>(token: Token<T>, provider: Provider<T>): this;
|
|
13
|
+
/**
|
|
14
|
+
* 注册类
|
|
15
|
+
*/
|
|
16
|
+
registerClass<T>(token: Token<T>, useClass: InjectableConstructor<T>, singleton?: boolean): this;
|
|
17
|
+
/**
|
|
18
|
+
* 注册工厂
|
|
19
|
+
*/
|
|
20
|
+
registerFactory<T>(token: Token<T>, useFactory: (container: IContainer) => T, singleton?: boolean): this;
|
|
21
|
+
/**
|
|
22
|
+
* 注册值
|
|
23
|
+
*/
|
|
24
|
+
registerValue<T>(token: Token<T>, useValue: T): this;
|
|
25
|
+
/**
|
|
26
|
+
* 解析服务
|
|
27
|
+
*/
|
|
28
|
+
resolve<T>(token: Token<T>): T;
|
|
29
|
+
/**
|
|
30
|
+
* 检查服务是否存在
|
|
31
|
+
*/
|
|
32
|
+
has<T>(token: Token<T>): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* 创建子作用域
|
|
35
|
+
*/
|
|
36
|
+
createScope(): IContainer;
|
|
37
|
+
/**
|
|
38
|
+
* 清理容器
|
|
39
|
+
*/
|
|
40
|
+
dispose(): void;
|
|
41
|
+
/**
|
|
42
|
+
* 创建实例
|
|
43
|
+
*/
|
|
44
|
+
private createInstance;
|
|
45
|
+
/**
|
|
46
|
+
* 创建类实例(支持依赖注入)
|
|
47
|
+
*/
|
|
48
|
+
private createClassInstance;
|
|
49
|
+
/**
|
|
50
|
+
* 检查是否为单例
|
|
51
|
+
*/
|
|
52
|
+
private isSingleton;
|
|
53
|
+
/**
|
|
54
|
+
* 确保容器未销毁
|
|
55
|
+
*/
|
|
56
|
+
private ensureNotDisposed;
|
|
57
|
+
}
|
|
58
|
+
/** 全局容器实例 */
|
|
59
|
+
export declare const rootContainer: Container;
|
|
60
|
+
/** 创建新容器 */
|
|
61
|
+
export declare function createContainer(): IContainer;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Token, InjectableConstructor } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* @Injectable 装饰器
|
|
4
|
+
* 标记类可被依赖注入
|
|
5
|
+
*/
|
|
6
|
+
export declare function Injectable<T extends InjectableConstructor>(singleton?: boolean): (target: T) => T;
|
|
7
|
+
/**
|
|
8
|
+
* @Inject 装饰器
|
|
9
|
+
* 标记构造函数参数需要注入
|
|
10
|
+
*/
|
|
11
|
+
export declare function Inject<T>(token: Token<T>): (target: any, _propertyKey: string | symbol | undefined, parameterIndex: number) => void;
|
|
12
|
+
/**
|
|
13
|
+
* @Optional 装饰器
|
|
14
|
+
* 标记依赖为可选
|
|
15
|
+
*/
|
|
16
|
+
export declare function Optional(): (target: any, _propertyKey: string | symbol | undefined, parameterIndex: number) => void;
|
|
17
|
+
/**
|
|
18
|
+
* 注册服务(简化语法)
|
|
19
|
+
*/
|
|
20
|
+
export declare function registerService<T>(token: Token<T>, constructor: InjectableConstructor<T>, singleton?: boolean): void;
|
|
21
|
+
/**
|
|
22
|
+
* 注册值
|
|
23
|
+
*/
|
|
24
|
+
export declare function registerValue<T>(token: Token<T>, value: T): void;
|
|
25
|
+
/**
|
|
26
|
+
* 注册工厂
|
|
27
|
+
*/
|
|
28
|
+
export declare function registerFactory<T>(token: Token<T>, factory: (container: any) => T, singleton?: boolean): void;
|
|
29
|
+
/**
|
|
30
|
+
* 解析服务
|
|
31
|
+
*/
|
|
32
|
+
export declare function resolveService<T>(token: Token<T>): T;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 依赖注入模块统一导出
|
|
3
|
+
*/
|
|
4
|
+
export { Container, rootContainer, createContainer } from './Container';
|
|
5
|
+
export { Injectable, Inject, Optional, registerService, registerValue, registerFactory, resolveService, } from './decorators';
|
|
6
|
+
export { createToken } from './types';
|
|
7
|
+
export type { Token, Provider, ClassProvider, FactoryProvider, ValueProvider, IContainer, InjectableConstructor, DependencyMetadata, IDisposable, IInitializable, } from './types';
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 依赖注入类型定义
|
|
3
|
+
* 提供类型安全的 DI 容器支持
|
|
4
|
+
*/
|
|
5
|
+
/** 服务标识符 */
|
|
6
|
+
export interface Token<T> {
|
|
7
|
+
readonly symbol: symbol;
|
|
8
|
+
readonly name: string;
|
|
9
|
+
}
|
|
10
|
+
/** 创建服务标识符 */
|
|
11
|
+
export declare function createToken<T>(name: string): Token<T>;
|
|
12
|
+
/** 提供者类型 */
|
|
13
|
+
export type Provider<T> = ClassProvider<T> | FactoryProvider<T> | ValueProvider<T>;
|
|
14
|
+
/** 类提供者 */
|
|
15
|
+
export interface ClassProvider<T> {
|
|
16
|
+
type: 'class';
|
|
17
|
+
useClass: new (...args: any[]) => T;
|
|
18
|
+
singleton?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/** 工厂提供者 */
|
|
21
|
+
export interface FactoryProvider<T> {
|
|
22
|
+
type: 'factory';
|
|
23
|
+
useFactory: (container: IContainer) => T;
|
|
24
|
+
singleton?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/** 值提供者 */
|
|
27
|
+
export interface ValueProvider<T> {
|
|
28
|
+
type: 'value';
|
|
29
|
+
useValue: T;
|
|
30
|
+
}
|
|
31
|
+
/** 容器接口 */
|
|
32
|
+
export interface IContainer {
|
|
33
|
+
/** 注册服务 */
|
|
34
|
+
register<T>(token: Token<T>, provider: Provider<T>): this;
|
|
35
|
+
/** 解析服务 */
|
|
36
|
+
resolve<T>(token: Token<T>): T;
|
|
37
|
+
/** 检查是否存在 */
|
|
38
|
+
has<T>(token: Token<T>): boolean;
|
|
39
|
+
/** 创建子作用域 */
|
|
40
|
+
createScope(): IContainer;
|
|
41
|
+
/** 清理 */
|
|
42
|
+
dispose(): void;
|
|
43
|
+
}
|
|
44
|
+
/** 可注入的构造函数 */
|
|
45
|
+
export type InjectableConstructor<T = any> = new (...args: any[]) => T;
|
|
46
|
+
/** 依赖元数据 */
|
|
47
|
+
export interface DependencyMetadata {
|
|
48
|
+
index: number;
|
|
49
|
+
token: Token<any>;
|
|
50
|
+
optional?: boolean;
|
|
51
|
+
}
|
|
52
|
+
/** 可销毁接口 */
|
|
53
|
+
export interface IDisposable {
|
|
54
|
+
dispose(): void;
|
|
55
|
+
}
|
|
56
|
+
/** 可初始化接口 */
|
|
57
|
+
export interface IInitializable {
|
|
58
|
+
initialize(): void;
|
|
59
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { EventHandler, Unsubscribe, EventMap, EventHistoryItem, INamespacedEventBus } from './types';
|
|
2
|
+
/** 事件总线配置 */
|
|
3
|
+
export interface EventBusOptions {
|
|
4
|
+
/** 历史记录最大长度 */
|
|
5
|
+
maxHistorySize?: number;
|
|
6
|
+
/** 启用命名空间监听 */
|
|
7
|
+
enableNamespace?: boolean;
|
|
8
|
+
/** 日志级别 */
|
|
9
|
+
logLevel?: 'debug' | 'info' | 'warn' | 'error' | 'none';
|
|
10
|
+
}
|
|
11
|
+
/** 统一事件总线实现 */
|
|
12
|
+
export declare class EventBus<T extends EventMap = EventMap> implements INamespacedEventBus<T> {
|
|
13
|
+
private subscriptions;
|
|
14
|
+
private namespaceSubscriptions;
|
|
15
|
+
private history;
|
|
16
|
+
private options;
|
|
17
|
+
private disposed;
|
|
18
|
+
constructor(options?: EventBusOptions);
|
|
19
|
+
/**
|
|
20
|
+
* 订阅事件
|
|
21
|
+
*/
|
|
22
|
+
on<K extends keyof T>(event: K, handler: EventHandler<T[K]>): Unsubscribe;
|
|
23
|
+
/**
|
|
24
|
+
* 订阅一次性事件
|
|
25
|
+
*/
|
|
26
|
+
once<K extends keyof T>(event: K, handler: EventHandler<T[K]>): Unsubscribe;
|
|
27
|
+
/**
|
|
28
|
+
* 发射事件
|
|
29
|
+
*/
|
|
30
|
+
emit<K extends keyof T>(event: K, payload: T[K]): void;
|
|
31
|
+
/**
|
|
32
|
+
* 取消订阅
|
|
33
|
+
*/
|
|
34
|
+
off<K extends keyof T>(event?: K, handler?: EventHandler<T[K]>): void;
|
|
35
|
+
/**
|
|
36
|
+
* 订阅命名空间
|
|
37
|
+
*/
|
|
38
|
+
onNamespace(namespace: string, handler: (event: string, payload: any) => void): Unsubscribe;
|
|
39
|
+
/**
|
|
40
|
+
* 获取订阅数量
|
|
41
|
+
*/
|
|
42
|
+
listenerCount<K extends keyof T>(event: K): number;
|
|
43
|
+
/**
|
|
44
|
+
* 是否有订阅者
|
|
45
|
+
*/
|
|
46
|
+
hasListeners<K extends keyof T>(event?: K): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* 获取历史记录
|
|
49
|
+
*/
|
|
50
|
+
getHistory(): EventHistoryItem[];
|
|
51
|
+
/**
|
|
52
|
+
* 清空历史
|
|
53
|
+
*/
|
|
54
|
+
clearHistory(): void;
|
|
55
|
+
/**
|
|
56
|
+
* 销毁
|
|
57
|
+
*/
|
|
58
|
+
dispose(): void;
|
|
59
|
+
/**
|
|
60
|
+
* 生成唯一ID
|
|
61
|
+
*/
|
|
62
|
+
private generateId;
|
|
63
|
+
/**
|
|
64
|
+
* 移除订阅
|
|
65
|
+
*/
|
|
66
|
+
private removeSubscription;
|
|
67
|
+
/**
|
|
68
|
+
* 触发命名空间监听
|
|
69
|
+
*/
|
|
70
|
+
private triggerNamespaceListeners;
|
|
71
|
+
/**
|
|
72
|
+
* 添加到历史
|
|
73
|
+
*/
|
|
74
|
+
private addToHistory;
|
|
75
|
+
/**
|
|
76
|
+
* 日志
|
|
77
|
+
*/
|
|
78
|
+
private log;
|
|
79
|
+
/**
|
|
80
|
+
* 确保未销毁
|
|
81
|
+
*/
|
|
82
|
+
private ensureNotDisposed;
|
|
83
|
+
}
|
|
84
|
+
/** 创建事件总线 */
|
|
85
|
+
export declare function createEventBus<T extends EventMap = EventMap>(options?: EventBusOptions): EventBus<T>;
|
|
86
|
+
/**
|
|
87
|
+
* ⚠️ 多地图架构说明
|
|
88
|
+
*
|
|
89
|
+
* 本项目支持同一页面挂载多个地图实例(多 MapContainer)。
|
|
90
|
+
* 每个 MapContainer 在 onMounted 时创建自己的独立 EventBus 实例,
|
|
91
|
+
* 通过 Vue provide/inject 下发给子组件树,确保事件完全隔离。
|
|
92
|
+
*
|
|
93
|
+
* 正确用法:
|
|
94
|
+
* const { events } = useMap(); // ✅ 当前地图的独立事件总线
|
|
95
|
+
* context.events.emit('view:change', …) // ✅ 当前地图的独立事件总线
|
|
96
|
+
*
|
|
97
|
+
* 禁止:
|
|
98
|
+
* import { globalEventBus } from '…' // ❌ 会造成多地图事件串扰
|
|
99
|
+
*
|
|
100
|
+
* globalEventBus 已从公开导出中移除,如需跨地图通信请在业务层自行管理。
|
|
101
|
+
*/
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 事件系统模块统一导出
|
|
3
|
+
*/
|
|
4
|
+
export { EventBus, createEventBus } from './EventBus';
|
|
5
|
+
export type { EventHandler, Unsubscribe, EventMap, EventSubscription, EventHistoryItem, IEventBus, INamespacedEventBus, CoreMapEvents, ViewChangePayload, LayerAddPayload, LayerClickPayload, LayerHoverPayload, SwitchLayerPayload, SwitchClickPayload, TemplateGetPayload, } from './types';
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 事件系统类型定义
|
|
3
|
+
* 统一、类型安全的事件系统
|
|
4
|
+
*/
|
|
5
|
+
/** 事件处理器 */
|
|
6
|
+
export type EventHandler<T = any> = (payload: T) => void;
|
|
7
|
+
/** 取消订阅函数 */
|
|
8
|
+
export type Unsubscribe = () => void;
|
|
9
|
+
/** 事件映射 */
|
|
10
|
+
export interface EventMap {
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
}
|
|
13
|
+
/** 事件订阅 */
|
|
14
|
+
export interface EventSubscription<T = any> {
|
|
15
|
+
id: string;
|
|
16
|
+
handler: EventHandler<T>;
|
|
17
|
+
once: boolean;
|
|
18
|
+
}
|
|
19
|
+
/** 事件历史记录 */
|
|
20
|
+
export interface EventHistoryItem<T = any> {
|
|
21
|
+
event: string;
|
|
22
|
+
payload: T;
|
|
23
|
+
timestamp: number;
|
|
24
|
+
}
|
|
25
|
+
/** 事件总线接口 */
|
|
26
|
+
export interface IEventBus<T extends EventMap = EventMap> {
|
|
27
|
+
/**
|
|
28
|
+
* 订阅事件
|
|
29
|
+
*/
|
|
30
|
+
on<K extends keyof T>(event: K, handler: EventHandler<T[K]>): Unsubscribe;
|
|
31
|
+
/**
|
|
32
|
+
* 订阅一次性事件
|
|
33
|
+
*/
|
|
34
|
+
once<K extends keyof T>(event: K, handler: EventHandler<T[K]>): Unsubscribe;
|
|
35
|
+
/**
|
|
36
|
+
* 发射事件
|
|
37
|
+
*/
|
|
38
|
+
emit<K extends keyof T>(event: K, payload: T[K]): void;
|
|
39
|
+
/**
|
|
40
|
+
* 取消所有订阅
|
|
41
|
+
*/
|
|
42
|
+
off<K extends keyof T>(event?: K, handler?: EventHandler<T[K]>): void;
|
|
43
|
+
/**
|
|
44
|
+
* 获取订阅数量
|
|
45
|
+
*/
|
|
46
|
+
listenerCount<K extends keyof T>(event: K): number;
|
|
47
|
+
/**
|
|
48
|
+
* 是否有订阅者
|
|
49
|
+
*/
|
|
50
|
+
hasListeners<K extends keyof T>(event?: K): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* 清空历史
|
|
53
|
+
*/
|
|
54
|
+
clearHistory(): void;
|
|
55
|
+
/**
|
|
56
|
+
* 获取历史
|
|
57
|
+
*/
|
|
58
|
+
getHistory(): EventHistoryItem[];
|
|
59
|
+
/**
|
|
60
|
+
* 销毁
|
|
61
|
+
*/
|
|
62
|
+
dispose(): void;
|
|
63
|
+
}
|
|
64
|
+
/** 命名空间事件总线 */
|
|
65
|
+
export interface INamespacedEventBus<T extends EventMap = EventMap> extends IEventBus<T> {
|
|
66
|
+
/**
|
|
67
|
+
* 订阅命名空间下的所有事件
|
|
68
|
+
*/
|
|
69
|
+
onNamespace(namespace: string, handler: (event: string, payload: any) => void): Unsubscribe;
|
|
70
|
+
}
|
|
71
|
+
/** 地图核心事件 */
|
|
72
|
+
export interface CoreMapEvents extends EventMap {
|
|
73
|
+
'map:load': {
|
|
74
|
+
map: any;
|
|
75
|
+
};
|
|
76
|
+
'map:ready': {
|
|
77
|
+
map: any;
|
|
78
|
+
};
|
|
79
|
+
'map:error': {
|
|
80
|
+
error: Error;
|
|
81
|
+
source?: string;
|
|
82
|
+
};
|
|
83
|
+
'map:destroy': void;
|
|
84
|
+
'view:change': ViewChangePayload;
|
|
85
|
+
'view:move': ViewChangePayload;
|
|
86
|
+
'view:zoom': {
|
|
87
|
+
zoom: number;
|
|
88
|
+
center: [number, number];
|
|
89
|
+
};
|
|
90
|
+
'view:rotate': {
|
|
91
|
+
bearing: number;
|
|
92
|
+
};
|
|
93
|
+
'view:pitch': {
|
|
94
|
+
pitch: number;
|
|
95
|
+
};
|
|
96
|
+
'layer:add': LayerAddPayload;
|
|
97
|
+
'layer:remove': {
|
|
98
|
+
layerId: string;
|
|
99
|
+
};
|
|
100
|
+
'layer:show': {
|
|
101
|
+
layerId: string;
|
|
102
|
+
};
|
|
103
|
+
'layer:hide': {
|
|
104
|
+
layerId: string;
|
|
105
|
+
};
|
|
106
|
+
'layer:click': LayerClickPayload;
|
|
107
|
+
'layer:hover': LayerHoverPayload;
|
|
108
|
+
'layer:queryClick': LayerQueryClickPayload;
|
|
109
|
+
'marker:add': {
|
|
110
|
+
markerId: string;
|
|
111
|
+
position: [number, number];
|
|
112
|
+
};
|
|
113
|
+
'marker:remove': {
|
|
114
|
+
markerId: string;
|
|
115
|
+
};
|
|
116
|
+
'marker:click': {
|
|
117
|
+
markerId: string;
|
|
118
|
+
position: [number, number];
|
|
119
|
+
};
|
|
120
|
+
'popup:open': {
|
|
121
|
+
popupId: string;
|
|
122
|
+
position: [number, number];
|
|
123
|
+
};
|
|
124
|
+
'popup:close': {
|
|
125
|
+
popupId: string;
|
|
126
|
+
};
|
|
127
|
+
'select:start': void;
|
|
128
|
+
'select:end': {
|
|
129
|
+
features: any[];
|
|
130
|
+
};
|
|
131
|
+
'draw:start': {
|
|
132
|
+
mode: string;
|
|
133
|
+
};
|
|
134
|
+
'draw:end': {
|
|
135
|
+
feature: any;
|
|
136
|
+
mode: string;
|
|
137
|
+
};
|
|
138
|
+
/** 底图图层切换(非内置 tdt-img/tdt-vec 时触发,name 为自定义图层名) */
|
|
139
|
+
'switch:layer': SwitchLayerPayload;
|
|
140
|
+
/** 任意底图切换后通知(所有底图点击均触发) */
|
|
141
|
+
'switch:widgets': SwitchLayerPayload;
|
|
142
|
+
/** 叠加图层(extension)点击事件 */
|
|
143
|
+
'switch:click': SwitchClickPayload;
|
|
144
|
+
/** 指定叠加图层点击事件,key 形如 "switch:click:terrain" */
|
|
145
|
+
'switch:click:terrain': SwitchClickPayload;
|
|
146
|
+
'switch:click:custom': SwitchClickPayload;
|
|
147
|
+
'template:get': TemplateGetPayload;
|
|
148
|
+
}
|
|
149
|
+
/** 视图变化载荷 */
|
|
150
|
+
export interface ViewChangePayload {
|
|
151
|
+
center: [number, number];
|
|
152
|
+
zoom: number;
|
|
153
|
+
pitch: number;
|
|
154
|
+
bearing: number;
|
|
155
|
+
animate: boolean;
|
|
156
|
+
}
|
|
157
|
+
/** 图层添加载荷 */
|
|
158
|
+
export interface LayerAddPayload {
|
|
159
|
+
layerId: string;
|
|
160
|
+
type: string;
|
|
161
|
+
source?: any;
|
|
162
|
+
config?: any;
|
|
163
|
+
}
|
|
164
|
+
/** 图层点击载荷 */
|
|
165
|
+
export interface LayerClickPayload {
|
|
166
|
+
layerId: string;
|
|
167
|
+
feature: any;
|
|
168
|
+
coordinates: [number, number];
|
|
169
|
+
point: [number, number];
|
|
170
|
+
originalEvent: MouseEvent;
|
|
171
|
+
}
|
|
172
|
+
/** 图层查询点击载荷 */
|
|
173
|
+
export interface LayerQueryClickPayload {
|
|
174
|
+
layerId: string;
|
|
175
|
+
templateId?: string;
|
|
176
|
+
center?: [number, number];
|
|
177
|
+
feature?: any;
|
|
178
|
+
features?: any[];
|
|
179
|
+
dataExtension?: any;
|
|
180
|
+
isShowTooltip?: boolean;
|
|
181
|
+
isCommonPopup?: boolean;
|
|
182
|
+
}
|
|
183
|
+
/** 图层悬停载荷 */
|
|
184
|
+
export interface LayerHoverPayload {
|
|
185
|
+
layerId: string;
|
|
186
|
+
feature: any | null;
|
|
187
|
+
coordinates: [number, number] | null;
|
|
188
|
+
}
|
|
189
|
+
/** 底图图层切换载荷(MapSwitch / MobileBaseLayerSwitch 触发) */
|
|
190
|
+
export interface SwitchLayerPayload {
|
|
191
|
+
/** 图层名称标识 */
|
|
192
|
+
name: string;
|
|
193
|
+
/** 图层标签 */
|
|
194
|
+
label?: string;
|
|
195
|
+
/** 是否选中 */
|
|
196
|
+
checked?: boolean;
|
|
197
|
+
/** 自定义 source 配置(可选) */
|
|
198
|
+
source?: any;
|
|
199
|
+
/** 其他扩展字段 */
|
|
200
|
+
[key: string]: any;
|
|
201
|
+
}
|
|
202
|
+
/** 叠加图层切换载荷 */
|
|
203
|
+
export interface SwitchClickPayload {
|
|
204
|
+
/** 是否选中 */
|
|
205
|
+
checked: boolean;
|
|
206
|
+
/** 原始数据 */
|
|
207
|
+
data: SwitchLayerPayload;
|
|
208
|
+
}
|
|
209
|
+
/** 模板查询载荷(MapSearch 触发,业务层监听后调用 callback 回填配置) */
|
|
210
|
+
export interface TemplateGetPayload {
|
|
211
|
+
/** 模板 ID */
|
|
212
|
+
templateId: string;
|
|
213
|
+
/** 回调:业务层取到配置后调用此函数将配置传回 */
|
|
214
|
+
callback: (config: any) => void;
|
|
215
|
+
}
|