@xingm/vmap-cesium-toolbar 0.0.6 → 1.0.0
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/README.md +126 -230
- package/dist/README.md +172 -0
- package/dist/adapters/DrawHelperAdapter.d.ts +143 -0
- package/dist/adapters/MapLoaderAdapter.d.ts +44 -0
- package/dist/adapters/OverlayServiceAdapter.d.ts +102 -0
- package/dist/adapters/ToolbarAdapter.d.ts +71 -0
- package/dist/adapters/index.d.ts +23 -0
- package/dist/components/BaseComponent.d.ts +116 -0
- package/dist/components/SearchBox.d.ts +136 -0
- package/dist/components/Toolbar.d.ts +115 -0
- package/dist/components/ToolbarButton.d.ts +100 -0
- package/dist/components/index.d.ts +33 -0
- package/dist/core/MapPlugin.d.ts +160 -0
- package/dist/core/constants.d.ts +88 -0
- package/dist/core/entities/BaseOverlay.d.ts +156 -0
- package/dist/core/entities/Circle.d.ts +102 -0
- package/dist/core/entities/Icon.d.ts +86 -0
- package/dist/core/entities/InfoWindow.d.ts +116 -0
- package/dist/core/entities/Label.d.ts +92 -0
- package/dist/core/entities/Marker.d.ts +66 -0
- package/dist/core/entities/Polygon.d.ts +93 -0
- package/dist/core/entities/Polyline.d.ts +72 -0
- package/dist/core/entities/Rectangle.d.ts +99 -0
- package/dist/core/entities/Ring.d.ts +114 -0
- package/dist/core/entities/SVG.d.ts +89 -0
- package/dist/core/entities/index.d.ts +27 -0
- package/dist/core/index.d.ts +25 -0
- package/dist/core/layers/BaiduMapLayer.d.ts +37 -0
- package/dist/core/layers/CustomMapLayer.d.ts +43 -0
- package/dist/core/layers/GaodeMapLayer.d.ts +41 -0
- package/dist/core/layers/HeatmapLayer.d.ts +118 -0
- package/dist/core/layers/MapLayer.d.ts +37 -0
- package/dist/core/layers/OSMMapLayer.d.ts +37 -0
- package/dist/core/layers/PointClusterLayer.d.ts +119 -0
- package/dist/core/layers/TDTMapLayer.d.ts +45 -0
- package/dist/core/layers/index.d.ts +15 -0
- package/dist/core/services/draw/DrawInteractionController.d.ts +16 -0
- package/dist/core/services/draw/DrawService.d.ts +38 -0
- package/dist/core/services/draw/DrawSessionStore.d.ts +28 -0
- package/dist/core/services/draw/drawDefaults.d.ts +16 -0
- package/dist/core/services/draw/entities/drawEntityFactory.d.ts +10 -0
- package/dist/core/services/draw/entities/drawEntityRegistry.d.ts +8 -0
- package/dist/core/services/draw/entities/drawFinalFactory.d.ts +14 -0
- package/dist/core/services/draw/entities/drawPreviewFactory.d.ts +15 -0
- package/dist/core/services/draw/geometry/drawGeometry.d.ts +11 -0
- package/dist/core/services/draw/geometry/drawPosition.d.ts +6 -0
- package/dist/core/services/draw/index.d.ts +7 -0
- package/dist/core/services/draw/labels/drawHint.d.ts +16 -0
- package/dist/core/services/draw/labels/measurementCanvas.d.ts +8 -0
- package/dist/core/services/draw/labels/measurementLabelFactory.d.ts +18 -0
- package/dist/core/services/draw/measurementThemeResolver.d.ts +9 -0
- package/dist/core/services/draw/types/drawState.d.ts +37 -0
- package/dist/core/services/draw/types/drawTypes.d.ts +97 -0
- package/dist/core/services/index.d.ts +10 -0
- package/dist/core/services/overlay/OverlayService.d.ts +188 -0
- package/dist/core/services/overlay/index.d.ts +7 -0
- package/dist/core/services/toolbar/ToolbarService.d.ts +175 -0
- package/dist/core/services/toolbar/buttons/BaseButtonHandler.d.ts +111 -0
- package/dist/core/services/toolbar/buttons/LayersButtonHandler.d.ts +47 -0
- package/dist/core/services/toolbar/buttons/MeasureButtonHandler.d.ts +94 -0
- package/dist/core/services/toolbar/buttons/SearchButtonHandler.d.ts +111 -0
- package/dist/core/services/toolbar/buttons/SimpleButtonHandler.d.ts +79 -0
- package/dist/core/services/toolbar/config.d.ts +7 -0
- package/dist/core/services/toolbar/index.d.ts +30 -0
- package/dist/core/services/toolbar/menus/BaseMenu.d.ts +99 -0
- package/dist/core/services/toolbar/menus/MeasureMenu.d.ts +44 -0
- package/dist/core/services/toolbar/types.d.ts +198 -0
- package/dist/core/types.d.ts +586 -0
- package/dist/i18n/en-US.d.ts +46 -0
- package/dist/i18n/index.d.ts +45 -2
- package/dist/i18n/zh-CN.d.ts +46 -0
- package/dist/index.d.ts +37 -42
- package/dist/index.es.js +6874 -9666
- package/dist/index.es.js.map +1 -1
- package/dist/libs/CesiumMapModel.d.ts +1 -172
- package/dist/libs/CesiumMapToolbar.d.ts +1 -1
- package/dist/libs/CesiumOverlayService.d.ts +9 -222
- package/dist/libs/config/CesiumMapConfig.d.ts +5 -12
- package/dist/libs/drawHelper/DrawHint.d.ts +15 -27
- package/dist/libs/drawHelper/index.d.ts +67 -6
- package/dist/libs/toolBar/CesiumMapController.d.ts +38 -64
- package/dist/libs/toolBar/MapLayersService.d.ts +10 -61
- package/dist/libs/toolBar/MapSearchService.d.ts +8 -29
- package/dist/libs/toolBar/MapToolBarConfig.d.ts +33 -5
- package/dist/libs/toolBar/MeasurementService.d.ts +13 -5
- package/dist/libs/toolBar/NotFlyZonesService.d.ts +6 -41
- package/dist/package.json +19 -6
- package/dist/styles/ComponentStyles.d.ts +82 -0
- package/dist/styles/StyleManager.d.ts +142 -0
- package/dist/styles/index.d.ts +128 -0
- package/dist/utils/common.d.ts +4 -0
- package/package.json +1 -1
- package/dist/hooks/toolBarConfig.d.ts +0 -75
- package/dist/hooks/useDrawHelper.d.ts +0 -24
- package/dist/hooks/useDynamicRing.d.ts +0 -44
- package/dist/hooks/useHeatmapHelper.d.ts +0 -18
- package/dist/hooks/useMap.d.ts +0 -14
- package/dist/hooks/useMapInit.d.ts +0 -14
- package/dist/hooks/useOverlayHelper.d.ts +0 -48
- package/dist/hooks/usePointClusterHelper.d.ts +0 -14
- package/dist/index.umd.js +0 -326
- package/dist/index.umd.js.map +0 -1
- package/dist/libs/drawHelper/BaseDraw.d.ts +0 -194
- package/dist/libs/drawHelper/DrawCircle.d.ts +0 -31
- package/dist/libs/drawHelper/DrawLine.d.ts +0 -49
- package/dist/libs/drawHelper/DrawPolgon.d.ts +0 -35
- package/dist/libs/drawHelper/DrawRectangle.d.ts +0 -24
- package/dist/libs/i18n/en-US.d.ts +0 -69
- package/dist/libs/i18n/index.d.ts +0 -25
- package/dist/libs/i18n/zh-CN.d.ts +0 -69
- package/dist/libs/overlay/MapCircle.d.ts +0 -130
- package/dist/libs/overlay/MapIcon.d.ts +0 -69
- package/dist/libs/overlay/MapInfoWindow.d.ts +0 -100
- package/dist/libs/overlay/MapLabel.d.ts +0 -73
- package/dist/libs/overlay/MapMarker.d.ts +0 -60
- package/dist/libs/overlay/MapPolygon.d.ts +0 -114
- package/dist/libs/overlay/MapPolyline.d.ts +0 -64
- package/dist/libs/overlay/MapRectangle.d.ts +0 -101
- package/dist/libs/overlay/MapRing.d.ts +0 -107
- package/dist/libs/overlay/MapSVG.d.ts +0 -73
- package/dist/libs/overlay/OverlayEditController.d.ts +0 -167
- package/dist/libs/overlay/OverlayEditHandles.d.ts +0 -101
- package/dist/libs/overlay/OverlayHighlight.d.ts +0 -40
- package/dist/libs/overlay/index.d.ts +0 -23
- package/dist/libs/overlay/primitives/CirclePrimitiveBatch.d.ts +0 -42
- package/dist/libs/overlay/primitives/CirclePrimitiveLayerStack.d.ts +0 -24
- package/dist/libs/overlay/primitives/PolygonPrimitiveBatch.d.ts +0 -43
- package/dist/libs/overlay/primitives/PolygonPrimitiveLayerStack.d.ts +0 -24
- package/dist/libs/overlay/primitives/RectanglePrimitiveBatch.d.ts +0 -41
- package/dist/libs/overlay/primitives/RectanglePrimitiveLayerStack.d.ts +0 -24
- package/dist/libs/overlay/types.d.ts +0 -121
- package/dist/z.const.d.ts +0 -24
- /package/dist/{libs → utils}/PickGovernor.d.ts +0 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { BaseButtonHandler } from './BaseButtonHandler';
|
|
2
|
+
import { ToolbarButton } from '../../../../components/ToolbarButton';
|
|
3
|
+
interface SearchContainerStyleConfig {
|
|
4
|
+
containerStyle?: Partial<CSSStyleDeclaration>;
|
|
5
|
+
inputStyle?: Partial<CSSStyleDeclaration>;
|
|
6
|
+
actionButtonStyle?: Partial<CSSStyleDeclaration>;
|
|
7
|
+
actionIconStyle?: Partial<CSSStyleDeclaration>;
|
|
8
|
+
resultStyle?: Partial<CSSStyleDeclaration>;
|
|
9
|
+
resultItemStyle?: Partial<CSSStyleDeclaration>;
|
|
10
|
+
resultItemHoverStyle?: Partial<CSSStyleDeclaration>;
|
|
11
|
+
resultItemActiveStyle?: Partial<CSSStyleDeclaration>;
|
|
12
|
+
buttonStyle?: Partial<CSSStyleDeclaration>;
|
|
13
|
+
resultItemIconStyle?: Partial<CSSStyleDeclaration>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* 搜索按钮处理器配置
|
|
17
|
+
*/
|
|
18
|
+
export interface SearchButtonHandlerOptions {
|
|
19
|
+
/** 搜索服务实例 */
|
|
20
|
+
searchService?: any;
|
|
21
|
+
/** 搜索框样式 */
|
|
22
|
+
searchContainerStyle?: SearchContainerStyleConfig;
|
|
23
|
+
/** 默认动作图标 */
|
|
24
|
+
idleActionIcon?: string | HTMLElement;
|
|
25
|
+
/** 清空动作图标 */
|
|
26
|
+
clearActionIcon?: string | HTMLElement;
|
|
27
|
+
/** 搜索回调 */
|
|
28
|
+
onSearch?: (query: string) => Promise<any[]>;
|
|
29
|
+
/** 搜索选择回调 */
|
|
30
|
+
onSelect?: (result: any) => void;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 搜索按钮处理器类
|
|
34
|
+
*/
|
|
35
|
+
export declare class SearchButtonHandler extends BaseButtonHandler {
|
|
36
|
+
readonly id = "search";
|
|
37
|
+
private static readonly SCROLLBAR_STYLE_ID;
|
|
38
|
+
private static readonly INPUT_SEARCH_DEBOUNCE_MS;
|
|
39
|
+
private options;
|
|
40
|
+
private styleConfig;
|
|
41
|
+
private searchContainer;
|
|
42
|
+
private searchTimer;
|
|
43
|
+
private latestSearchToken;
|
|
44
|
+
private normalizeStyleConfig;
|
|
45
|
+
private ensureScrollbarStyles;
|
|
46
|
+
private clearSearchResults;
|
|
47
|
+
private getEmptyResultText;
|
|
48
|
+
private resetSearchTimer;
|
|
49
|
+
private scheduleInputSearch;
|
|
50
|
+
/**
|
|
51
|
+
* 构造函数
|
|
52
|
+
* @param viewer Cesium Viewer 实例
|
|
53
|
+
* @param options 配置选项
|
|
54
|
+
* @param i18n 国际化实例
|
|
55
|
+
* @param useI18n 是否使用国际化
|
|
56
|
+
*/
|
|
57
|
+
constructor(viewer: any, options?: SearchButtonHandlerOptions, i18n?: any, useI18n?: boolean);
|
|
58
|
+
updateOptions(options: Partial<SearchButtonHandlerOptions>): void;
|
|
59
|
+
/**
|
|
60
|
+
* 获取默认样式
|
|
61
|
+
*/
|
|
62
|
+
private getDefaultStyles;
|
|
63
|
+
/**
|
|
64
|
+
* 初始化按钮
|
|
65
|
+
* @param button 按钮实例
|
|
66
|
+
*/
|
|
67
|
+
initialize(button: ToolbarButton): void;
|
|
68
|
+
/**
|
|
69
|
+
* 处理点击事件
|
|
70
|
+
*/
|
|
71
|
+
handleClick(): void;
|
|
72
|
+
/**
|
|
73
|
+
* 处理鼠标离开事件
|
|
74
|
+
*/
|
|
75
|
+
handleMouseLeave(): void;
|
|
76
|
+
/**
|
|
77
|
+
* 销毁处理器
|
|
78
|
+
*/
|
|
79
|
+
destroy(): void;
|
|
80
|
+
/**
|
|
81
|
+
* 切换搜索框显示
|
|
82
|
+
* @param anchor 锚点元素
|
|
83
|
+
*/
|
|
84
|
+
toggleSearch(anchor: HTMLElement): void;
|
|
85
|
+
/**
|
|
86
|
+
* 显示搜索框
|
|
87
|
+
* @param anchor 锚点元素
|
|
88
|
+
*/
|
|
89
|
+
private showSearch;
|
|
90
|
+
/**
|
|
91
|
+
* 执行搜索
|
|
92
|
+
* @param query 搜索关键词
|
|
93
|
+
*/
|
|
94
|
+
private doSearch;
|
|
95
|
+
/**
|
|
96
|
+
* 显示搜索结果
|
|
97
|
+
* @param results 搜索结果数组
|
|
98
|
+
*/
|
|
99
|
+
private showSearchResults;
|
|
100
|
+
/**
|
|
101
|
+
* 调整搜索框位置避免溢出视口
|
|
102
|
+
*/
|
|
103
|
+
private adjustSearchPosition;
|
|
104
|
+
private createActionIconElement;
|
|
105
|
+
private isImagePath;
|
|
106
|
+
/**
|
|
107
|
+
* 关闭搜索框
|
|
108
|
+
*/
|
|
109
|
+
closeSearch(): void;
|
|
110
|
+
}
|
|
111
|
+
export {};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { BaseButtonHandler } from './BaseButtonHandler';
|
|
2
|
+
import { ToolbarButton } from '../../../../components/ToolbarButton';
|
|
3
|
+
/**
|
|
4
|
+
* 简单按钮配置
|
|
5
|
+
*/
|
|
6
|
+
export interface SimpleButtonConfig {
|
|
7
|
+
/** 按钮 ID */
|
|
8
|
+
id: string;
|
|
9
|
+
/** 按钮标题 */
|
|
10
|
+
title: string;
|
|
11
|
+
/** 标题翻译键 */
|
|
12
|
+
titleKey?: string;
|
|
13
|
+
/** 图标 */
|
|
14
|
+
icon: string | HTMLElement;
|
|
15
|
+
/** 激活态图标 */
|
|
16
|
+
activeIcon?: string | HTMLElement;
|
|
17
|
+
/** 点击回调 */
|
|
18
|
+
onClick?: () => void;
|
|
19
|
+
/** 是否需要激活状态 */
|
|
20
|
+
toggleable?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 地图控制器接口
|
|
24
|
+
*/
|
|
25
|
+
export interface MapControllerLike {
|
|
26
|
+
toggle2D3D?: (button: HTMLElement) => void;
|
|
27
|
+
resetLocation?: () => void;
|
|
28
|
+
zoomIn?: () => void;
|
|
29
|
+
zoomOut?: () => void;
|
|
30
|
+
toggleFullscreen?: () => void;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 简单按钮处理器类
|
|
34
|
+
*/
|
|
35
|
+
export declare class SimpleButtonHandler extends BaseButtonHandler {
|
|
36
|
+
readonly id: string;
|
|
37
|
+
private config;
|
|
38
|
+
private mapController?;
|
|
39
|
+
/**
|
|
40
|
+
* 构造函数
|
|
41
|
+
* @param config 按钮配置
|
|
42
|
+
* @param viewer Cesium Viewer 实例
|
|
43
|
+
* @param mapController 地图控制器
|
|
44
|
+
* @param i18n 国际化实例
|
|
45
|
+
* @param useI18n 是否使用国际化
|
|
46
|
+
*/
|
|
47
|
+
constructor(config: SimpleButtonConfig, viewer: any, mapController?: MapControllerLike, i18n?: any, useI18n?: boolean);
|
|
48
|
+
/**
|
|
49
|
+
* 初始化按钮
|
|
50
|
+
* @param button 按钮实例
|
|
51
|
+
*/
|
|
52
|
+
initialize(button: ToolbarButton): void;
|
|
53
|
+
/**
|
|
54
|
+
* 处理点击事件
|
|
55
|
+
*/
|
|
56
|
+
handleClick(): void;
|
|
57
|
+
/**
|
|
58
|
+
* 销毁处理器
|
|
59
|
+
*/
|
|
60
|
+
destroy(): void;
|
|
61
|
+
/**
|
|
62
|
+
* 设置地图控制器
|
|
63
|
+
* @param controller 地图控制器
|
|
64
|
+
*/
|
|
65
|
+
setMapController(controller: MapControllerLike): void;
|
|
66
|
+
/**
|
|
67
|
+
* 切换激活状态
|
|
68
|
+
*/
|
|
69
|
+
toggleActive(): void;
|
|
70
|
+
/**
|
|
71
|
+
* 设置激活状态
|
|
72
|
+
* @param active 是否激活
|
|
73
|
+
*/
|
|
74
|
+
setActive(active: boolean): void;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* 创建简单按钮处理器的工厂函数
|
|
78
|
+
*/
|
|
79
|
+
export declare function createSimpleButtonHandler(config: SimpleButtonConfig, viewer: any, mapController?: MapControllerLike, i18n?: any, useI18n?: boolean): SimpleButtonHandler;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CustomButtonConfig, MapType, ToolbarConfig } from '../../types';
|
|
2
|
+
import { MeasureMenuItem } from './types';
|
|
3
|
+
export declare const DEFAULT_BUTTON_SORTS: Record<string, number>;
|
|
4
|
+
export declare const DEFAULT_BUTTON_CONFIGS: CustomButtonConfig[];
|
|
5
|
+
export declare const DEFAULT_MEASURE_ITEMS: MeasureMenuItem[];
|
|
6
|
+
export declare const DEFAULT_TOOLBAR_STYLE: ToolbarConfig;
|
|
7
|
+
export declare const DEFAULT_MAP_TYPES: MapType[];
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 工具栏服务模块
|
|
3
|
+
*
|
|
4
|
+
* 提供基于分层架构的工具栏功能实现:
|
|
5
|
+
* - ToolbarService: 核心服务类,负责工具栏的创建和管理
|
|
6
|
+
* - BaseButtonHandler: 按钮处理器基类
|
|
7
|
+
* - SimpleButtonHandler: 简单按钮处理器(2D/3D、定位、缩放、全屏)
|
|
8
|
+
* - SearchButtonHandler: 搜索按钮处理器
|
|
9
|
+
* - MeasureButtonHandler: 测量按钮处理器
|
|
10
|
+
* - LayersButtonHandler: 图层按钮处理器
|
|
11
|
+
* - BaseMenu: 菜单基类
|
|
12
|
+
* - MeasureMenu: 测量菜单
|
|
13
|
+
*/
|
|
14
|
+
export { ToolbarService, createToolbarService } from './ToolbarService';
|
|
15
|
+
export type { ToolbarServiceOptions } from './ToolbarService';
|
|
16
|
+
export type { IButtonHandler, IMenu, ToolbarServiceConfig, ToolbarCallbacks, MeasurementCompleteEvent, MeasurementServiceLike, SearchResult, SearchServiceConfig, MeasurementServiceConfig, LayersServiceConfig, NoFlyZoneServiceConfig, MapControllerConfig, DefaultButtonConfig, MeasureMenuItem, } from './types';
|
|
17
|
+
export { BaseButtonHandler } from './buttons/BaseButtonHandler';
|
|
18
|
+
export { SimpleButtonHandler, createSimpleButtonHandler } from './buttons/SimpleButtonHandler';
|
|
19
|
+
export type { SimpleButtonConfig, MapControllerLike } from './buttons/SimpleButtonHandler';
|
|
20
|
+
export { SearchButtonHandler } from './buttons/SearchButtonHandler';
|
|
21
|
+
export type { SearchButtonHandlerOptions } from './buttons/SearchButtonHandler';
|
|
22
|
+
export { MeasureButtonHandler } from './buttons/MeasureButtonHandler';
|
|
23
|
+
export type { MeasureButtonHandlerOptions } from './buttons/MeasureButtonHandler';
|
|
24
|
+
export { LayersButtonHandler } from './buttons/LayersButtonHandler';
|
|
25
|
+
export type { LayersButtonHandlerOptions, MapTypeConfig } from './buttons/LayersButtonHandler';
|
|
26
|
+
export { BaseMenu } from './menus/BaseMenu';
|
|
27
|
+
export type { MenuPositionConfig } from './menus/BaseMenu';
|
|
28
|
+
export { MeasureMenu } from './menus/MeasureMenu';
|
|
29
|
+
export type { MeasureMenuOptions } from './menus/MeasureMenu';
|
|
30
|
+
export { DEFAULT_BUTTON_CONFIGS, DEFAULT_BUTTON_SORTS, DEFAULT_MEASURE_ITEMS, DEFAULT_TOOLBAR_STYLE, DEFAULT_MAP_TYPES, } from './config';
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { IMenu } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* 菜单位置配置
|
|
4
|
+
*/
|
|
5
|
+
export interface MenuPositionConfig {
|
|
6
|
+
/** 相对于锚点的位置 */
|
|
7
|
+
position?: 'left' | 'right' | 'top' | 'bottom';
|
|
8
|
+
/** 偏移量(像素) */
|
|
9
|
+
offset?: number;
|
|
10
|
+
/** 顶部偏移(像素) */
|
|
11
|
+
topOffset?: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 菜单基类
|
|
15
|
+
*/
|
|
16
|
+
export declare abstract class BaseMenu implements IMenu {
|
|
17
|
+
/** 菜单元素 */
|
|
18
|
+
protected menuElement: HTMLElement | null;
|
|
19
|
+
/** 工具栏容器元素 */
|
|
20
|
+
protected toolbarElement: HTMLElement | null;
|
|
21
|
+
/** 当前锚点元素 */
|
|
22
|
+
protected anchorElement: HTMLElement | null;
|
|
23
|
+
/** 是否已销毁 */
|
|
24
|
+
protected isDestroyed: boolean;
|
|
25
|
+
/** 国际化实例 */
|
|
26
|
+
protected i18n?: any;
|
|
27
|
+
/** 是否使用国际化 */
|
|
28
|
+
protected useI18n: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* 构造函数
|
|
31
|
+
* @param toolbarElement 工具栏容器元素
|
|
32
|
+
* @param i18n 国际化实例
|
|
33
|
+
* @param useI18n 是否使用国际化
|
|
34
|
+
*/
|
|
35
|
+
constructor(toolbarElement: HTMLElement, i18n?: any, useI18n?: boolean);
|
|
36
|
+
/**
|
|
37
|
+
* 显示菜单(由子类实现具体渲染逻辑)
|
|
38
|
+
* @param anchor 锚点元素
|
|
39
|
+
*/
|
|
40
|
+
abstract show(anchor: HTMLElement): void;
|
|
41
|
+
/**
|
|
42
|
+
* 隐藏菜单
|
|
43
|
+
*/
|
|
44
|
+
hide(): void;
|
|
45
|
+
/**
|
|
46
|
+
* 切换菜单显示状态
|
|
47
|
+
* @param anchor 锚点元素
|
|
48
|
+
*/
|
|
49
|
+
toggle(anchor: HTMLElement): void;
|
|
50
|
+
/**
|
|
51
|
+
* 销毁菜单
|
|
52
|
+
*/
|
|
53
|
+
destroy(): void;
|
|
54
|
+
/**
|
|
55
|
+
* 创建菜单容器元素
|
|
56
|
+
* @param className 类名
|
|
57
|
+
* @param customStyles 自定义样式
|
|
58
|
+
*/
|
|
59
|
+
protected createMenuContainer(className: string, customStyles?: Partial<CSSStyleDeclaration>): HTMLElement;
|
|
60
|
+
/**
|
|
61
|
+
* 定位菜单到锚点元素
|
|
62
|
+
* @param anchor 锚点元素
|
|
63
|
+
* @param config 位置配置
|
|
64
|
+
*/
|
|
65
|
+
protected positionMenu(anchor: HTMLElement, config?: MenuPositionConfig): void;
|
|
66
|
+
/**
|
|
67
|
+
* 调整菜单位置以避免超出可视区域
|
|
68
|
+
*/
|
|
69
|
+
protected adjustPosition(): void;
|
|
70
|
+
/**
|
|
71
|
+
* 翻译文本
|
|
72
|
+
* @param key 翻译键
|
|
73
|
+
* @param params 翻译参数
|
|
74
|
+
*/
|
|
75
|
+
protected t(key: string, params?: Record<string, any>): string;
|
|
76
|
+
/**
|
|
77
|
+
* 绑定元素翻译
|
|
78
|
+
* @param element DOM 元素
|
|
79
|
+
* @param key 翻译键
|
|
80
|
+
* @param attribute 属性名
|
|
81
|
+
*/
|
|
82
|
+
protected bindElement(element: HTMLElement, key: string, attribute?: string): void;
|
|
83
|
+
/**
|
|
84
|
+
* 创建菜单项
|
|
85
|
+
* @param id 菜单项 ID
|
|
86
|
+
* @param text 显示文本
|
|
87
|
+
* @param textKey 翻译键
|
|
88
|
+
* @param icon 图标
|
|
89
|
+
* @param onClick 点击回调
|
|
90
|
+
*/
|
|
91
|
+
protected createMenuItem(id: string, text: string, textKey: string | undefined, icon: string, onClick: () => void): HTMLElement;
|
|
92
|
+
private createIconElement;
|
|
93
|
+
private isImagePath;
|
|
94
|
+
/**
|
|
95
|
+
* 设置菜单鼠标离开自动关闭
|
|
96
|
+
* @param delay 延迟时间(毫秒)
|
|
97
|
+
*/
|
|
98
|
+
protected setupAutoClose(delay?: number): void;
|
|
99
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { BaseMenu } from './BaseMenu';
|
|
2
|
+
import { MeasureMenuItem } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* 测量菜单配置
|
|
5
|
+
*/
|
|
6
|
+
export interface MeasureMenuOptions {
|
|
7
|
+
/** 菜单项配置 */
|
|
8
|
+
items?: MeasureMenuItem[];
|
|
9
|
+
/** 测距开始回调 */
|
|
10
|
+
onDistanceStart?: () => void;
|
|
11
|
+
/** 测面积开始回调 */
|
|
12
|
+
onAreaStart?: () => void;
|
|
13
|
+
/** 清除测量回调 */
|
|
14
|
+
onClear?: () => void;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 测量菜单类
|
|
18
|
+
*/
|
|
19
|
+
export declare class MeasureMenu extends BaseMenu {
|
|
20
|
+
private options;
|
|
21
|
+
private items;
|
|
22
|
+
/**
|
|
23
|
+
* 构造函数
|
|
24
|
+
* @param toolbarElement 工具栏容器元素
|
|
25
|
+
* @param options 菜单配置
|
|
26
|
+
* @param i18n 国际化实例
|
|
27
|
+
* @param useI18n 是否使用国际化
|
|
28
|
+
*/
|
|
29
|
+
constructor(toolbarElement: HTMLElement, options?: MeasureMenuOptions, i18n?: any, useI18n?: boolean);
|
|
30
|
+
/**
|
|
31
|
+
* 显示菜单
|
|
32
|
+
* @param anchor 锚点元素
|
|
33
|
+
*/
|
|
34
|
+
show(anchor: HTMLElement): void;
|
|
35
|
+
/**
|
|
36
|
+
* 处理菜单项点击
|
|
37
|
+
* @param itemId 菜单项 ID
|
|
38
|
+
*/
|
|
39
|
+
private handleItemClick;
|
|
40
|
+
/**
|
|
41
|
+
* 销毁菜单
|
|
42
|
+
*/
|
|
43
|
+
destroy(): void;
|
|
44
|
+
}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { ToolbarButton } from '../../../components/ToolbarButton';
|
|
2
|
+
import { I18nLike } from '../../../i18n';
|
|
3
|
+
/**
|
|
4
|
+
* 按钮处理器接口
|
|
5
|
+
*/
|
|
6
|
+
export interface IButtonHandler {
|
|
7
|
+
/** 按钮 ID */
|
|
8
|
+
readonly id: string;
|
|
9
|
+
/** 初始化按钮 */
|
|
10
|
+
initialize(button: ToolbarButton): void;
|
|
11
|
+
/** 处理点击事件 */
|
|
12
|
+
handleClick(): void;
|
|
13
|
+
/** 处理鼠标进入事件(可选) */
|
|
14
|
+
handleMouseEnter?(): void;
|
|
15
|
+
/** 处理鼠标离开事件(可选) */
|
|
16
|
+
handleMouseLeave?(): void;
|
|
17
|
+
/** 销毁处理器 */
|
|
18
|
+
destroy(): void;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 菜单接口
|
|
22
|
+
*/
|
|
23
|
+
export interface IMenu {
|
|
24
|
+
/** 显示菜单 */
|
|
25
|
+
show(anchor: HTMLElement): void;
|
|
26
|
+
/** 隐藏菜单 */
|
|
27
|
+
hide(): void;
|
|
28
|
+
/** 切换菜单显示状态 */
|
|
29
|
+
toggle(anchor: HTMLElement): void;
|
|
30
|
+
/** 销毁菜单 */
|
|
31
|
+
destroy(): void;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 工具栏服务配置
|
|
35
|
+
*/
|
|
36
|
+
export interface ToolbarServiceConfig {
|
|
37
|
+
/** Cesium Viewer 实例 */
|
|
38
|
+
viewer: any;
|
|
39
|
+
/** 容器元素 */
|
|
40
|
+
container: HTMLElement;
|
|
41
|
+
/** 绘图助手实例 */
|
|
42
|
+
drawHelper?: any;
|
|
43
|
+
/** 搜索服务配置 */
|
|
44
|
+
search?: SearchServiceConfig;
|
|
45
|
+
/** 测量服务配置 */
|
|
46
|
+
measurement?: MeasurementServiceConfig;
|
|
47
|
+
/** 图层服务配置 */
|
|
48
|
+
layers?: LayersServiceConfig;
|
|
49
|
+
/** 禁飞区服务配置 */
|
|
50
|
+
noFlyZone?: NoFlyZoneServiceConfig;
|
|
51
|
+
/** 地图控制器配置 */
|
|
52
|
+
mapController?: MapControllerConfig;
|
|
53
|
+
/** 国际化配置 */
|
|
54
|
+
i18n?: I18nLike;
|
|
55
|
+
/** 是否使用国际化 */
|
|
56
|
+
useI18n?: boolean;
|
|
57
|
+
/** 回调函数 */
|
|
58
|
+
callbacks?: ToolbarCallbacks;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* 工具栏回调函数
|
|
62
|
+
*/
|
|
63
|
+
export interface ToolbarCallbacks {
|
|
64
|
+
/** 搜索回调 */
|
|
65
|
+
onSearch?: (query: string) => Promise<SearchResult[]>;
|
|
66
|
+
/** 搜索选择回调 */
|
|
67
|
+
onSelect?: (result: SearchResult) => void;
|
|
68
|
+
/** 测量回调 */
|
|
69
|
+
onMeasurementStart?: () => void;
|
|
70
|
+
getDistanceDrawOptions?: () => any;
|
|
71
|
+
getAreaDrawOptions?: () => any;
|
|
72
|
+
onDistanceComplete?: (positions: any[], distance: number) => void;
|
|
73
|
+
onAreaComplete?: (positions: any[], area: number) => void;
|
|
74
|
+
onClear?: () => void;
|
|
75
|
+
/** 缩放回调 */
|
|
76
|
+
onZoomIn?: (beforeHeight: number, afterHeight: number) => void;
|
|
77
|
+
onZoomOut?: (beforeHeight: number, afterHeight: number) => void;
|
|
78
|
+
/** 全屏回调 */
|
|
79
|
+
onFullscreenChange?: (isFullscreen: boolean) => void;
|
|
80
|
+
/** 复位位置回调 */
|
|
81
|
+
onResetLocation?: () => void;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* 搜索结果
|
|
85
|
+
*/
|
|
86
|
+
export interface SearchResult {
|
|
87
|
+
name: string;
|
|
88
|
+
address: string;
|
|
89
|
+
longitude: number;
|
|
90
|
+
latitude: number;
|
|
91
|
+
height?: number;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* 搜索服务配置
|
|
95
|
+
*/
|
|
96
|
+
export interface SearchServiceConfig {
|
|
97
|
+
/** 搜索回调 */
|
|
98
|
+
onSearch?: (query: string) => Promise<SearchResult[]>;
|
|
99
|
+
/** 搜索选择回调 */
|
|
100
|
+
onSelect?: (result: SearchResult) => void;
|
|
101
|
+
}
|
|
102
|
+
export interface MeasurementCompleteEvent {
|
|
103
|
+
type: 'distance' | 'area';
|
|
104
|
+
positions: any[];
|
|
105
|
+
value: number;
|
|
106
|
+
}
|
|
107
|
+
export interface MeasurementServiceLike {
|
|
108
|
+
startDistanceMeasurement: (drawOptions?: any) => void;
|
|
109
|
+
startAreaMeasurement: (drawOptions?: any) => void;
|
|
110
|
+
clearMeasurements: () => void;
|
|
111
|
+
onMeasurementComplete?: (callback: (event: MeasurementCompleteEvent) => void) => void;
|
|
112
|
+
onClearComplete?: (callback: () => void) => void;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* 测量服务配置
|
|
116
|
+
*/
|
|
117
|
+
export interface MeasurementServiceConfig {
|
|
118
|
+
/** 测量回调 */
|
|
119
|
+
onMeasurementStart?: () => void;
|
|
120
|
+
getDistanceDrawOptions?: () => any;
|
|
121
|
+
getAreaDrawOptions?: () => any;
|
|
122
|
+
onDistanceComplete?: (positions: any[], distance: number) => void;
|
|
123
|
+
onAreaComplete?: (positions: any[], area: number) => void;
|
|
124
|
+
onClear?: () => void;
|
|
125
|
+
service?: MeasurementServiceLike;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* 图层服务配置
|
|
129
|
+
*/
|
|
130
|
+
export interface LayersServiceConfig {
|
|
131
|
+
/** 地图类型配置 */
|
|
132
|
+
mapTypes?: any[];
|
|
133
|
+
/** 当前地图类型 */
|
|
134
|
+
currentMapType?: string;
|
|
135
|
+
/** 当前是否显示路网/注记 */
|
|
136
|
+
isPlaceNameChecked?: boolean;
|
|
137
|
+
/** 天地图 token */
|
|
138
|
+
token?: string;
|
|
139
|
+
/** 地图类型改变回调 */
|
|
140
|
+
onMapTypeChange?: (mapTypeId: string) => void;
|
|
141
|
+
/** 路网显隐切换回调 */
|
|
142
|
+
onPlaceNameToggle?: (isChecked: boolean) => void;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* 禁飞区服务配置
|
|
146
|
+
*/
|
|
147
|
+
export interface NoFlyZoneServiceConfig {
|
|
148
|
+
/** 挤出高度 */
|
|
149
|
+
extrudedHeight?: number;
|
|
150
|
+
/** 自动加载 */
|
|
151
|
+
autoLoad?: boolean;
|
|
152
|
+
/** 是否勾选 */
|
|
153
|
+
isChecked?: boolean;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* 地图控制器配置
|
|
157
|
+
*/
|
|
158
|
+
export interface MapControllerConfig {
|
|
159
|
+
/** 初始中心点 */
|
|
160
|
+
initialCenter?: {
|
|
161
|
+
longitude: number;
|
|
162
|
+
latitude: number;
|
|
163
|
+
height: number;
|
|
164
|
+
};
|
|
165
|
+
/** 获取地图类型列表 */
|
|
166
|
+
getMapTypes?: () => any[];
|
|
167
|
+
/** 获取当前地图类型 */
|
|
168
|
+
getCurrentMapTypeId?: () => string;
|
|
169
|
+
/** 获取 token */
|
|
170
|
+
getToken?: () => string;
|
|
171
|
+
/** 缩放回调 */
|
|
172
|
+
zoomCallback?: any;
|
|
173
|
+
/** 场景模式改变回调 */
|
|
174
|
+
onSceneModeChanged?: () => void;
|
|
175
|
+
/** 全屏回调 */
|
|
176
|
+
fullscreenCallback?: (isFullscreen: boolean) => void;
|
|
177
|
+
/** 复位位置回调 */
|
|
178
|
+
resetLocationCallback?: () => void;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* 默认按钮配置
|
|
182
|
+
*/
|
|
183
|
+
export interface DefaultButtonConfig {
|
|
184
|
+
id: string;
|
|
185
|
+
icon: string | HTMLElement;
|
|
186
|
+
title: string;
|
|
187
|
+
titleKey?: string;
|
|
188
|
+
sort: number;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* 默认测量菜单项
|
|
192
|
+
*/
|
|
193
|
+
export interface MeasureMenuItem {
|
|
194
|
+
id: string;
|
|
195
|
+
text: string;
|
|
196
|
+
textKey?: string;
|
|
197
|
+
icon: string;
|
|
198
|
+
}
|