aviation-chart 2.0.40 → 2.0.42

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.
Files changed (3) hide show
  1. package/dist/nav-sdk.esm.js +51 -29
  2. package/glm.txt +2903 -0
  3. package/package.json +11 -6
package/glm.txt ADDED
@@ -0,0 +1,2903 @@
1
+ # aviation-chart SDK 开发手册
2
+
3
+ SDK 版本:2.0.42
4
+
5
+ # 开发约定
6
+
7
+ 只从 aviation-chart 公开入口导入。除初始化示例外,sdk 均表示已完成 await sdk.ready 的实例。参数和返回类型见末尾 API 参考;不要使用未列出的 SDK 方法。示例注释与功能限制冲突时,以功能限制和类型签名为准。
8
+
9
+ ## 1. 安装、初始化、生命周期
10
+
11
+ 安装 aviation-chart,实际使用版本应与本文页首版本一致。npm 包提供 ESM;不要用 require 或依赖未发布的 UMD 文件。框架项目只在浏览器挂载后初始化,SSR 服务端不要实例化地图。容器必须有明确高度。
12
+
13
+ ```sh
14
+ npm install aviation-chart
15
+ ```
16
+
17
+ ```ts
18
+ import { MapSDK } from 'aviation-chart';
19
+ import 'aviation-chart/style.css';
20
+
21
+ const container = document.createElement('div');
22
+ container.style.cssText = 'width:100%;height:600px';
23
+ document.body.appendChild(container);
24
+ const sdk = new MapSDK({
25
+ container,
26
+ apiUrl: 'https://YOUR-DATA-SERVICE', // 替换为实际 Go 服务地址
27
+ licenseKey: 'YOUR-CLIENT-LICENSE', // 仅使用服务端签发给客户端的授权,不是管理员密码
28
+ center: [116.4, 39.9], zoom: 5,
29
+ theme: 'light',
30
+ layers: { airspace: true, airline: true, amm: true, admin: false },
31
+ });
32
+ sdk.map.on('error', event => console.error('地图资源错误', event.error));
33
+ await sdk.ready;
34
+ // 组件卸载时执行 sdk.destroy();不要每次响应式状态更新都重新 new MapSDK。
35
+ ```
36
+
37
+ Vue:onMounted 中创建、await ready,onBeforeUnmount 中 destroy;用普通变量或 shallowRef 保存实例,避免深层 reactive 代理 地图引擎。React:useEffect 中创建并 return 清理函数,开发 StrictMode 下确保每次都有销毁。异步初始化期间卸载时,ready 回调必须先检查组件是否已卸载。
38
+
39
+ loadComplete / aviation:ready 表示 SDK 初始化完成;普通 地图引擎 load 不等于所有业务管理器准备完毕。ready 不保证后台所有瓦片均已下载。外部服务不可用时应显示业务错误/重试入口,不要永久遮罩。
40
+
41
+ MapSDKOptions 所有选项见参考,包括视角、交互、性能、插件、图层、授权和服务地址。apiUrl 用于新数据服务;baseUrl/staticUrl/version 等属于兼容配置,不能与 apiVersion(API 路径版本)或 period(数据期次)混淆。apiKey 与 licenseKey 的授权方式不同,不要自行把密码拼接在 URL。spriteUrl 必须指向配套图标资源;terrainUrl 指向配套地形服务。部署需让浏览器实际能访问瓦片、字形、sprite 和 manifest,不能使用后端机器的 localhost。
42
+
43
+ 若传入自定义 options.style,初始化走自定义底图路径,不能假定默认航图图层和默认 manifest 监听仍自动装配。仅修改航图配色优先 setTheme / 图层 paint,而不是替换整个 style。
44
+
45
+ ## 2. 地图状态、视角、交互与原生引擎
46
+
47
+ SDK 封装:setCenter、setZoom、setPitch、setBearing、fitBounds、flyTo、getCenter、getZoom、getBounds、toggleFullScreen、showTileBoundaries。经纬度顺序始终 [longitude, latitude],使用 WGS84;pitch/bearing 为角度,zoom 为地图缩放级别。getCenter 返回数组,不是 LngLat 对象。
48
+
49
+ 原生 API 明确通过 sdk.map 调用,避免 SDK 的同名封装冲突:
50
+
51
+ ```ts
52
+ sdk.flyTo({ center: [121.47, 31.23], zoom: 9 });
53
+ sdk.map.scrollZoom.disable(); // 可用 enable 恢复;dragPan 等控制器同理
54
+ sdk.map.resize(); // 容器尺寸变化、面板展开之后
55
+ sdk.map.setProjection({ type: 'globe' }); // 球面,不等于真实三维地形
56
+ sdk.map.setProjection({ type: 'mercator' });
57
+ const pixel = sdk.map.project([121.47, 31.23]);
58
+ const lngLat = sdk.map.unproject(pixel);
59
+ const visible = sdk.map.queryRenderedFeatures();
60
+ ```
61
+
62
+ MapEngine、Marker、Popup、LngLat、LngLatBounds 可从 aviation-chart 导入。MapEngine 是打包的 地图引擎 命名空间。SDK 虽代理部分原生方法,TypeScript 和同名方法优先使用 sdk.map。引擎支持的通用 API 不等于 SDK 新增封装,不要写不存在的 sdk.set3DMode 等方法。
63
+
64
+ ## 3. 图层、主题、FIR、机场图、国家名称
65
+
66
+ setLayerVisible(key, boolean) 用逻辑图层组。可用 key 和组成的实际 id 见参考 TYPEMAP;GROUP_ALIASES 是兼容别名。showLayer/hideLayer/toggleLayer 等操作具体图层时先确认实际 id。addBuiltInLayer/removeBuiltInLayer/toggleBuiltInLayer/getBuiltInLayers/isBuiltInLayerVisible 是兼容的内置图层管理接口,签名见附录;不要给 addBuiltInLayer 传任意不存在的 id。
67
+
68
+ ```ts
69
+ sdk.setLayerVisible('airspace', true);
70
+ sdk.setLayerVisible('amm', true);
71
+ sdk.setLayerVisible('admin', true);
72
+ if (sdk.map.getLayer('admin')) sdk.map.setPaintProperty('admin', 'text-opacity', 1);
73
+ sdk.setTheme('light'); // 其余主题名以参考 CHART_THEMES 为准
74
+ if (sdk.map.getLayer('airline')) sdk.map.setPaintProperty('airline', 'line-width', 1.2);
75
+ ```
76
+
77
+ 组名、style 图层 id、数据 source id、MVT source-layer 是四种不同概念。FIR 边界使用共享边界数据,标签承载线独立;不要将 fir-boundary 当 style 图层 id 或给共享边界直接填任意一侧名称。AMM 子图层由 SDK 定义,不要手写旧列表;跑道位移区域是跑道填充的补充图层。是否可见同时受数据覆盖、minzoom、filter、opacity 和 visibility 影响。
78
+
79
+ admin 为国家名称数据源/图层,字段为短名称字段(不是旧 objID)。mt 区分主领土和其他领土,lr/mz 用于标签等级/最小级别;具体数据不可假定每个国家都有相同 rank。setLayerVisible 不会改变 fill/text opacity;图层启用仍不可见时检查 paint 与 filter。不要把国名标注点当行政区多边形。
80
+
81
+ setStyle 是 SDK 局部主题覆盖,不是原生 StyleSpecification。普通键为实际图层 id,amm/controlled/restricted/airspace 这四个键需要数组形式:
82
+
83
+ ```ts
84
+ sdk.setStyle({
85
+ airline: { paint: { 'line-color': '#285a90' } },
86
+ airspace: [{ airspaceLayer_line: { paint: { 'line-color': '#557755' } } }],
87
+ });
88
+ ```
89
+
90
+ 完整替换地图样式用 await sdk.setMapStyle(style, { diff: true })。替换后自定义 source/layer/图片是否存在要重新检查并恢复,不能假定永久保留。restoreLandLayer 用于恢复 SDK 陆地图层。主题切换可能覆盖业务 paint,自定义样式应在主题切换之后重新应用。
91
+
92
+ ## 4. 数据期次、manifest、搜索和几何查询
93
+
94
+ ```ts
95
+ const periods = await sdk.getPeriods();
96
+ const latestPeriod = periods[0];
97
+ if (latestPeriod) sdk.setPeriod(latestPeriod, { validate: true });
98
+ console.log(sdk.getPeriod());
99
+ const controller = new AbortController();
100
+ const results = await sdk.search({ q: 'ZBAA', type: 'airport', limit: 20, signal: controller.signal });
101
+ const first = results[0];
102
+ if (first) {
103
+ const feature = await sdk.getGeometry({ type: first.type, id: first.id });
104
+ console.log(feature.geometry);
105
+ }
106
+ // 搜索框下一次查询或卸载时 controller.abort()。
107
+ ```
108
+
109
+ getPeriods 返回期次字符串数组;setPeriod 返回 void,不是等待全部瓦片就绪的 Promise,validate 校验异步执行。generateCurrentPeriod 用于获取/计算当前期次。不要把期次硬编码为日历月份,也不要把搜索结果 code 当几何查询所需的 UUID id。可检索类型见 FeatureType。
110
+
111
+ 默认航图初始化包含 NavData/AMM 版本与 manifest 处理。业务通常不必自己拼瓦片 URL 或重复轮询 manifest;不上传 AMM 时服务可沿用可用 AMM,是否有数据取决于服务端发布状态。SDK 不能代替服务端切片、发布或保证数据已经生成。切期不是重新 install SDK;但新增数据字段/图层仍需相应 SDK 样式支持。
112
+
113
+ 无地图时可用 searchFeatures/getFeatureGeometry/getPeriods 独立函数;其第一个参数是服务地址,授权/params 参数顺序见附录,不要与实例方法混用。全局 globalConfig 是共享单例,多地图使用不同服务/期次时需注意共享配置影响,不要调用不可公开构造的 GlobalConfigManager 构造器。
114
+
115
+ ## 5. GeoJSON、自定义图层与大量点
116
+
117
+ 推荐明确控制 source 和 layer,避免与 SDK 同名方法混用:
118
+
119
+ ```ts
120
+ const data = { type: 'FeatureCollection' as const, features: [{
121
+ type: 'Feature' as const, properties: { name: '示例点' },
122
+ geometry: { type: 'Point' as const, coordinates: [116.4, 39.9] },
123
+ }] };
124
+ sdk.map.addSource('business-points', { type: 'geojson', data });
125
+ sdk.map.addLayer({ id: 'business-points-layer', type: 'circle', source: 'business-points',
126
+ paint: { 'circle-radius': 5, 'circle-color': '#2672c8' } });
127
+ // 更新:将 getSource('business-points') 窄化为 GeoJSONSource 后调用 setData(nextData)。
128
+ // 清理:先 removeLayer('business-points-layer'),再 removeSource('business-points')。
129
+ ```
130
+
131
+ SDK 快捷方法包括 addPoint/addGeoJSON、geoJSONManager.addPoint/addLine/addPolygon,以及 removeFeature/updateFeature/clearAllFeatures/getFeature/getAllFeatures。sdk.addLine/addPolygon 当前参数类型过窄([]),TypeScript 项目优先用正确类型的 geoJSONManager 或原生 GeoJSON;不要靠 any 掩盖错误。SDK addLayer 接受 LayerConfig,与原生 地图引擎 LayerSpecification 不同。
132
+
133
+ 大量点使用单个 GeoJSON source + circle/symbol layer,不要创建上万个 DOM Marker。聚合可在原生 GeoJSON source 开启 cluster/clusterRadius/clusterMaxZoom,用 point_count 判断聚合点,用 getClusterExpansionZoom 查询展开级别。数据频繁更新应批量 setData、节流、卸载取消定时器。LOD/聚合/懒加载的配置接口存在,但不是所有自定义 source 自动享受的性能保证。
134
+
135
+ ## 6. 覆盖物与弹窗
136
+
137
+ SDK 工厂 createCircle/createText/createMarker/createPolyline/createPolygon 自动绑定地图,分别返回 Circle/Text/EnhancedMarker/Polyline/EnhancedPolygon。也可显式 new 对应类后 bindTo(sdk)。全部 options 和实例方法见附录,不要把原生 Marker 的构造参数传给 EnhancedMarker。
138
+
139
+ ```ts
140
+ const label = sdk.createText({ position: [116.4, 39.9], text: '示例机场' });
141
+ label.setText('更新名称');
142
+ label.remove();
143
+ const circle = sdk.createCircle({ center: [116.4, 39.9], radius: 1852 });
144
+ const marker = sdk.createMarker({ position: [116.4, 39.9] });
145
+ const line = sdk.createPolyline({ path: [[116.4, 39.9], [117, 40]] });
146
+ const polygon = sdk.createPolygon({ path: [[[116, 39], [117, 39], [117, 40], [116, 39]]] });
147
+ circle.remove(); marker.remove(); line.remove(); polygon.remove();
148
+ ```
149
+
150
+ 覆盖物提供相应的位置/路径/样式更新、显示隐藏和 remove。Circle 半径和 Polyline.getLength() 单位是米,1 NM = 1852 米;不要直接传海里数值。EnhancedPolygon.getArea() 返回平方米,当前仅计算外环,不扣除洞面积。地理距离不是屏幕距离。涉及航空业务准确性时使用经验证的数据/算法,不能用简化后的显示几何做安全判定。
151
+
152
+ 原生弹窗:
153
+
154
+ ```ts
155
+ import { Popup } from 'aviation-chart';
156
+ const popup = new Popup({ closeButton: true })
157
+ .setLngLat([116.4, 39.9]).setText('安全的文本内容').addTo(sdk.map);
158
+ // popup.remove();
159
+ ```
160
+
161
+ hoverPopup/clickPopup 返回解绑函数;hoverLayer/clickLayer 的 SDK 包装返回 void,不要假定都能调用返回值。需要 clickLayer 清理句柄时使用 sdk.clickObj 对应方法。HTML 弹窗内容不能直接插入不可信的服务端字段,优先 setText/textContent 或先消毒。
162
+
163
+ ## 7. 事件、要素选择、沿线标签
164
+
165
+ ```ts
166
+ const onClick = (event: any) => console.log(event.lngLat);
167
+ sdk.on('click', onClick);
168
+ // 清理必须用同一个函数引用:
169
+ sdk.off('click', onClick);
170
+ sdk.selector.setSelectLayers(['airline']);
171
+ sdk.selector.setOptions({ multiSelect: false, isHighlight: true });
172
+ sdk.selector.enable();
173
+ // sdk.selector.getSelected(); sdk.selector.disable();
174
+ ```
175
+
176
+ on/off 支持地图事件以及图层委托事件,签名见附录;mousemove 等高频事件应节流,不在每次回调创建图层。selector 管理选中、高亮、右键回调和取消选中;只使用公开非下划线方法,不调用 _onClick 等内部实现入口。
177
+
178
+ 沿线文字去重用 sdk.enableLineLabelDedup(lineLayerId, lineLabelId, builtInKey, fieldList?, suffix?),关闭用 disableLineLabelDedup。传入实际线层、标签层、业务组名与数据属性;不要调用旧示例里的 lineLabelOptimizer.enable/setOptions(当前不存在)。去重可能影响标签数量,不应把少标签一律归因于后端缺数据;还要排查碰撞、缩放范围、字体与 filter。
179
+
180
+ ## 8. ADS-B、NOTAM、雷达、业务 API
181
+
182
+ ADS-B:sdk.adsb 是正式入口,absb 是兼容拼写。open(pointConfig?, labelConfig?, enableInterpolation?) 打开渲染,update 接受 Feature 数组,不是 FeatureCollection;close 停止显示。飞机数据由调用方请求/推送,不要假定 SDK 自动连接航空数据流。
183
+
184
+ ```ts
185
+ sdk.adsb.open(undefined, { show: true }, false);
186
+ sdk.adsb.update([{ type: 'Feature', geometry: { type: 'Point', coordinates: [116.4, 39.9] },
187
+ properties: { id: 'demo-1', aircraft_id: 'demo-1', callsign: 'DEMO', heading: 90,
188
+ speed: 0, time_stamp: new Date().toISOString(), icao: 'DEMO' } }]);
189
+ ```
190
+
191
+ 默认飞机图片依赖配套 sprite。开启外推时应核对服务时间戳和速度单位,不能把演示外推当真实位置。NOTAM:sdk.notam.open(builtin, lineConfig?, fillConfig?, isPattern?)、update(features)、close、hover、refresh、getNotamData、openNotamDetail,内置数据模式依赖实际业务接口和权限;参数和返回值见附录。
192
+
193
+ 雷达/栅格:sdk.rasterManager.addRasterLayer(layerId, sourceId, meteoType),设置 rasterSourceUrl 后添加;updateRasterLayer(sourceId, newUrl, type) 更新,removeRasterLayer(layerId, sourceId) 清理。当前 radar 使用固定中国区域四角,其他类型使用世界范围,不能声称此封装支持任意 footprint;自定义四角使用 sdk.map.addSource 的 image source。方法返回 void,不是数据下载完成通知。
194
+
195
+ sdk.api / 导出的 API 类为兼容业务 HTTP 封装:notam_list、notam_detail、notam_data、typhoon_volcano_ash、getRunwayData、getRadarData、getPeriodData、getIndexData、getAirportPoint。多数返回 Response,业务需检查 response.ok 再 json;不要都当已经解析的 JSON。搜索的新接口则直接返回解析结果,两者不能混淆。参数如 AirportCode/DataPeriod 大小写不可改;完整结构见参考。
196
+
197
+ 风场:WindManager/WindFrame/WindOptions 虽导出,当前 open/setFrame 等仅为接口骨架,没有真正风场绘制。不要给用户生成“启用即可显示风场”的代码,也不要重新引入不兼容的 外部风场插件 默认导入。
198
+
199
+ ## 9. 插件、绘制、测量与诊断
200
+
201
+ 插件通过 sdk.use(plugin)、sdk.getPlugin(name) 接入。IPlugin 的 name/version/install/uninstall 等字段以接口定义为准。插件应主动清理自己注册的事件、定时器和资源;不得以存在 PluginManager 导出为理由访问 SDK 私有成员。
202
+
203
+ ```ts
204
+ import { DrawPlugin, MeasurePlugin } from 'aviation-chart';
205
+ const draw = new DrawPlugin();
206
+ sdk.use(draw);
207
+ // DrawingController 需等待其自身加载完成再操作;按附录使用 enableEdit/disableEdit 等包装。
208
+ const measure = new MeasurePlugin();
209
+ sdk.use(measure);
210
+ measure.enable('distance');
211
+ measure.disable();
212
+ ```
213
+
214
+ DrawPlugin 暴露 geoman 及拖动/编辑包装,不存在任意命名的 startDrawing/exportGeoJSON SDK 方法。DrawingController 第三方能力不在自有 API 全覆盖承诺内。当前插件卸载资源清理不完整,使用时需实测组件反复挂载。MeasurePlugin 是基础实现,结果通过 alert,面积计算与图形清理存在限制,不能作为生产航空测量正确性保证;需要严格测量时另行实现并验证。
215
+
216
+ ErrorManager、PerformanceManager、LayerManager、GeoJSONManager、PluginManager 为可导出管理器,通常复用 sdk 已有实例;独立构造时依赖以附录为准。getPerformanceStats 返回配置/队列统计,不是 FPS 或网络耗时。getErrorStats 当前无返回数据,options.errorHandler 也不能作为已完善的统一错误管道;直接监听 sdk.map 的 error 并捕获业务请求 Promise。性能验证关注实际 Network、长任务、渲染帧、请求取消、内存,不只看配置开关。
217
+
218
+ ## 10. 资源、地形、截图与排障
219
+
220
+ 经纬网通过 showGraticule/hideGraticule/toggleGraticule 控制,isGraticuleVisible 查询,updateGraticuleConfig 更新间隔、线色等配置,完整配置类型见附录。经纬网标注与业务 FIR 标签不是同一套数据,不要用经纬网接口调整 FIR 名称。
221
+
222
+ 图片注册优先使用当前引擎返回结构,避免旧 helper 对返回值的假设:
223
+
224
+ ```ts
225
+ const result = await sdk.map.loadImage('/icons/aircraft.png');
226
+ if (!sdk.map.hasImage('business-aircraft')) sdk.map.addImage('business-aircraft', result.data);
227
+ ```
228
+
229
+ SDK 也暴露 registerIcon,当前实现对 loadImage 返回包装的兼容需验证。地形需可用的 DEM 数据源,开 terrain/contour 组不等于创建全球 DEM;地图球面投影、hillshade 和真实 setTerrain 是不同功能。截图通过 sdk.map.getCanvas().toDataURL;需要持久缓冲时在初始化设置 preserveDrawingBuffer:true(会增加资源消耗),跨域图片必须合规加载。
230
+
231
+ 空白地图按顺序检查:容器高度 → map error → 服务授权和跨域 → manifest/瓦片内容 → glyph/sprite → 图层 source/source-layer → minzoom/filter/opacity。有 style 图层不等于服务端返回了对应数据。401/403 不是渲染性能问题;404 先看路径及发布结果;不要通过关闭鉴权或把管理员密钥写入前端解决。
232
+
233
+ 刷新、快速缩放与卸载:业务 fetch 用 AbortController;SDK 内建取消不涵盖应用自己的请求。不要靠频繁销毁地图取消请求;保留实例并更新视角/数据。销毁时清理业务事件、弹窗、覆盖物、WebSocket、定时器,再 sdk.destroy。
234
+
235
+ # 入口导出(包括类型)
236
+
237
+ API, AviationChart, BuiltInLayer, CHART_THEMES, Circle, CircleOptions, ClusteringConfig, DEFAULT_LAYER_VISIBILITY, DrawPlugin, EnhancedMarker, EnhancedPolygon, ErrorHandler, ErrorManager, EventListener, FeatureType, GROUP_ALIASES, GeoJSONCollection, GeoJSONFeature, GeoJSONManager, GeometryFeature, GeometryParams, GlobalConfigManager, HookCallback, HookContext, HookRegistry, IGeoJSONManager, ILayerManager, IMapSDK, IPlugin, LAYER_GROUPS, LAYER_LABELS, LODConfig, LayerConfig, LayerManager, LineType, LngLat, LngLatBounds, MapEngine, MapEvent, MapSDK, MapSDKOptions, Marker, MarkerOptions, MeasurePlugin, NOTAM, PerformanceManager, PluginManager, PolygonOptions, Polyline, PolylineOptions, Popup, SDKError, SearchParams, SearchResultItem, StrokeLineType, StyleConfig, TYPEMAP, Text, TextOptions, WindFrame, WindManager, WindOptions, default, getFeatureGeometry, getPeriods, globalConfig, searchFeatures
238
+
239
+ # 图层配置与主题
240
+
241
+ setLayerVisible 的组名使用 TYPEMAP 的键;AMM_LAYER_GROUPS 仅用于查找机场图子图层。
242
+
243
+ ```json
244
+ {
245
+ "TYPEMAP": {
246
+ "background": [
247
+ "background"
248
+ ],
249
+ "landLayer": [
250
+ "landLayer",
251
+ "coast"
252
+ ],
253
+ "admin": [
254
+ "admin"
255
+ ],
256
+ "boundary": [
257
+ "boundary"
258
+ ],
259
+ "ocean": [
260
+ "ocean_label"
261
+ ],
262
+ "airspace": [
263
+ "airspaceLayer",
264
+ "airspace_label_side_layer",
265
+ "airspaceLayer_line",
266
+ "airspace_label_center_layer"
267
+ ],
268
+ "airline": [
269
+ "airline",
270
+ "airline_label",
271
+ "airline_point",
272
+ "airline_radial"
273
+ ],
274
+ "controlled": [
275
+ "controlledLayer",
276
+ "controlledLayer_stroke_left_bg",
277
+ "controlledLayer_stroke_border",
278
+ "controlledLayer_stroke",
279
+ "controlled_line_label"
280
+ ],
281
+ "restricted": [
282
+ "restrictedLayer",
283
+ "restrictedLayer_stroke_border",
284
+ "restrictedLayer_stroke_bg",
285
+ "restrictedLayer_stroke",
286
+ "restricted_line_label"
287
+ ],
288
+ "vor": [
289
+ "vor_icon",
290
+ "vor_icon_dial",
291
+ "vor_label",
292
+ "vor_label_detail"
293
+ ],
294
+ "ndb": [
295
+ "ndb_icon",
296
+ "ndb_label_detail"
297
+ ],
298
+ "airport": [
299
+ "airport",
300
+ "airport-runway",
301
+ "airport-runway-cross"
302
+ ],
303
+ "adiz": [
304
+ "adiz-line",
305
+ "adiz-label"
306
+ ],
307
+ "waypointOffAirway": [
308
+ "waypoint-off-airway-symbol"
309
+ ],
310
+ "amm": [
311
+ "amm-airport-fill",
312
+ "amm-airport-stroke",
313
+ "amm-runway-fill",
314
+ "amm-runway-displaced-area-fill",
315
+ "amm-runway-stroke",
316
+ "amm-runway-info",
317
+ "amm-runway-marking",
318
+ "amm-runway-centerline",
319
+ "amm-runway-threshold",
320
+ "amm-runway-threshold-label",
321
+ "amm-apron-fill",
322
+ "amm-apron-label",
323
+ "amm-taxiway-fill",
324
+ "amm-taxiway-line",
325
+ "amm-taxiway-label",
326
+ "amm-taxiway-guidanceline",
327
+ "amm-taxiway-intersectionline",
328
+ "amm-holding",
329
+ "amm-holding-label",
330
+ "amm-stand-label",
331
+ "amm-stand-line",
332
+ "amm-restricted-fill",
333
+ "amm-hotspot-fill",
334
+ "amm-hotpost-label",
335
+ "amm-obstacle-region-fill",
336
+ "amm-obstacle-point-label",
337
+ "amm-construction-fill",
338
+ "amm-construction-stroke",
339
+ "amm-construction-label"
340
+ ],
341
+ "terrain": [
342
+ "terrain-color",
343
+ "terrain-hillshade"
344
+ ],
345
+ "contour": [
346
+ "contour-line",
347
+ "contour-label"
348
+ ]
349
+ },
350
+ "GROUP_ALIASES": {
351
+ "fir": "airspace",
352
+ "segment": "airline",
353
+ "waypoint": "airline"
354
+ },
355
+ "DEFAULT_LAYER_VISIBILITY": {
356
+ "background": true,
357
+ "landLayer": true,
358
+ "admin": false,
359
+ "boundary": true,
360
+ "ocean": true,
361
+ "airspace": true,
362
+ "airline": true,
363
+ "controlled": false,
364
+ "restricted": false,
365
+ "vor": true,
366
+ "ndb": true,
367
+ "airport": true,
368
+ "adiz": false,
369
+ "waypointOffAirway": false,
370
+ "amm": true,
371
+ "terrain": false,
372
+ "contour": false
373
+ },
374
+ "CHART_THEMES": {
375
+ "light": {
376
+ "id": "light",
377
+ "label": "日间",
378
+ "background": "#C8DCE8"
379
+ },
380
+ "standard": {
381
+ "id": "standard",
382
+ "label": "Pro风格",
383
+ "background": "#C8DCE8"
384
+ },
385
+ "dark": {
386
+ "id": "dark",
387
+ "label": "夜间",
388
+ "background": "#000000"
389
+ },
390
+ "dusk": {
391
+ "id": "dusk",
392
+ "label": "暮光",
393
+ "background": "#1B2838"
394
+ },
395
+ "sectional": {
396
+ "id": "sectional",
397
+ "label": "ForeFlight 风格",
398
+ "background": "#DCEAEF"
399
+ }
400
+ },
401
+ "LAYER_GROUPS": {
402
+ "adiz": [
403
+ "adiz-line",
404
+ "adiz-label"
405
+ ],
406
+ "airspace": [
407
+ "airspaceLayer",
408
+ "airspaceLayer_line",
409
+ "airspace_label_center_layer",
410
+ "airspace_label_side_layer"
411
+ ],
412
+ "restricted": [
413
+ "restrictedLayer",
414
+ "restrictedLayer_stroke_border",
415
+ "restrictedLayer_stroke_bg",
416
+ "restrictedLayer_stroke",
417
+ "restricted_line_label"
418
+ ],
419
+ "controlled": [
420
+ "controlledLayer",
421
+ "controlledLayer_stroke_left_bg",
422
+ "controlledLayer_stroke_border",
423
+ "controlledLayer_stroke",
424
+ "controlled_line_label"
425
+ ],
426
+ "airline": [
427
+ "airline_radial",
428
+ "airline",
429
+ "airline-shadow",
430
+ "airline_label",
431
+ "airline_point"
432
+ ],
433
+ "waypointOffAirway": [
434
+ "waypoint-off-airway-symbol"
435
+ ],
436
+ "vor": [
437
+ "vor_icon_dial",
438
+ "vor_icon_dial_arrow",
439
+ "vor_label",
440
+ "vor_label_detail",
441
+ "vor_icon"
442
+ ],
443
+ "ndb": [
444
+ "ndb_icon",
445
+ "ndb_label_detail"
446
+ ],
447
+ "airport": [
448
+ "airport",
449
+ "airport-runway",
450
+ "airport-runway-cross"
451
+ ]
452
+ },
453
+ "LAYER_LABELS": {
454
+ "adiz": "防空识别区",
455
+ "airspace": "情报区",
456
+ "restricted": "限制区",
457
+ "controlled": "管制区",
458
+ "airline": "航线",
459
+ "waypointOffAirway": "非航路点",
460
+ "vor": "VOR",
461
+ "ndb": "NDB",
462
+ "airport": "机场"
463
+ },
464
+ "AMM_LAYER_GROUPS": {
465
+ "ammAirport": [
466
+ "amm-airport-fill",
467
+ "amm-airport-stroke"
468
+ ],
469
+ "ammRunway": [
470
+ "amm-runway-fill",
471
+ "amm-runway-displaced-area-fill",
472
+ "amm-runway-stroke",
473
+ "amm-runway-info",
474
+ "amm-runway-marking",
475
+ "amm-runway-centerline",
476
+ "amm-runway-threshold",
477
+ "amm-runway-threshold-label"
478
+ ],
479
+ "ammApron": [
480
+ "amm-apron-fill",
481
+ "amm-apron-label"
482
+ ],
483
+ "ammTaxiway": [
484
+ "amm-taxiway-fill",
485
+ "amm-taxiway-line",
486
+ "amm-taxiway-label",
487
+ "amm-taxiway-guidanceline",
488
+ "amm-taxiway-intersectionline"
489
+ ],
490
+ "ammHolding": [
491
+ "amm-holding",
492
+ "amm-holding-label"
493
+ ],
494
+ "ammStand": [
495
+ "amm-stand-label",
496
+ "amm-stand-line"
497
+ ],
498
+ "ammRestricted": [
499
+ "amm-restricted-fill"
500
+ ],
501
+ "ammHotspot": [
502
+ "amm-hotspot-fill",
503
+ "amm-hotpost-label"
504
+ ],
505
+ "ammObstacle": [
506
+ "amm-obstacle-region-fill",
507
+ "amm-obstacle-point-label"
508
+ ],
509
+ "ammConstruction": [
510
+ "amm-construction-fill",
511
+ "amm-construction-stroke",
512
+ "amm-construction-label"
513
+ ]
514
+ },
515
+ "LAYER_SOURCES": [
516
+ {
517
+ "id": "landLayer",
518
+ "type": "fill",
519
+ "source": "land"
520
+ },
521
+ {
522
+ "id": "coast",
523
+ "type": "line",
524
+ "source": "land",
525
+ "minzoom": 0
526
+ },
527
+ {
528
+ "id": "boundary",
529
+ "type": "line",
530
+ "source": "boundary",
531
+ "minzoom": 0
532
+ },
533
+ {
534
+ "id": "admin",
535
+ "type": "symbol",
536
+ "source": "admin",
537
+ "minzoom": 1
538
+ },
539
+ {
540
+ "id": "ocean_label",
541
+ "type": "symbol",
542
+ "source": "ocean",
543
+ "minzoom": 0
544
+ },
545
+ {
546
+ "id": "airspaceLayer",
547
+ "type": "line",
548
+ "source": "navdata",
549
+ "sourceLayer": "fir-boundary",
550
+ "minzoom": 2
551
+ },
552
+ {
553
+ "id": "airspaceLayer_line",
554
+ "type": "line",
555
+ "source": "navdata",
556
+ "sourceLayer": "fir-boundary",
557
+ "minzoom": 5
558
+ },
559
+ {
560
+ "id": "airspace_label_side_layer",
561
+ "type": "symbol",
562
+ "source": "navdata",
563
+ "sourceLayer": "fir",
564
+ "minzoom": 4
565
+ },
566
+ {
567
+ "id": "airspace_label_center_layer",
568
+ "type": "symbol",
569
+ "source": "navdata",
570
+ "sourceLayer": "fir-centroid",
571
+ "minzoom": 3,
572
+ "maxzoom": 7
573
+ },
574
+ {
575
+ "id": "restrictedLayer",
576
+ "type": "fill",
577
+ "source": "navdata",
578
+ "sourceLayer": "restricted-fill",
579
+ "minzoom": 4
580
+ },
581
+ {
582
+ "id": "restrictedLayer_stroke_bg",
583
+ "type": "line",
584
+ "source": "navdata",
585
+ "sourceLayer": "restricted"
586
+ },
587
+ {
588
+ "id": "restrictedLayer_stroke",
589
+ "type": "line",
590
+ "source": "navdata",
591
+ "sourceLayer": "restricted"
592
+ },
593
+ {
594
+ "id": "restricted_line_label",
595
+ "type": "symbol",
596
+ "source": "navdata",
597
+ "sourceLayer": "restricted",
598
+ "minzoom": 6
599
+ },
600
+ {
601
+ "id": "controlledLayer",
602
+ "type": "fill",
603
+ "source": "navdata",
604
+ "sourceLayer": "controlled-fill",
605
+ "minzoom": 4
606
+ },
607
+ {
608
+ "id": "controlledLayer_stroke_left_bg",
609
+ "type": "line",
610
+ "source": "navdata",
611
+ "sourceLayer": "controlled"
612
+ },
613
+ {
614
+ "id": "controlledLayer_stroke",
615
+ "type": "line",
616
+ "source": "navdata",
617
+ "sourceLayer": "controlled"
618
+ },
619
+ {
620
+ "id": "controlled_line_label",
621
+ "type": "symbol",
622
+ "source": "navdata",
623
+ "sourceLayer": "controlled",
624
+ "minzoom": 6
625
+ },
626
+ {
627
+ "id": "airline",
628
+ "type": "line",
629
+ "source": "navdata",
630
+ "sourceLayer": "segment",
631
+ "minzoom": 6
632
+ },
633
+ {
634
+ "id": "airline-shadow",
635
+ "type": "line",
636
+ "source": "navdata",
637
+ "sourceLayer": "segment-shdow",
638
+ "minzoom": 6
639
+ },
640
+ {
641
+ "id": "airline_label",
642
+ "type": "symbol",
643
+ "source": "navdata",
644
+ "sourceLayer": "segment",
645
+ "minzoom": 6
646
+ },
647
+ {
648
+ "id": "airline_radial",
649
+ "type": "symbol",
650
+ "source": "navdata",
651
+ "sourceLayer": "segment-radial",
652
+ "minzoom": 11
653
+ },
654
+ {
655
+ "id": "airport",
656
+ "type": "symbol",
657
+ "source": "navdata",
658
+ "sourceLayer": "airport",
659
+ "minzoom": 2.5
660
+ },
661
+ {
662
+ "id": "airport-runway",
663
+ "type": "symbol",
664
+ "source": "navdata",
665
+ "sourceLayer": "airport",
666
+ "minzoom": 4
667
+ },
668
+ {
669
+ "id": "airport-runway-cross",
670
+ "type": "symbol",
671
+ "source": "navdata",
672
+ "sourceLayer": "airport",
673
+ "minzoom": 4
674
+ },
675
+ {
676
+ "id": "vor_icon_dial",
677
+ "type": "symbol",
678
+ "source": "navdata",
679
+ "sourceLayer": "vor",
680
+ "minzoom": 8,
681
+ "maxzoom": 12
682
+ },
683
+ {
684
+ "id": "vor_icon_dial_arrow",
685
+ "type": "symbol",
686
+ "source": "navdata",
687
+ "sourceLayer": "vor",
688
+ "minzoom": 8.5,
689
+ "maxzoom": 12
690
+ },
691
+ {
692
+ "id": "vor-compass-ring",
693
+ "type": "line",
694
+ "source": "navdata",
695
+ "sourceLayer": "compass",
696
+ "minzoom": 12.1
697
+ },
698
+ {
699
+ "id": "vor-compass-ticks",
700
+ "type": "line",
701
+ "source": "navdata",
702
+ "sourceLayer": "compass",
703
+ "minzoom": 12.1
704
+ },
705
+ {
706
+ "id": "vor-compass-pointer",
707
+ "type": "line",
708
+ "source": "navdata",
709
+ "sourceLayer": "compass",
710
+ "minzoom": 12.1
711
+ },
712
+ {
713
+ "id": "vor_icon",
714
+ "type": "symbol",
715
+ "source": "navdata",
716
+ "sourceLayer": "vor",
717
+ "minzoom": 4
718
+ },
719
+ {
720
+ "id": "vor_label",
721
+ "type": "symbol",
722
+ "source": "navdata",
723
+ "sourceLayer": "vor",
724
+ "minzoom": 5,
725
+ "maxzoom": 8
726
+ },
727
+ {
728
+ "id": "ndb_icon",
729
+ "type": "symbol",
730
+ "source": "navdata",
731
+ "sourceLayer": "ndb",
732
+ "minzoom": 4
733
+ },
734
+ {
735
+ "id": "vor_label_detail",
736
+ "type": "symbol",
737
+ "source": "navdata",
738
+ "sourceLayer": "vor",
739
+ "minzoom": 8
740
+ },
741
+ {
742
+ "id": "ndb_label_detail",
743
+ "type": "symbol",
744
+ "source": "navdata",
745
+ "sourceLayer": "ndb",
746
+ "minzoom": 8
747
+ },
748
+ {
749
+ "id": "airline_point",
750
+ "type": "symbol",
751
+ "source": "navdata",
752
+ "sourceLayer": "waypoint",
753
+ "minzoom": 6
754
+ },
755
+ {
756
+ "id": "waypoint-off-airway-symbol",
757
+ "type": "symbol",
758
+ "source": "navdata",
759
+ "sourceLayer": "waypoint-off-airway",
760
+ "minzoom": 7
761
+ },
762
+ {
763
+ "id": "amm-airport-fill",
764
+ "type": "fill",
765
+ "source": "amm",
766
+ "sourceLayer": "amm-airport",
767
+ "minzoom": 11
768
+ },
769
+ {
770
+ "id": "amm-airport-stroke",
771
+ "type": "line",
772
+ "source": "amm",
773
+ "sourceLayer": "amm-airport",
774
+ "minzoom": 11
775
+ },
776
+ {
777
+ "id": "amm-runway-fill",
778
+ "type": "fill",
779
+ "source": "amm",
780
+ "sourceLayer": "amm-runway",
781
+ "minzoom": 11
782
+ },
783
+ {
784
+ "id": "amm-runway-displaced-area-fill",
785
+ "type": "fill",
786
+ "source": "amm",
787
+ "sourceLayer": "amm-runway-displaced-area",
788
+ "minzoom": 11
789
+ },
790
+ {
791
+ "id": "amm-runway-stroke",
792
+ "type": "line",
793
+ "source": "amm",
794
+ "sourceLayer": "amm-runway",
795
+ "minzoom": 11
796
+ },
797
+ {
798
+ "id": "amm-apron-fill",
799
+ "type": "fill",
800
+ "source": "amm",
801
+ "sourceLayer": "amm-apron",
802
+ "minzoom": 11
803
+ },
804
+ {
805
+ "id": "amm-taxiway-fill",
806
+ "type": "fill",
807
+ "source": "amm",
808
+ "sourceLayer": "amm-taxiway",
809
+ "minzoom": 11
810
+ },
811
+ {
812
+ "id": "amm-taxiway-line",
813
+ "type": "line",
814
+ "source": "amm",
815
+ "sourceLayer": "amm-taxiway-line",
816
+ "minzoom": 13.5
817
+ },
818
+ {
819
+ "id": "amm-taxiway-guidanceline",
820
+ "type": "line",
821
+ "source": "amm",
822
+ "sourceLayer": "amm-taxiway-guidance-line",
823
+ "minzoom": 13.5
824
+ },
825
+ {
826
+ "id": "amm-taxiway-intersectionline",
827
+ "type": "line",
828
+ "source": "amm",
829
+ "sourceLayer": "amm-taxiway-intersection-marking",
830
+ "minzoom": 13.5
831
+ },
832
+ {
833
+ "id": "amm-holding",
834
+ "type": "line",
835
+ "source": "amm",
836
+ "sourceLayer": "amm-holding",
837
+ "minzoom": 13
838
+ },
839
+ {
840
+ "id": "amm-runway-marking",
841
+ "type": "fill",
842
+ "source": "amm",
843
+ "sourceLayer": "amm-runway-marking",
844
+ "minzoom": 13
845
+ },
846
+ {
847
+ "id": "amm-restricted-fill",
848
+ "type": "fill",
849
+ "source": "amm",
850
+ "sourceLayer": "amm-restricted",
851
+ "minzoom": 11
852
+ },
853
+ {
854
+ "id": "amm-hotspot-fill",
855
+ "type": "fill",
856
+ "source": "amm",
857
+ "sourceLayer": "amm-hotspot",
858
+ "minzoom": 12
859
+ },
860
+ {
861
+ "id": "amm-runway-centerline",
862
+ "type": "line",
863
+ "source": "amm",
864
+ "sourceLayer": "amm-runway-centerline",
865
+ "minzoom": 11
866
+ },
867
+ {
868
+ "id": "amm-stand-line",
869
+ "type": "line",
870
+ "source": "amm",
871
+ "sourceLayer": "amm-stand-line",
872
+ "minzoom": 13
873
+ },
874
+ {
875
+ "id": "amm-obstacle-region-fill",
876
+ "type": "fill-extrusion",
877
+ "source": "amm",
878
+ "sourceLayer": "amm-obstacle-region",
879
+ "minzoom": 11
880
+ },
881
+ {
882
+ "id": "amm-construction-fill",
883
+ "type": "fill",
884
+ "source": "amm",
885
+ "sourceLayer": "amm-construction",
886
+ "minzoom": 11
887
+ },
888
+ {
889
+ "id": "amm-construction-stroke",
890
+ "type": "line",
891
+ "source": "amm",
892
+ "sourceLayer": "amm-construction",
893
+ "minzoom": 11
894
+ },
895
+ {
896
+ "id": "amm-apron-label",
897
+ "type": "symbol",
898
+ "source": "amm",
899
+ "sourceLayer": "amm-apron",
900
+ "minzoom": 13
901
+ },
902
+ {
903
+ "id": "amm-holding-label",
904
+ "type": "symbol",
905
+ "source": "amm",
906
+ "sourceLayer": "amm-holding",
907
+ "minzoom": 15
908
+ },
909
+ {
910
+ "id": "amm-hotpost-label",
911
+ "type": "symbol",
912
+ "source": "amm",
913
+ "sourceLayer": "amm-hotspot",
914
+ "minzoom": 12
915
+ },
916
+ {
917
+ "id": "amm-runway-info",
918
+ "type": "symbol",
919
+ "source": "amm",
920
+ "sourceLayer": "amm-runway-label",
921
+ "minzoom": 13
922
+ },
923
+ {
924
+ "id": "amm-taxiway-label",
925
+ "type": "symbol",
926
+ "source": "amm",
927
+ "sourceLayer": "amm-taxiway-line",
928
+ "minzoom": 12
929
+ },
930
+ {
931
+ "id": "amm-runway-threshold-label",
932
+ "type": "symbol",
933
+ "source": "amm",
934
+ "sourceLayer": "amm-runway-threshold",
935
+ "minzoom": 12
936
+ },
937
+ {
938
+ "id": "amm-stand-label",
939
+ "type": "symbol",
940
+ "source": "amm",
941
+ "sourceLayer": "amm-stand",
942
+ "minzoom": 13.5
943
+ },
944
+ {
945
+ "id": "amm-obstacle-point-label",
946
+ "type": "symbol",
947
+ "source": "amm",
948
+ "sourceLayer": "amm-obstacle-point",
949
+ "minzoom": 14
950
+ },
951
+ {
952
+ "id": "amm-construction-label",
953
+ "type": "symbol",
954
+ "source": "amm",
955
+ "sourceLayer": "amm-construction",
956
+ "minzoom": 13
957
+ }
958
+ ]
959
+ }
960
+ ```
961
+
962
+ # API 参考
963
+
964
+ EngineTypes 表示 MapEngine 类型命名空间,DrawingController 表示绘图插件控制器。以下声明用于查阅签名,不要复制进项目;使用 aviation-chart 导出的类型。
965
+
966
+ ```typescript
967
+ import { MapEngine as EngineTypes } from 'aviation-chart';
968
+ type Map = EngineTypes.Map;
969
+ type StyleSpecification = EngineTypes.StyleSpecification;
970
+ type GeoJSONSourceSpecification = EngineTypes.GeoJSONSourceSpecification;
971
+ type LayerSpecification = EngineTypes.LayerSpecification;
972
+ type PopupOptions = EngineTypes.PopupOptions;
973
+ type FlyToOptions = EngineTypes.FlyToOptions;
974
+
975
+ export { MapEngine } from 'aviation-chart';
976
+ export { LngLat, LngLatBounds, Marker, Popup } from 'aviation-chart';
977
+ import { GeoJSON } from 'geojson';
978
+ type DrawingController = import("aviation-chart").DrawPlugin["geoman"];
979
+ interface GlobalConfig {
980
+ apiKey?: string;
981
+ baseUrl?: string;
982
+ /** 新航图数据栈地址(/api/periods、/api/search、/api/geometry 等) */
983
+ apiUrl?: string;
984
+ /** API 版本段(如 "v1")。为空则走无版本 /api/…。 */
985
+ apiVersion?: string;
986
+ version?: string;
987
+ period?: string;
988
+ chartConfig?: {
989
+ enableAIP?: boolean;
990
+ enableNOTAM?: boolean;
991
+ enableADSB?: boolean;
992
+ defaultCenter?: [
993
+ number,
994
+ number
995
+ ];
996
+ defaultZoom?: number;
997
+ };
998
+ styleConfig?: {
999
+ theme?: string;
1000
+ language?: "zh-CN" | "en-US";
1001
+ };
1002
+ periodConfig?: {
1003
+ switchDay?: number;
1004
+ };
1005
+ [key: string]: any;
1006
+ }
1007
+ declare class GlobalConfigManager {
1008
+ private constructor();
1009
+ static getInstance(): GlobalConfigManager;
1010
+ /**
1011
+ * 重新解析 URL 参数
1012
+ */
1013
+ refreshFromURL(): void;
1014
+ /**
1015
+ * 设置全局配置
1016
+ */
1017
+ setConfig(newConfig: Partial<GlobalConfig>): void;
1018
+ /**
1019
+ * 获取全局配置
1020
+ */
1021
+ getConfig(): GlobalConfig;
1022
+ /**
1023
+ * 获取特定配置项
1024
+ */
1025
+ getConfigItem<T>(key: string, defaultValue?: T): T | undefined;
1026
+ /**
1027
+ * 更新特定配置项
1028
+ */
1029
+ updateConfigItem<T>(key: string, value: T): void;
1030
+ /**
1031
+ * 添加配置变更监听器
1032
+ */
1033
+ addListener(event: string, callback: Function): () => void;
1034
+ /**
1035
+ * 移除配置变更监听器
1036
+ */
1037
+ removeListener(event: string, callback: Function): void;
1038
+ /**
1039
+ * 重置配置
1040
+ */
1041
+ reset(): void;
1042
+ /**
1043
+ * 设置期数
1044
+ */
1045
+ setPeriod(period: string): void;
1046
+ /**
1047
+ * 获取当前期数
1048
+ */
1049
+ getPeriod(): string | undefined;
1050
+ /**
1051
+ * 获取当前生效的期数。
1052
+ * 调用后端 `/api/periods`(返回 { periods: string[] },已按期数倒序,
1053
+ * 最新在前),取最新一期作为当前期数。
1054
+ */
1055
+ generateCurrentPeriod(apiUrl?: string): Promise<string>;
1056
+ /**
1057
+ * 设置地图重新初始化回调
1058
+ */
1059
+ setMapReinitCallback(callback: (() => void | Promise<void>) | null): void;
1060
+ /**
1061
+ * 销毁管理器
1062
+ */
1063
+ destroy(): void;
1064
+ }
1065
+ declare const globalConfig: GlobalConfigManager;
1066
+ type StrokeLineType = "solid" | "dashed" | "dotted" | "dash-dot" | "long-dash" | "double-dash";
1067
+ interface CircleOptions {
1068
+ center: [
1069
+ number,
1070
+ number
1071
+ ];
1072
+ /** 半径(米) */
1073
+ radius: number;
1074
+ /** 圆弧逼近分段数,越大越圆滑,默认 64 */
1075
+ steps?: number;
1076
+ /** 填充颜色,默认 "#1890ff" */
1077
+ color?: string;
1078
+ /** 填充不透明度 0-1,默认 0.25 */
1079
+ opacity?: number;
1080
+ /** 填充平移 [x, y] px */
1081
+ fillTranslate?: [
1082
+ number,
1083
+ number
1084
+ ];
1085
+ /** 填充图案 id */
1086
+ fillPattern?: string;
1087
+ /** 抗锯齿,默认 true */
1088
+ antialias?: boolean;
1089
+ /** 描边颜色,默认同 color */
1090
+ strokeColor?: string;
1091
+ /** 描边宽度(px),默认 2 */
1092
+ strokeWidth?: number;
1093
+ /** 描边不透明度 0-1,默认 0.8 */
1094
+ strokeOpacity?: number;
1095
+ /** 预设描边线型 */
1096
+ strokeLineType?: StrokeLineType;
1097
+ /** 自定义描边虚线模式 */
1098
+ strokeDasharray?: number[];
1099
+ /** 描边端头样式 */
1100
+ strokeLineCap?: "butt" | "round" | "square";
1101
+ /** 描边拐角样式 */
1102
+ strokeLineJoin?: "bevel" | "round" | "miter";
1103
+ /** 描边模糊(px) */
1104
+ strokeBlur?: number;
1105
+ /** 描边平移 [x, y] px */
1106
+ strokeTranslate?: [
1107
+ number,
1108
+ number
1109
+ ];
1110
+ /** 圆心标注文字 */
1111
+ label?: string;
1112
+ /** 标注字号,默认 14 */
1113
+ labelSize?: number;
1114
+ /** 标注颜色,默认 "#333" */
1115
+ labelColor?: string;
1116
+ /** 标注光晕颜色 */
1117
+ labelHaloColor?: string;
1118
+ /** 标注光晕宽度,默认 1 */
1119
+ labelHaloWidth?: number;
1120
+ /** 鼠标指针样式 */
1121
+ cursor?: string;
1122
+ /** 层叠顺序:在此图层 id 前插入 */
1123
+ beforeId?: string;
1124
+ /** 最小可见缩放级别 */
1125
+ minZoom?: number;
1126
+ /** 最大可见缩放级别 */
1127
+ maxZoom?: number;
1128
+ /** 额外属性 */
1129
+ properties?: Record<string, any>;
1130
+ }
1131
+ type CircleStyleKey = "color" | "opacity" | "fillTranslate" | "fillPattern" | "antialias" | "strokeColor" | "strokeWidth" | "strokeOpacity" | "strokeLineType" | "strokeDasharray" | "strokeBlur" | "strokeTranslate" | "strokeLineCap" | "strokeLineJoin";
1132
+ declare class Circle {
1133
+ readonly id: string;
1134
+ constructor(options: CircleOptions);
1135
+ bindTo(mapOrSdk: any): this;
1136
+ getCenter(): [
1137
+ number,
1138
+ number
1139
+ ];
1140
+ setCenter(center: [
1141
+ number,
1142
+ number
1143
+ ]): this;
1144
+ getRadius(): number;
1145
+ setRadius(radius: number): this;
1146
+ getBounds(): [
1147
+ [
1148
+ number,
1149
+ number
1150
+ ],
1151
+ [
1152
+ number,
1153
+ number
1154
+ ]
1155
+ ];
1156
+ contains(lnglat: [
1157
+ number,
1158
+ number
1159
+ ]): boolean;
1160
+ setStyle(style: Partial<Pick<CircleOptions, CircleStyleKey>>): this;
1161
+ setLabel(label: string): this;
1162
+ show(): this;
1163
+ hide(): this;
1164
+ isVisible(): boolean;
1165
+ remove(): void;
1166
+ }
1167
+ interface TextOptions {
1168
+ position: [
1169
+ number,
1170
+ number
1171
+ ];
1172
+ text: string;
1173
+ /** 字号,默认 14 */
1174
+ fontSize?: number;
1175
+ /** 字体族列表,如 ["Arial", "sans-serif"] */
1176
+ fontFamily?: string[];
1177
+ /** 字重:"normal" | "bold",默认 "normal" */
1178
+ fontWeight?: "normal" | "bold";
1179
+ /** 字体样式:"normal" | "italic",默认 "normal" */
1180
+ fontStyle?: "normal" | "italic";
1181
+ /** 文字颜色,默认 "#000000" */
1182
+ color?: string;
1183
+ /** 文字不透明度 0-1,默认 1 */
1184
+ opacity?: number;
1185
+ /** 光晕颜色,默认 "#ffffff" */
1186
+ haloColor?: string;
1187
+ /** 光晕宽度(px),默认 1 */
1188
+ haloWidth?: number;
1189
+ /** 光晕模糊(px),默认 0 */
1190
+ haloBlur?: number;
1191
+ /** 文字平移 [x, y] px */
1192
+ translate?: [
1193
+ number,
1194
+ number
1195
+ ];
1196
+ /** 旋转角度(°),默认 0 */
1197
+ rotation?: number;
1198
+ /** 锚点 */
1199
+ anchor?: "center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right";
1200
+ /** 偏移 [x, y] em,默认 [0, 0] */
1201
+ offset?: [
1202
+ number,
1203
+ number
1204
+ ];
1205
+ /** 对齐方式 */
1206
+ justify?: "auto" | "left" | "center" | "right";
1207
+ /** 是否允许重叠,默认 true */
1208
+ allowOverlap?: boolean;
1209
+ /** 是否忽略碰撞放置,默认 false */
1210
+ ignorePlacement?: boolean;
1211
+ /** 文字最大宽度(em),超出自动换行,默认 10 */
1212
+ maxWidth?: number;
1213
+ /** 行高(em),默认 1.2 */
1214
+ lineHeight?: number;
1215
+ /** 字间距(em),默认 0 */
1216
+ letterSpacing?: number;
1217
+ /** 背景色(使用 symbol 的 text-halo 模拟) */
1218
+ backgroundColor?: string;
1219
+ /** 背景不透明度 */
1220
+ backgroundOpacity?: number;
1221
+ /** 鼠标指针样式 */
1222
+ cursor?: string;
1223
+ /** 层叠顺序:在此图层 id 前插入 */
1224
+ beforeId?: string;
1225
+ /** 最小可见缩放级别 */
1226
+ minZoom?: number;
1227
+ /** 最大可见缩放级别 */
1228
+ maxZoom?: number;
1229
+ /** 额外属性 */
1230
+ properties?: Record<string, any>;
1231
+ }
1232
+ type TextStyleKey = "fontSize" | "fontWeight" | "color" | "opacity" | "haloColor" | "haloWidth" | "haloBlur" | "translate" | "rotation" | "anchor" | "offset" | "justify" | "maxWidth" | "lineHeight" | "letterSpacing";
1233
+ declare class Text {
1234
+ readonly id: string;
1235
+ constructor(options: TextOptions);
1236
+ bindTo(mapOrSdk: any): this;
1237
+ getText(): string;
1238
+ setText(text: string): this;
1239
+ getPosition(): [
1240
+ number,
1241
+ number
1242
+ ];
1243
+ setPosition(position: [
1244
+ number,
1245
+ number
1246
+ ]): this;
1247
+ setStyle(style: Partial<Pick<TextOptions, TextStyleKey>>): this;
1248
+ show(): this;
1249
+ hide(): this;
1250
+ isVisible(): boolean;
1251
+ remove(): void;
1252
+ }
1253
+ interface MarkerOptions {
1254
+ position: [
1255
+ number,
1256
+ number
1257
+ ];
1258
+ /** 标注文字 */
1259
+ label?: string;
1260
+ /** 标注 CSS class */
1261
+ labelClassName?: string;
1262
+ /** 标注字号(px),默认 12 */
1263
+ labelFontSize?: number;
1264
+ /** 标注颜色,默认 "#333" */
1265
+ labelColor?: string;
1266
+ /** 标注背景色,默认 "rgba(255,255,255,0.85)" */
1267
+ labelBackground?: string;
1268
+ /** 标注偏移 [x, y] px,默认 [0, 2] */
1269
+ labelOffset?: [
1270
+ number,
1271
+ number
1272
+ ];
1273
+ /** 标注与图标相对位置 */
1274
+ labelPosition?: "top" | "bottom" | "left" | "right";
1275
+ /** 自定义图标 URL 或 DOM 元素 */
1276
+ icon?: string | HTMLElement;
1277
+ /** 图标宽度(px),默认 24 */
1278
+ iconWidth?: number;
1279
+ /** 图标高度(px),默认 24 */
1280
+ iconHeight?: number;
1281
+ /** 默认标记颜色(无 icon 时生效),默认 "#1890ff" */
1282
+ color?: string;
1283
+ /** 整体不透明度 0-1,默认 1 */
1284
+ opacity?: number;
1285
+ /** 整体缩放,默认 1 */
1286
+ scale?: number;
1287
+ /** 是否可拖拽,默认 false */
1288
+ draggable?: boolean;
1289
+ /** 旋转角度(°),默认 0 */
1290
+ angle?: number;
1291
+ /** 锚点位置 */
1292
+ anchor?: "center" | "top" | "bottom" | "left" | "right" | "top-left" | "top-right" | "bottom-left" | "bottom-right";
1293
+ /** 偏移 [x, y] px */
1294
+ offset?: [
1295
+ number,
1296
+ number
1297
+ ];
1298
+ /** 鼠标指针样式,默认 "pointer" */
1299
+ cursor?: string;
1300
+ /** Popup 内容(HTML 字符串),点击时弹出 */
1301
+ popupContent?: string | HTMLElement;
1302
+ /** Popup 偏移(px),默认 25 */
1303
+ popupOffset?: number;
1304
+ /** Popup 最大宽度,默认 "240px" */
1305
+ popupMaxWidth?: string;
1306
+ /** 是否默认展开 Popup */
1307
+ popupOpen?: boolean;
1308
+ /** 额外 CSS class 加到包裹 DOM 上 */
1309
+ className?: string;
1310
+ }
1311
+ type MarkerEventType = "click" | "dblclick" | "mouseenter" | "mouseleave" | "dragstart" | "drag" | "dragend";
1312
+ declare class EnhancedMarker {
1313
+ readonly id: string;
1314
+ constructor(options: MarkerOptions);
1315
+ bindTo(mapOrSdk: any): this;
1316
+ getPosition(): [
1317
+ number,
1318
+ number
1319
+ ];
1320
+ setPosition(position: [
1321
+ number,
1322
+ number
1323
+ ]): this;
1324
+ getLabel(): string | undefined;
1325
+ setLabel(label: string): this;
1326
+ setLabelStyle(style: Partial<Pick<MarkerOptions, "labelFontSize" | "labelColor" | "labelBackground">>): this;
1327
+ setIcon(icon: string | HTMLElement): this;
1328
+ setIconSize(width: number, height: number): this;
1329
+ getDraggable(): boolean;
1330
+ setDraggable(draggable: boolean): this;
1331
+ getAngle(): number;
1332
+ setAngle(angle: number): this;
1333
+ setOpacity(opacity: number): this;
1334
+ setPopup(content: string | HTMLElement): this;
1335
+ openPopup(): this;
1336
+ closePopup(): this;
1337
+ show(): this;
1338
+ hide(): this;
1339
+ isVisible(): boolean;
1340
+ on(event: MarkerEventType, fn: Function): this;
1341
+ off(event: MarkerEventType, fn: Function): this;
1342
+ remove(): void;
1343
+ }
1344
+ type LineType = "solid" | "dashed" | "dotted" | "dash-dot" | "long-dash" | "double-dash";
1345
+ interface PolylineOptions {
1346
+ path: [
1347
+ number,
1348
+ number
1349
+ ][];
1350
+ /** 线颜色,默认 "#1890ff" */
1351
+ color?: string;
1352
+ /** 线宽(px),默认 2 */
1353
+ width?: number;
1354
+ /** 线整体不透明度 0-1,默认 1 */
1355
+ opacity?: number;
1356
+ /** 预设线型(优先级高于 dasharray) */
1357
+ lineType?: LineType;
1358
+ /** 自定义虚线模式 [dash, gap, dash, gap, ...](lineType 为空时生效) */
1359
+ dasharray?: number[];
1360
+ lineCap?: "butt" | "round" | "square";
1361
+ lineJoin?: "bevel" | "round" | "miter";
1362
+ /** 斜接限制(lineJoin='miter' 时生效),默认 2 */
1363
+ miterLimit?: number;
1364
+ /** 圆角限制(lineJoin='round' 时生效),默认 1.05 */
1365
+ roundLimit?: number;
1366
+ /** 线条模糊(px),默认 0 */
1367
+ blur?: number;
1368
+ /** 线整体偏移(px),正值向右偏移,默认 0 */
1369
+ offset?: number;
1370
+ /** 线整体平移 [x, y] px,默认 [0,0] */
1371
+ translate?: [
1372
+ number,
1373
+ number
1374
+ ];
1375
+ /** 线条渐变色数组 [t, color, t, color, ...](需 path 有一定长度) */
1376
+ gradient?: any[];
1377
+ /** 描边/边框宽度,0=无描边 */
1378
+ borderWidth?: number;
1379
+ /** 描边颜色 */
1380
+ borderColor?: string;
1381
+ /** 显示方向箭头 */
1382
+ showArrow?: boolean;
1383
+ /** 箭头间距(px),默认 100 */
1384
+ arrowSpacing?: number;
1385
+ /** 沿线标注文字 */
1386
+ label?: string;
1387
+ /** 标注字号,默认 12 */
1388
+ labelSize?: number;
1389
+ /** 标注颜色,默认 同 color */
1390
+ labelColor?: string;
1391
+ /** 标注光晕颜色 */
1392
+ labelHaloColor?: string;
1393
+ /** 标注光晕宽度,默认 1 */
1394
+ labelHaloWidth?: number;
1395
+ /** 标注偏移(em),默认 [0, -0.8] */
1396
+ labelOffset?: [
1397
+ number,
1398
+ number
1399
+ ];
1400
+ /** 标注间距(px),默认 250 */
1401
+ labelSpacing?: number;
1402
+ /** 鼠标指针样式,默认不设置 */
1403
+ cursor?: string;
1404
+ /** 层叠顺序:在此图层 id 前插入 */
1405
+ beforeId?: string;
1406
+ /** 最小可见缩放级别 */
1407
+ minZoom?: number;
1408
+ /** 最大可见缩放级别 */
1409
+ maxZoom?: number;
1410
+ /** 额外属性,会写入 GeoJSON properties */
1411
+ properties?: Record<string, any>;
1412
+ }
1413
+ type PolylineStyleKey = "color" | "width" | "opacity" | "lineType" | "dasharray" | "blur" | "offset" | "translate" | "borderWidth" | "borderColor" | "lineCap" | "lineJoin";
1414
+ declare class Polyline {
1415
+ readonly id: string;
1416
+ constructor(options: PolylineOptions);
1417
+ bindTo(mapOrSdk: any): this;
1418
+ getPath(): [
1419
+ number,
1420
+ number
1421
+ ][];
1422
+ setPath(path: [
1423
+ number,
1424
+ number
1425
+ ][]): this;
1426
+ getLength(): number;
1427
+ getBounds(): [
1428
+ [
1429
+ number,
1430
+ number
1431
+ ],
1432
+ [
1433
+ number,
1434
+ number
1435
+ ]
1436
+ ];
1437
+ setStyle(style: Partial<Pick<PolylineOptions, PolylineStyleKey>>): this;
1438
+ setLabel(label: string): this;
1439
+ show(): this;
1440
+ hide(): this;
1441
+ isVisible(): boolean;
1442
+ remove(): void;
1443
+ }
1444
+ interface PolygonOptions {
1445
+ path: [
1446
+ number,
1447
+ number
1448
+ ][][];
1449
+ /** 填充颜色,默认 "#1890ff" */
1450
+ color?: string;
1451
+ /** 填充不透明度 0-1,默认 0.25 */
1452
+ opacity?: number;
1453
+ /** 填充平移 [x, y] px */
1454
+ fillTranslate?: [
1455
+ number,
1456
+ number
1457
+ ];
1458
+ /** 填充图案(需先 addImage 注册图案 id) */
1459
+ fillPattern?: string;
1460
+ /** 抗锯齿,默认 true */
1461
+ antialias?: boolean;
1462
+ /** 描边颜色,默认同 color */
1463
+ strokeColor?: string;
1464
+ /** 描边宽度(px),默认 2 */
1465
+ strokeWidth?: number;
1466
+ /** 描边不透明度 0-1,默认 0.8 */
1467
+ strokeOpacity?: number;
1468
+ /** 预设描边线型(优先级高于 strokeDasharray) */
1469
+ strokeLineType?: StrokeLineType;
1470
+ /** 自定义描边虚线模式 */
1471
+ strokeDasharray?: number[];
1472
+ /** 描边端头样式 */
1473
+ strokeLineCap?: "butt" | "round" | "square";
1474
+ /** 描边拐角样式 */
1475
+ strokeLineJoin?: "bevel" | "round" | "miter";
1476
+ /** 描边模糊(px) */
1477
+ strokeBlur?: number;
1478
+ /** 描边偏移(px) */
1479
+ strokeOffset?: number;
1480
+ /** 描边平移 [x, y] px */
1481
+ strokeTranslate?: [
1482
+ number,
1483
+ number
1484
+ ];
1485
+ /** 面心标注文字 */
1486
+ label?: string;
1487
+ /** 标注字号,默认 14 */
1488
+ labelSize?: number;
1489
+ /** 标注颜色,默认 "#333" */
1490
+ labelColor?: string;
1491
+ /** 标注光晕颜色 */
1492
+ labelHaloColor?: string;
1493
+ /** 标注光晕宽度,默认 1 */
1494
+ labelHaloWidth?: number;
1495
+ /** 标注锚点 */
1496
+ labelAnchor?: "center" | "left" | "right" | "top" | "bottom";
1497
+ /** 标注偏移 [x, y] em */
1498
+ labelOffset?: [
1499
+ number,
1500
+ number
1501
+ ];
1502
+ /** 鼠标指针样式 */
1503
+ cursor?: string;
1504
+ /** 层叠顺序:在此图层 id 前插入 */
1505
+ beforeId?: string;
1506
+ /** 最小可见缩放级别 */
1507
+ minZoom?: number;
1508
+ /** 最大可见缩放级别 */
1509
+ maxZoom?: number;
1510
+ /** 额外属性 */
1511
+ properties?: Record<string, any>;
1512
+ }
1513
+ type PolygonStyleKey = "color" | "opacity" | "fillTranslate" | "fillPattern" | "antialias" | "strokeColor" | "strokeWidth" | "strokeOpacity" | "strokeLineType" | "strokeDasharray" | "strokeBlur" | "strokeOffset" | "strokeTranslate" | "strokeLineCap" | "strokeLineJoin";
1514
+ declare class EnhancedPolygon {
1515
+ readonly id: string;
1516
+ constructor(options: PolygonOptions);
1517
+ bindTo(mapOrSdk: any): this;
1518
+ getPath(): [
1519
+ number,
1520
+ number
1521
+ ][][];
1522
+ setPath(path: [
1523
+ number,
1524
+ number
1525
+ ][][]): this;
1526
+ getArea(): number;
1527
+ getBounds(): [
1528
+ [
1529
+ number,
1530
+ number
1531
+ ],
1532
+ [
1533
+ number,
1534
+ number
1535
+ ]
1536
+ ];
1537
+ contains(lnglat: [
1538
+ number,
1539
+ number
1540
+ ]): boolean;
1541
+ setStyle(style: Partial<Pick<PolygonOptions, PolygonStyleKey>>): this;
1542
+ setLabel(label: string): this;
1543
+ show(): this;
1544
+ hide(): this;
1545
+ isVisible(): boolean;
1546
+ remove(): void;
1547
+ }
1548
+ interface GraticuleConfig {
1549
+ enabled?: boolean;
1550
+ interval?: number;
1551
+ lineColor?: string;
1552
+ lineWidth?: number;
1553
+ lineOpacity?: number;
1554
+ lineDasharray?: number[];
1555
+ labelColor?: string;
1556
+ labelSize?: number;
1557
+ showLabels?: boolean;
1558
+ labelFormat?: 'decimal' | 'dms';
1559
+ }
1560
+ /**
1561
+ * 实现网格线功能,包括添加网格线、添加标注等
1562
+ * @param {EngineMap} map 地图实例
1563
+ * @param {GraticuleConfig} config 配置
1564
+ * @returns {GraticuleManager}
1565
+ */
1566
+ declare class GraticuleManager {
1567
+ constructor(map: Map, config?: GraticuleConfig);
1568
+ /** 缩放更新 */
1569
+ update(): void;
1570
+ show(): void;
1571
+ hide(): void;
1572
+ /**
1573
+ * 切换网格线显示状态
1574
+ */
1575
+ toggle(): void;
1576
+ /**
1577
+ * 更新配置
1578
+ */
1579
+ updateConfig(newConfig: Partial<GraticuleConfig>): void;
1580
+ remove(): void;
1581
+ /**
1582
+ * 获取当前配置
1583
+ */
1584
+ getConfig(): Required<GraticuleConfig>;
1585
+ /**
1586
+ * 获取可见性状态
1587
+ */
1588
+ isGraticuleVisible(): boolean;
1589
+ /**
1590
+ * 销毁管理器
1591
+ */
1592
+ destroy(): void;
1593
+ }
1594
+ interface IMapSDK {
1595
+ setCenter(center: [
1596
+ number,
1597
+ number
1598
+ ]): void;
1599
+ setZoom(zoom: number): void;
1600
+ setPitch(pitch: number): void;
1601
+ setBearing(bearing: number): void;
1602
+ fitBounds(bounds: [
1603
+ [
1604
+ number,
1605
+ number
1606
+ ],
1607
+ [
1608
+ number,
1609
+ number
1610
+ ]
1611
+ ], options?: any): void;
1612
+ addBuiltInLayer(layerName: string, zindex?: string | undefined): Promise<void>;
1613
+ removeBuiltInLayer(layerName: string): void;
1614
+ toggleBuiltInLayer(layerName: string): void;
1615
+ getBuiltInLayers(): Object;
1616
+ updateLayerStyle(layerId: string, style: StyleConfig): void;
1617
+ setMapStyle(style: string | StyleSpecification, options?: {
1618
+ diff?: boolean;
1619
+ }): Promise<void>;
1620
+ setTheme(theme: string): void;
1621
+ addPoint(coordinates: [
1622
+ number,
1623
+ number
1624
+ ], properties?: Record<string, any>, style?: StyleConfig): string;
1625
+ addLine(coordinates: [
1626
+ number,
1627
+ number
1628
+ ][], properties?: Record<string, any>, style?: StyleConfig): string;
1629
+ addPolygon(coordinates: [
1630
+ number,
1631
+ number
1632
+ ][][], properties?: Record<string, any>, style?: StyleConfig): string;
1633
+ addGeoJSON(sourceId: string, geojson?: GeoJSON | string | null | undefined, props?: GeoJSONSourceSpecification | null | undefined): any;
1634
+ showLayers(layerIds: string[]): void;
1635
+ hideLayers(layerIds: string[]): void;
1636
+ on(event: string, listener: Function): void;
1637
+ off(event: string, listener: Function): void;
1638
+ getCenter(): [
1639
+ number,
1640
+ number
1641
+ ];
1642
+ getZoom(): number;
1643
+ getBounds(): [
1644
+ [
1645
+ number,
1646
+ number
1647
+ ],
1648
+ [
1649
+ number,
1650
+ number
1651
+ ]
1652
+ ];
1653
+ destroy(): void;
1654
+ use(plugin: IPlugin): void;
1655
+ getPlugin<T extends IPlugin>(name: string): T | undefined;
1656
+ setPeriod(period: string, options?: {
1657
+ validate?: boolean;
1658
+ }): void;
1659
+ getPeriod(): string | undefined;
1660
+ generateCurrentPeriod(): Promise<string>;
1661
+ showGraticule(): void;
1662
+ hideGraticule(): void;
1663
+ toggleGraticule(): void;
1664
+ updateGraticuleConfig(config: Partial<GraticuleConfig>): void;
1665
+ isGraticuleVisible(): boolean;
1666
+ }
1667
+ interface ILayerManager {
1668
+ addLayer(config: LayerConfig): string;
1669
+ removeLayer(id: string): boolean;
1670
+ updateLayer(id: string, updates: Partial<LayerConfig>): boolean;
1671
+ showLayer(id: string): boolean;
1672
+ hideLayer(id: string): boolean;
1673
+ toggleLayer(id: string): boolean;
1674
+ getLayer(id: string): LayerConfig | undefined;
1675
+ getAllLayers(): LayerConfig[];
1676
+ batchShowLayers(ids: string[]): void;
1677
+ batchHideLayers(ids: string[]): void;
1678
+ batchUpdateLayers(updates: Array<{
1679
+ id: string;
1680
+ updates: Partial<LayerConfig>;
1681
+ }>): void;
1682
+ addBuiltInLayer(name: string, zindex?: string | undefined): Promise<void>;
1683
+ removeBuiltInLayer(name: string): boolean;
1684
+ getBuiltInLayers(): Record<string, string[]>;
1685
+ isBuiltInLayerVisible(id: string): boolean;
1686
+ setLODEnabled(enabled: boolean): void;
1687
+ setLayerLODConfig(layerId: string, config: LODConfig): void;
1688
+ }
1689
+ interface IGeoJSONManager {
1690
+ addPoint(coordinates: [
1691
+ number,
1692
+ number
1693
+ ], properties?: Record<string, any>, style?: StyleConfig, id?: string): string;
1694
+ addLine(coordinates: [
1695
+ number,
1696
+ number
1697
+ ][], properties?: Record<string, any>, style?: StyleConfig, id?: string): string;
1698
+ addPolygon(coordinates: [
1699
+ number,
1700
+ number
1701
+ ][][], properties?: Record<string, any>, style?: StyleConfig, id?: string): string;
1702
+ addGeoJSON(sourceId: string, geojson?: GeoJSON | string | null | undefined, props?: GeoJSONSourceSpecification | null | undefined): any;
1703
+ removeFeature(id: string): boolean;
1704
+ updateFeature(id: string, updates: Partial<GeoJSONFeature>): boolean;
1705
+ clearAllFeatures(): void;
1706
+ getFeature(id: string): GeoJSONFeature | undefined;
1707
+ getAllFeatures(): GeoJSONFeature[];
1708
+ setClusteringEnabled(enabled: boolean): void;
1709
+ setClusteringConfig(layerId: string, config: ClusteringConfig): void;
1710
+ }
1711
+ interface IPlugin {
1712
+ name: string;
1713
+ version: string;
1714
+ install(sdk: IMapSDK): void;
1715
+ uninstall?(sdk: IMapSDK): void;
1716
+ }
1717
+ interface SDKError extends Error {
1718
+ code: string;
1719
+ details?: any;
1720
+ recoverable: boolean;
1721
+ }
1722
+ type ErrorHandler = (error: SDKError) => void | Promise<void>;
1723
+ interface LODConfig {
1724
+ minZoom: number;
1725
+ maxZoom: number;
1726
+ minPixelSize: number;
1727
+ maxPixelSize: number;
1728
+ cullingEnabled: boolean;
1729
+ }
1730
+ interface ClusteringConfig {
1731
+ enabled: boolean;
1732
+ radius: number;
1733
+ maxZoom: number;
1734
+ minPoints: number;
1735
+ }
1736
+ interface MapSDKOptions {
1737
+ container: string | HTMLElement;
1738
+ style?: string | object;
1739
+ center?: [
1740
+ number,
1741
+ number
1742
+ ];
1743
+ zoom?: number;
1744
+ minZoom?: number;
1745
+ maxZoom?: number;
1746
+ pitch?: number;
1747
+ bearing?: number;
1748
+ interactive?: boolean;
1749
+ preserveDrawingBuffer?: boolean;
1750
+ errorHandler?: ErrorHandler;
1751
+ performance?: {
1752
+ lodEnabled?: boolean;
1753
+ clusteringEnabled?: boolean;
1754
+ lazyLoadingEnabled?: boolean;
1755
+ };
1756
+ plugins?: IPlugin[];
1757
+ apiKey?: string;
1758
+ period?: string;
1759
+ version?: string;
1760
+ baseUrl?: string;
1761
+ staticUrl?: string;
1762
+ /** 新航图数据栈(navdata MVT / terrain)服务地址,默认 https://aips.siniswift.com */
1763
+ apiUrl?: string;
1764
+ /**
1765
+ * API 版本段,如 "v1"。设置后所有 /api 接口请求 `${apiUrl}/api/v1/...`;
1766
+ * 不设则走无版本 `${apiUrl}/api/...`(等价后端 v1,向后兼容现网)。
1767
+ * 用于接口/瓦片格式契约有破坏性变更时切版本与回退。
1768
+ */
1769
+ apiVersion?: string;
1770
+ /**
1771
+ * 授权密钥,格式 "customerId.base64Key",由服务方逐个发放。
1772
+ * 设置后 SDK 走加密瓦片通道(`/api/tiles/e/`),运行时换取当期密钥并本地解密;
1773
+ * 不设则走明文瓦片通道(向后兼容现网老用户)。密钥不入公开包。
1774
+ */
1775
+ licenseKey?: string;
1776
+ /** sprite 服务地址(默认同 apiUrl,拼 /sprites/sprite[-color|-v2]) */
1777
+ spriteUrl?: string;
1778
+ /** 地形 DEM 瓦片 URL 模板({z}/{x}/{y}),默认 `${apiUrl}/api/terrain/...` */
1779
+ terrainUrl?: string;
1780
+ /**
1781
+ * 初始化图层组可见性(未列出的组保持默认)。
1782
+ * 组名同 setLayerVisible:airspace/airline/controlled/restricted/vor/ndb/
1783
+ * airport/adiz/waypointOffAirway/amm/terrain/contour 及 0.1.x 别名 fir/segment。
1784
+ */
1785
+ layers?: Record<string, boolean>;
1786
+ enableAIP?: boolean;
1787
+ enableNOTAM?: boolean;
1788
+ enableADSB?: boolean;
1789
+ /**
1790
+ * 主题 id。内置 'light' | 'dark',以及 aviation-chart 样式里注册的其它主题
1791
+ * (如 'dusk' | 'sectional')。未注册的值回退到 'light'。
1792
+ */
1793
+ theme?: string;
1794
+ language?: 'zh-CN' | 'en-US';
1795
+ switchDay?: number;
1796
+ graticule?: {
1797
+ enabled?: boolean;
1798
+ interval?: number;
1799
+ lineColor?: string;
1800
+ lineWidth?: number;
1801
+ lineOpacity?: number;
1802
+ lineDasharray?: number[];
1803
+ labelColor?: string;
1804
+ labelSize?: number;
1805
+ labelOffset?: [
1806
+ number,
1807
+ number
1808
+ ];
1809
+ showLabels?: boolean;
1810
+ labelFormat?: 'decimal' | 'dms';
1811
+ };
1812
+ }
1813
+ interface LayerConfig {
1814
+ id: string;
1815
+ name: string;
1816
+ description?: string;
1817
+ category: "base" | "overlay" | "label" | "custom";
1818
+ type: "background" | "fill" | "line" | "symbol" | "raster" | "hillshade" | "circle" | "custom";
1819
+ source: string;
1820
+ sourceLayer?: string;
1821
+ defaultVisible: boolean;
1822
+ paint?: any;
1823
+ layout?: any;
1824
+ filter?: any[];
1825
+ lod?: LODConfig;
1826
+ lazyLoad?: boolean;
1827
+ maxzoom?: number;
1828
+ minzoom?: number;
1829
+ "source-layer"?: string;
1830
+ }
1831
+ interface BuiltInLayer extends LayerConfig {
1832
+ builtin: true;
1833
+ }
1834
+ interface GeoJSONFeature {
1835
+ id: string;
1836
+ type: "Feature";
1837
+ geometry: {
1838
+ type: "Point" | "LineString" | "Polygon" | "MultiPoint" | "MultiLineString" | "MultiPolygon";
1839
+ coordinates: any;
1840
+ };
1841
+ properties: Record<string, any>;
1842
+ style?: StyleConfig;
1843
+ }
1844
+ interface GeoJSONCollection {
1845
+ type: "FeatureCollection";
1846
+ features: GeoJSONFeature[];
1847
+ }
1848
+ interface StyleConfig {
1849
+ paint?: any;
1850
+ layout?: any;
1851
+ filter?: any[];
1852
+ }
1853
+ interface MapEvent {
1854
+ type: string;
1855
+ target: any;
1856
+ [key: string]: any;
1857
+ }
1858
+ type EventListener = (event: MapEvent) => void;
1859
+ interface HookContext {
1860
+ sdk: IMapSDK;
1861
+ [key: string]: any;
1862
+ }
1863
+ type HookCallback = (context: HookContext) => void | Promise<void>;
1864
+ interface HookRegistry {
1865
+ [hookName: string]: HookCallback[];
1866
+ }
1867
+ type StyleImageMetadata = {
1868
+ pixelRatio: number;
1869
+ sdf: boolean;
1870
+ usvg: boolean;
1871
+ stretchX?: Array<[
1872
+ number,
1873
+ number
1874
+ ]>;
1875
+ stretchY?: Array<[
1876
+ number,
1877
+ number
1878
+ ]>;
1879
+ content?: [
1880
+ number,
1881
+ number,
1882
+ number,
1883
+ number
1884
+ ];
1885
+ };
1886
+ type LayerRef = string | Array<string> | RegExp | ((arg0: LayerSpecification) => boolean);
1887
+ type HtmlFunction = (feature: any, popup: any) => string | Promise<string>;
1888
+ /**
1889
+ * 实现ADS-B功能,包括飞机数据推算、飞机图层显示、飞机名称显示等
1890
+ * @param {EngineMap} map 地图实例
1891
+ * @returns {ADSB}
1892
+ */
1893
+ declare class ADSB {
1894
+ constructor(map: Map);
1895
+ /**
1896
+ * 开启 ADS-B 功能
1897
+ * @param {Object} pointLayerConfig 点的图层配置,参考示例代码
1898
+ * @param {Object} labelLayerConfig 飞机名称图层配置,参考示例代码
1899
+ * @param {boolean} enableInterpolation 是否启用推算
1900
+ * @returns void
1901
+ */
1902
+ open(pointLayerConfig?: any, labelLayerConfig?: any, enableInterpolation?: boolean): void;
1903
+ /**
1904
+ * 关闭 ADS-B 功能
1905
+ * @returns void
1906
+ */
1907
+ close(): void;
1908
+ /**
1909
+ * 更新飞机数据
1910
+ * @param {Array} features 飞机数据,features 是一个数组,每个元素是一个对象,对象的格式为Feature对象,参考示例代码
1911
+ * @returns void
1912
+ */
1913
+ update(features: any): void;
1914
+ /**
1915
+ * 销毁 ADS-B 功能
1916
+ * @returns void
1917
+ */
1918
+ destroy(): void;
1919
+ }
1920
+ type OffHandler$1 = () => void;
1921
+ /**
1922
+ * 实现悬停功能,包括悬停图层、悬停要素、悬停弹窗等
1923
+ * @param {EngineMap} map 地图实例
1924
+ * @returns {HoverManager}
1925
+ */
1926
+ declare class HoverManager {
1927
+ constructor(map: Map);
1928
+ /**
1929
+ * 设置防抖延迟时间
1930
+ */
1931
+ setDebounceDelay(delay: number): void;
1932
+ /**
1933
+ * 当鼠标悬停在这些图层中的某个要素上时触发回调函数
1934
+ * @param {string|Array<string>|RegExp|function} layers 触发回调的图层.
1935
+ * @returns {function} 回调函数.
1936
+ */
1937
+ hoverLayer: (layers: LayerRef, cb: (e: any) => void) => void;
1938
+ /** hover时展示feature的信息.
1939
+ @param {string|Array<string>|RegExp|function} layers 触发的图层
1940
+ @param htmlFunc 接收 feature 和 popup,并返回 HTML 字符串或 Promise<HTML字符串> 的函数
1941
+ @param {Object<PopupOptions>} popupOptions 自定义popup.
1942
+ */
1943
+ hoverPopup(layers: LayerRef, htmlFunc: HtmlFunction, popupOptions?: PopupOptions): OffHandler$1;
1944
+ }
1945
+ type OffHandler = () => void;
1946
+ type LayerCallback = (e: any) => void;
1947
+ /**
1948
+ * 实现点击功能,包括点击图层、点击要素、点击弹窗等
1949
+ * @param {EngineMap} map 地图实例
1950
+ * @returns {ClickManager}
1951
+ */
1952
+ declare class ClickManager {
1953
+ constructor(map: Map);
1954
+ /**
1955
+ * 当点击这些图层中的某个要素时触发回调函数
1956
+ * @param {string|Array<string>|RegExp|function} layers 触发回调的图层
1957
+ * @returns {function} 卸载回调
1958
+ */
1959
+ clickLayer: (layers: LayerRef, cb: LayerCallback) => OffHandler;
1960
+ /**
1961
+ * 点击时展示 feature 的信息
1962
+ * @param layers 触发的图层
1963
+ * @param htmlFunc 接收 feature 和 popup,并返回 HTML 字符串或 Promise<HTML字符串>
1964
+ * @param popupOptions 自定义 popup
1965
+ */
1966
+ clickPopup(layers: LayerRef, htmlFunc: HtmlFunction, popupOptions?: PopupOptions): OffHandler;
1967
+ }
1968
+ /**
1969
+ * @enum NotamDetailParams
1970
+ * 通告详情参数
1971
+ */
1972
+ type NotamDetailParams = {
1973
+ notamSeries: string;
1974
+ notamNoPart1: string;
1975
+ notamNoPart2: string;
1976
+ nof: string;
1977
+ pageNo: number;
1978
+ pageSize: number;
1979
+ signal?: AbortSignal | null;
1980
+ };
1981
+ /**
1982
+ * @enum NotamListParams
1983
+ * 通告列表参数
1984
+ */
1985
+ type NotamListParams = {
1986
+ pageNo: number;
1987
+ pageSize: number;
1988
+ onlyGeojson: boolean;
1989
+ typeC: boolean;
1990
+ notamOffset: string;
1991
+ isInternational: boolean;
1992
+ isCompanyVersion: boolean;
1993
+ signal?: AbortSignal | null;
1994
+ };
1995
+ /**
1996
+ * @enum NotamDataParams
1997
+ * 通告数据参数
1998
+ */
1999
+ type NotamDataParams = {
2000
+ pageNo: number;
2001
+ pageSize: number;
2002
+ nof: string;
2003
+ itemA: string;
2004
+ itemB: string;
2005
+ itemC: string;
2006
+ notamSeries: string;
2007
+ notamNoPart1: string;
2008
+ notamNoPart2: string;
2009
+ notamTypeIds: string;
2010
+ onlyValid: boolean;
2011
+ moduleName: string;
2012
+ topic: string;
2013
+ notamCode: string;
2014
+ signal: AbortSignal | null;
2015
+ };
2016
+ /**
2017
+ * @enum TyphoonVolcanoAshParams
2018
+ * 台风火山灰参数
2019
+ */
2020
+ type TyphoonVolcanoAshParams = {
2021
+ AdvisoryText: string;
2022
+ signal?: AbortSignal | null;
2023
+ };
2024
+ /**
2025
+ * @enum RunwayDataParams
2026
+ * 跑道数据参数
2027
+ */
2028
+ type RunwayDataParams = {
2029
+ AirportCode: string;
2030
+ DataPeriod: string;
2031
+ signal?: AbortSignal | null;
2032
+ };
2033
+ /**
2034
+ * API 接口类
2035
+ * @returns { API }
2036
+ */
2037
+ declare class API {
2038
+ constructor();
2039
+ _baseUrl: string;
2040
+ setBaseUrl(baseUrl: string): void;
2041
+ /**
2042
+ * 获取通告列表[可视化]
2043
+ * @param { NotamListParams | {} } params 参数
2044
+ * @returns { Promise<Response> } 返回结果
2045
+ */
2046
+ notam_list(params: NotamListParams | {}): Promise<Response>;
2047
+ /**
2048
+ * 获取通告详情
2049
+ * @param { NotamDetailParams | {} } params 参数
2050
+ * @returns { Promise<Response> } 返回结果
2051
+ */
2052
+ notam_detail(params: NotamDetailParams | {}): Promise<Response>;
2053
+ /**
2054
+ * 获取全部通告信息
2055
+ * @param { NotamDataParams } params 参数
2056
+ * @returns { Promise<Response> } 返回结果
2057
+ */
2058
+ notam_data(params: NotamDataParams): Promise<Response>;
2059
+ /**
2060
+ * 台风火山灰
2061
+ * @param { TyphoonVolcanoAshParams | {} } params 参数
2062
+ * @returns { Promise<Response> } 返回结果
2063
+ */
2064
+ typhoon_volcano_ash(params: TyphoonVolcanoAshParams | {}): Promise<Response>;
2065
+ /**
2066
+ * 获取跑道数据
2067
+ * @param { RunwayDataParams } params 参数
2068
+ * @returns { Promise<Response> } 返回结果
2069
+ */
2070
+ getRunwayData(params: RunwayDataParams): Promise<Response>;
2071
+ /**
2072
+ * 获取雷达图数据
2073
+ * @param { AbortSignal | null } signal 信号量,用于取消请求
2074
+ * @returns { Promise<Response> } 返回结果
2075
+ */
2076
+ getRadarData(signal?: AbortSignal | null): Promise<Response>;
2077
+ /**
2078
+ * 获取周期数据
2079
+ * @param { AbortSignal | null } signal 信号量,用于取消请求
2080
+ * @returns { Promise<Response> } 返回结果
2081
+ */
2082
+ getPeriodData(signal?: AbortSignal | null): Promise<Response>;
2083
+ /**
2084
+ * 获取索引数据
2085
+ * @param data 数据
2086
+ * @param { AbortSignal | null } signal 信号量,用于取消请求
2087
+ * @returns
2088
+ */
2089
+ getIndexData(data: any, signal?: AbortSignal | null): Promise<Response>;
2090
+ /**
2091
+ * 获取机场信息
2092
+ * @param airport 机场代码
2093
+ * @param { AbortSignal | null } signal 信号量,用于取消请求
2094
+ * @returns
2095
+ */
2096
+ getAirportPoint(airport: string, signal?: AbortSignal | null): Promise<unknown>;
2097
+ }
2098
+ /***
2099
+ * 实现NOTAM功能,包括添加NOTAM航线通告、添加NOTAM区域通告等
2100
+ * @param {EngineMap} map 地图实例
2101
+ * @returns {NOTAM}
2102
+ */
2103
+ declare class NOTAM {
2104
+ hoverManager: HoverManager;
2105
+ clickManager: ClickManager;
2106
+ api: API;
2107
+ constructor(map: Map);
2108
+ defaultParams: {
2109
+ pageNo: number;
2110
+ pageSize: number;
2111
+ onlyGeojson: boolean;
2112
+ typeC: boolean;
2113
+ notamOffset: string;
2114
+ isInternational: boolean;
2115
+ isCompanyVersion: boolean;
2116
+ };
2117
+ /**
2118
+ *
2119
+ * @param builtin 是否使用内置数据源
2120
+ * @param lineLayerConfig 线图层配置
2121
+ * @param fillLayerConfig 面图层配置
2122
+ * @param isPattern 是否使用图案填充
2123
+ * @returns
2124
+ */
2125
+ open(builtin: Boolean, lineLayerConfig?: any, fillLayerConfig?: any, isPattern?: boolean): void;
2126
+ close(): void;
2127
+ update(features: any): void;
2128
+ hover(callback: (e: any) => void): void;
2129
+ refresh(): void;
2130
+ destroy(): void;
2131
+ getNotamData(params?: any): Promise<any>;
2132
+ openNotamDetail(): void;
2133
+ }
2134
+ declare class RasterManager {
2135
+ constructor(map: Map);
2136
+ get rasterSourceUrl(): string;
2137
+ set rasterSourceUrl(url: string);
2138
+ addRasterLayer(layerId: string, sourceId: string, meteoType: string): void;
2139
+ updateRasterLayer(sourceId: string, newUrl: string, meteoType: string): void;
2140
+ removeRasterLayer(layerId: string, sourceId: string): void;
2141
+ }
2142
+ /**
2143
+ * 综合搜索 / 几何查询 —— 对接后端 /api/search 与 /api/geometry。
2144
+ *
2145
+ * 两个接口受 X-Api-Key 保护:调用时自动附带初始化传入的 apiKey。
2146
+ */
2147
+ type FeatureType = "airport" | "waypoint" | "vor" | "ndb" | "airspace" | "restricted" | "controlled" | "airway";
2148
+ interface SearchParams {
2149
+ /** 关键词(业务代码 / 名称 / 中文名),必填 */
2150
+ q: string;
2151
+ /** 数据类型,可选;不传则搜索全部类型 */
2152
+ type?: FeatureType;
2153
+ /** 期数 YYYYMM,可选;不传使用后端默认 */
2154
+ period?: string;
2155
+ /** 返回条数上限,默认 20 */
2156
+ limit?: number;
2157
+ /** 取消信号 */
2158
+ signal?: AbortSignal;
2159
+ }
2160
+ interface SearchResultItem {
2161
+ type: FeatureType;
2162
+ /** 全局唯一 UUID,用于 getGeometry */
2163
+ id: string;
2164
+ /** 业务代码,如 ZBAA / A593 */
2165
+ code: string;
2166
+ name?: string;
2167
+ name_chn?: string;
2168
+ }
2169
+ interface GeometryParams {
2170
+ /** 数据类型,必填(决定查询哪张表) */
2171
+ type: FeatureType;
2172
+ /** 唯一 UUID(来自搜索结果的 id),必填 */
2173
+ id: string;
2174
+ /** 期数 YYYYMM,可选 */
2175
+ period?: string;
2176
+ /** 取消信号 */
2177
+ signal?: AbortSignal;
2178
+ }
2179
+ /** 标准 GeoJSON Feature(点 / 线 / 面) */
2180
+ interface GeometryFeature {
2181
+ type: "Feature";
2182
+ geometry: {
2183
+ type: "Point" | "LineString" | "Polygon" | "MultiPolygon" | "MultiLineString" | "MultiPoint";
2184
+ coordinates: any;
2185
+ };
2186
+ properties: Record<string, any>;
2187
+ }
2188
+ /**
2189
+ * 综合搜索。返回候选列表(含 type / id(UUID) / code / name),不含坐标。
2190
+ * 拿到某条的完整几何请用 {@link getGeometry}。
2191
+ */
2192
+ declare function searchFeatures(baseUrl: string, auth: string | Record<string, string> | undefined, params: SearchParams, version?: string): Promise<SearchResultItem[]>;
2193
+ /**
2194
+ * 按 type + id(UUID) 获取完整几何。
2195
+ * 点→Point、面→Polygon、航路→整合后的完整 LineString。
2196
+ */
2197
+ declare function getFeatureGeometry(baseUrl: string, auth: string | Record<string, string> | undefined, params: GeometryParams, version?: string): Promise<GeometryFeature>;
2198
+ /**
2199
+ * 获取全部可用期数列表(YYYYMM),按倒序排列——最新一期在最前。
2200
+ */
2201
+ declare function getPeriods(baseUrl: string, apiKey?: string, signal?: AbortSignal, version?: string): Promise<string[]>;
2202
+ interface SelectFeatureOptions {
2203
+ isHighlight: boolean;
2204
+ highlightColor: string;
2205
+ fillOpacity: number;
2206
+ circleRadius: number;
2207
+ tolerance: number;
2208
+ multiSelect: boolean;
2209
+ lineWidth: number;
2210
+ onSelect: ((lngLat: {
2211
+ lng: number;
2212
+ lat: number;
2213
+ }, feature: any, selectedFeatures: any[]) => void) | null;
2214
+ onContextMenu: ((feature: any, properties: any) => void) | null;
2215
+ }
2216
+ declare class SelectFeature {
2217
+ constructor(map: Map);
2218
+ /**
2219
+ * 设置允许选择的图层ID列表。
2220
+ * @param layerIds 图层ID数组,传 null 或空数组表示所有图层可选。
2221
+ */
2222
+ setSelectLayers(layerIds: string[] | null): void;
2223
+ setOptions(options: Partial<SelectFeatureOptions>): void;
2224
+ enable(): void;
2225
+ disable(): void;
2226
+ removeSelectedFeatures(): void;
2227
+ /**
2228
+ * 只移除高亮图层和数据源,保留选中要素数组。
2229
+ * 用于关闭高亮显示但保留选中状态。
2230
+ */
2231
+ removeHighlightLayersOnly(): void;
2232
+ getSelected(): any[];
2233
+ _updateHighlightLayer(): void;
2234
+ _onClick(e: EngineTypes.MapMouseEvent): void;
2235
+ _onContextMenu(e: MouseEvent): boolean;
2236
+ }
2237
+ /**
2238
+ * @Author lw
2239
+ * @Description 通用线要素标注去重类
2240
+ * @Date 2025-10-27 09:30:00
2241
+ * @LastEditTime 2025-10-28 15:15:00
2242
+ * @LastEditors lw
2243
+ */
2244
+ interface LineLabelOptions {
2245
+ builtInKey: string;
2246
+ lineLayerId: string;
2247
+ lineLabelId: string;
2248
+ fieldList: string[];
2249
+ suffix?: string;
2250
+ }
2251
+ /**
2252
+ * 通用线要素标注去重类
2253
+ */
2254
+ declare class LineLabelOptimizer {
2255
+ constructor(map: EngineTypes.Map, callback: Function);
2256
+ get labelOptions(): LineLabelOptions;
2257
+ set labelOptions(options: LineLabelOptions);
2258
+ update(): void;
2259
+ remove(): void;
2260
+ }
2261
+ /**
2262
+ * 实现主题管理功能,包括应用主题样式、检查图层是否存在、应用图层样式、处理普通图层样式、处理数组类型的图层样式等
2263
+ * @param {EngineMap} map 地图实例
2264
+ * @returns {Theme}
2265
+ */
2266
+ declare class Theme {
2267
+ constructor(map: Map);
2268
+ /**
2269
+ * 检查图层是否存在
2270
+ * @param {string} layerId - 图层ID
2271
+ * @returns {boolean} 图层是否存在
2272
+ */
2273
+ layerExists: (layerId: string) => boolean;
2274
+ /**
2275
+ * 应用图层样式属性
2276
+ * @param {string} layerId - 图层ID
2277
+ * @param {Object} style - 样式对象,包含 paint 和 layout
2278
+ * @param {boolean} checkLayerExists - 是否检查图层存在性
2279
+ */
2280
+ applyLayerStyle(layerId: string, style: any, checkLayerExists?: boolean): void;
2281
+ /**
2282
+ * 处理普通图层样式(非数组类型)
2283
+ * @param {Object} customStyle - 自定义样式对象
2284
+ */
2285
+ handleNormalLayers(customStyle: any): void;
2286
+ /**
2287
+ * 处理数组类型的图层样式
2288
+ * @param {Object} customStyle - 自定义样式对象
2289
+ */
2290
+ handleArrayLayers(customStyle: any): void;
2291
+ /**
2292
+ * 应用自定义主题样式到地图
2293
+ * @param {Object} customStyle - 自定义样式配置对象
2294
+ * @throws {Error} 当参数无效时抛出错误
2295
+ */
2296
+ setStyle: (customStyle: any) => void;
2297
+ }
2298
+ /**
2299
+ * 风场帧描述(GFS 灰度 PNG,U/V 分量两张图)。
2300
+ * 参考数据源:/meteo/meteorology/listGribPng?type=WIND
2301
+ */
2302
+ interface WindFrame {
2303
+ /** 预报基准时间,如 "2026-07-01 23:00:00" */
2304
+ refTime: string;
2305
+ /** U 分量灰度 PNG 地址 */
2306
+ uUrl: string;
2307
+ /** V 分量灰度 PNG 地址 */
2308
+ vUrl: string;
2309
+ }
2310
+ interface WindOptions {
2311
+ /** 粒子数量,默认 8000 */
2312
+ numParticles?: number;
2313
+ /** 速度系数,默认 1.2 */
2314
+ speedFactor?: number;
2315
+ /** 灰度编码半量程(128=0,±range),默认 14 */
2316
+ dataRange?: number;
2317
+ }
2318
+ /** 风场接口尚未实现渲染,请勿作为可用绘制功能调用。 */
2319
+ declare class WindManager {
2320
+ constructor(map: Map, options?: WindOptions);
2321
+ /** 风场是否开启 */
2322
+ get visible(): boolean;
2323
+ /**
2324
+ * 开启风场并渲染指定帧。
2325
+ * @param frame U/V 分量帧;不传则由实现自行拉取最新一帧
2326
+ */
2327
+ open(frame?: WindFrame): void;
2328
+ /** 切换预报帧(时间轴) */
2329
+ setFrame(frame: WindFrame): void;
2330
+ /** 关闭风场并释放图层 */
2331
+ close(): void;
2332
+ }
2333
+ /**
2334
+ * 实现地图SDK功能,包括地图初始化、图层管理、GeoJSON管理、插件管理、事件管理等
2335
+ * @param {MapSDKOptions} options 地图初始化参数
2336
+ * @returns {MapSDK}
2337
+ */
2338
+ declare class MapSDK implements IMapSDK {
2339
+ map: Map;
2340
+ layerManager: ILayerManager;
2341
+ geoJSONManager: IGeoJSONManager;
2342
+ adsb: ADSB;
2343
+ notam: NOTAM;
2344
+ hover: HoverManager;
2345
+ clickObj: ClickManager;
2346
+ rasterManager: RasterManager;
2347
+ graticule: GraticuleManager;
2348
+ api: API;
2349
+ selector: SelectFeature;
2350
+ lineLabelOptimizer: LineLabelOptimizer;
2351
+ theme: Theme;
2352
+ /** 风场接口尚未实现渲染,请勿作为可用绘制功能调用。 */
2353
+ wind: WindManager;
2354
+ /** 初始化完成后 resolve,等同于 loadComplete 事件,但可以 await */
2355
+ readonly ready: Promise<void>;
2356
+ get globalConfig(): GlobalConfigManager;
2357
+ get absb(): ADSB;
2358
+ constructor(options: MapSDKOptions);
2359
+ /**
2360
+ * 设置地图中心点
2361
+ * @param center 中心点坐标
2362
+ * @returns void
2363
+ */
2364
+ setCenter(center: [
2365
+ number,
2366
+ number
2367
+ ]): void;
2368
+ setZoom(zoom: number): void;
2369
+ setPitch(pitch: number): void;
2370
+ setBearing(bearing: number): void;
2371
+ fitBounds(bounds: [
2372
+ [
2373
+ number,
2374
+ number
2375
+ ],
2376
+ [
2377
+ number,
2378
+ number
2379
+ ]
2380
+ ], options?: any): void;
2381
+ addBuiltInLayer(layerName: string, zindex: string): Promise<void>;
2382
+ removeBuiltInLayer(layerName: string): void;
2383
+ toggleBuiltInLayer(layerName: string): void;
2384
+ toggleLayer(layerName: string): void;
2385
+ showLayer(layerName: string): void;
2386
+ hideLayer(layerName: string): void;
2387
+ clickLayer(layerName: LayerRef, callback: (e: any) => void): void;
2388
+ getBuiltInLayers(): Object;
2389
+ isBuiltInLayerVisible(layerId: string): boolean;
2390
+ updateLayerStyle(layerId: string, style: StyleConfig): void;
2391
+ toggleFullScreen(state: boolean): void;
2392
+ setMapStyle(style: string | StyleSpecification, options?: {
2393
+ diff?: boolean;
2394
+ }): Promise<void>;
2395
+ setTheme(theme: string): void;
2396
+ restoreLandLayer(): void;
2397
+ addPoint(coordinates: [
2398
+ number,
2399
+ number
2400
+ ], properties?: Record<string, any>, style?: StyleConfig, id?: string): string;
2401
+ addLine(coordinates: [
2402
+ ], properties?: Record<string, any>, style?: StyleConfig, id?: string): string;
2403
+ addPolygon(coordinates: [
2404
+ ], properties?: Record<string, any>, style?: StyleConfig, id?: string): string;
2405
+ addGeoJSON(sourceId: string, geojson?: any, props?: GeoJSONSourceSpecification | null | undefined): any;
2406
+ createCircle(options: CircleOptions): Circle;
2407
+ createText(options: TextOptions): Text;
2408
+ createMarker(options: MarkerOptions): EnhancedMarker;
2409
+ createPolyline(options: PolylineOptions): Polyline;
2410
+ createPolygon(options: PolygonOptions): EnhancedPolygon;
2411
+ addLayer(layerConfig: LayerConfig): void;
2412
+ hoverLayer(layers: LayerRef, cb: (e: any) => void): void;
2413
+ hoverPopup(layerId: LayerRef, f: HtmlFunction): () => void;
2414
+ clickPopup(layerId: LayerRef, f: HtmlFunction): () => void;
2415
+ showLayers(layerIds: string[]): void;
2416
+ hideLayers(layerIds: string[]): void;
2417
+ /**
2418
+ * 按图层组开关可见性(aviation-chart 风格 API,与 addBuiltInLayer/
2419
+ * toggleBuiltInLayer 双轨等效)。
2420
+ *
2421
+ * 组名支持旧名(airspace/airline/…)与 0.1.x 别名(fir/segment/…)。
2422
+ */
2423
+ setLayerVisible(key: string, visible: boolean): void;
2424
+ /**
2425
+ * 改变中心、缩放、方位、俯仰和滚动的任意组合,使过渡动画沿着一条能唤起飞行感的曲线进行
2426
+ */
2427
+ flyTo(option: FlyToOptions, eventData?: any): void;
2428
+ on(event: string, listenerOrLayerId?: string | Function, listener?: Function): void;
2429
+ off(event: string, listenerOrLayerId?: string | Function, listener?: Function): void;
2430
+ getCenter(): [
2431
+ number,
2432
+ number
2433
+ ];
2434
+ getZoom(): number;
2435
+ getBounds(): [
2436
+ [
2437
+ number,
2438
+ number
2439
+ ],
2440
+ [
2441
+ number,
2442
+ number
2443
+ ]
2444
+ ];
2445
+ use(plugin: IPlugin): void;
2446
+ getPlugin<T extends IPlugin>(name: string): T | undefined;
2447
+ getPerformanceStats(): {
2448
+ visibleLayers: number;
2449
+ queuedLayers: number;
2450
+ lodEnabled: boolean;
2451
+ clusteringEnabled: boolean;
2452
+ lazyLoadingEnabled: boolean;
2453
+ };
2454
+ getErrorStats(): void;
2455
+ /**
2456
+ * 设置 / 切换期数。
2457
+ *
2458
+ * 切期不重建地图、不重加图层——只把 navdata 源的瓦片 URL 模板换成新期数,
2459
+ * 地图引擎 自动作废旧瓦片、拉取新瓦片,所有航图图层随之重绘。
2460
+ *
2461
+ * 保持同步调用(前端可直接 `sdk.setPeriod("202603")`,无需 await)。
2462
+ * 传 `{ validate: true }` 时会先用 {@link getPeriods} 校验期数是否存在,
2463
+ * 不存在则不切换,并通过 console.error + map "error" 事件上报(不抛异常,
2464
+ * 以保持同步契约)。
2465
+ *
2466
+ * 真正发生切换时(且非初始化)会触发 map "periodchange" 事件 `{ from, to }`。
2467
+ *
2468
+ */
2469
+ setPeriod(period: string, options?: {
2470
+ validate?: boolean;
2471
+ }): void;
2472
+ /**
2473
+ * 获取当前期数
2474
+ */
2475
+ getPeriod(): string | undefined;
2476
+ /**
2477
+ * 生成当前期数(格式:YYYYMM)
2478
+ */
2479
+ generateCurrentPeriod(): Promise<string>;
2480
+ /**
2481
+ * 综合搜索:按关键词(+可选类型)查询机场、航路点、VOR/NDB、空域、航路。
2482
+ * 返回候选列表(type / id(UUID) / code / name),不含坐标——完整几何用
2483
+ * {@link getGeometry} 按需拉取。接口受 X-Api-Key 保护,自动附带初始化的 apiKey。
2484
+ *
2485
+ */
2486
+ search(params: SearchParams): Promise<SearchResultItem[]>;
2487
+ /**
2488
+ * 按 type + id(UUID) 获取完整几何(点→Point、面→Polygon、航路→整合后的
2489
+ * 完整 LineString)。id 来自 {@link search} 结果。返回标准 GeoJSON Feature。
2490
+ *
2491
+ */
2492
+ getGeometry(params: GeometryParams): Promise<GeometryFeature>;
2493
+ /**
2494
+ * 获取全部可用期数列表(YYYYMM),按倒序排列——最新一期在最前。
2495
+ *
2496
+ */
2497
+ getPeriods(signal?: AbortSignal): Promise<string[]>;
2498
+ /**
2499
+ * 显示网格线
2500
+ */
2501
+ showGraticule(): void;
2502
+ /**
2503
+ * 隐藏网格线
2504
+ */
2505
+ hideGraticule(): void;
2506
+ /**
2507
+ * 切换网格线显示状态
2508
+ */
2509
+ toggleGraticule(): void;
2510
+ /**
2511
+ * 更新网格线配置
2512
+ */
2513
+ updateGraticuleConfig(config: Partial<GraticuleConfig>): void;
2514
+ /**
2515
+ * 获取网格线可见性状态
2516
+ */
2517
+ isGraticuleVisible(): boolean;
2518
+ /**
2519
+ * 获取地图边界
2520
+ */
2521
+ get showTileBoundaries(): boolean;
2522
+ set showTileBoundaries(value: boolean);
2523
+ /**
2524
+ * 启用线要素标注去重
2525
+ * @param lineLayerId 线要素图层ID
2526
+ * @param lineLabelId 标注图层ID
2527
+ * @param builtInKey 内置图层key
2528
+ * @param fieldList 用于标注去重的字段列表
2529
+ * @param suffix 去重后标注图层后缀
2530
+ */
2531
+ enableLineLabelDedup(lineLayerId: string, lineLabelId: string, builtInKey: string, fieldList?: string[], suffix?: string): void;
2532
+ /**
2533
+ * 禁用线要素标注去重,恢复原始标注
2534
+ */
2535
+ disableLineLabelDedup(): void;
2536
+ registerIcon(id: string, url: string, options?: StyleImageMetadata): Promise<void>;
2537
+ /**
2538
+ * 设置自定义样式配置
2539
+ * @param style 自定义样式配置
2540
+ */
2541
+ setStyle(style: object): void;
2542
+ destroy(): void;
2543
+ }
2544
+ /**
2545
+ * 图层组 → 物理图层 id 列表。图层组名沿用旧 SDK 命名(airspace/airline/…),
2546
+ * 物理 id 也沿用旧 id,按 id 对接的用户代码零影响。
2547
+ */
2548
+ declare const TYPEMAP: Record<string, string[]>;
2549
+ /**
2550
+ * 图层组默认可见性。初始化时先套用此表,用户传入的 `layers` 选项再覆盖。
2551
+ * 基础底图(background/landLayer/boundary)默认常开,用户仍可显式关闭。
2552
+ */
2553
+ declare const DEFAULT_LAYER_VISIBILITY: Record<string, boolean>;
2554
+ /** aviation-chart 0.1.x 组名别名 → 旧组名(setLayerVisible 双轨等效) */
2555
+ declare const GROUP_ALIASES: Record<string, string>;
2556
+ declare class PerformanceManager {
2557
+ constructor(options?: {
2558
+ lodEnabled?: boolean;
2559
+ clusteringEnabled?: boolean;
2560
+ lazyLoadingEnabled?: boolean;
2561
+ });
2562
+ setLODEnabled(enabled: boolean): void;
2563
+ setLayerLODConfig(layerId: string, config: LODConfig): void;
2564
+ getLayerLODConfig(layerId: string): LODConfig | undefined;
2565
+ setClusteringEnabled(enabled: boolean): void;
2566
+ setClusteringConfig(layerId: string, config: ClusteringConfig): void;
2567
+ getClusteringConfig(layerId: string): ClusteringConfig | undefined;
2568
+ setLazyLoadingEnabled(enabled: boolean): void;
2569
+ addToLazyLoadQueue(layerId: string, priority?: number): void;
2570
+ shouldLayerBeVisible(layerId: string, currentZoom: number): boolean;
2571
+ getPerformanceStats(): {
2572
+ visibleLayers: number;
2573
+ queuedLayers: number;
2574
+ lodEnabled: boolean;
2575
+ clusteringEnabled: boolean;
2576
+ lazyLoadingEnabled: boolean;
2577
+ };
2578
+ optimizeLayerConfig(layer: LayerConfig, currentZoom: number): LayerConfig;
2579
+ destroy(): void;
2580
+ }
2581
+ /**
2582
+ */
2583
+ declare class LayerManager implements ILayerManager {
2584
+ constructor(map: Map, performanceManager?: PerformanceManager, customLayerStyles?: Record<string, any>);
2585
+ addLayer(layer: LayerConfig): string;
2586
+ removeLayer(layerId: string): boolean;
2587
+ updateLayer(layerId: string, updates: Partial<LayerConfig>): boolean;
2588
+ showLayer(layerId: string): boolean;
2589
+ hideLayer(layerId: string): boolean;
2590
+ toggleLayer(layerId: string): boolean;
2591
+ getLayer(layerId: string): LayerConfig | undefined;
2592
+ getAllLayers(): LayerConfig[];
2593
+ batchUpdateLayers(updates: Array<{
2594
+ id: string;
2595
+ updates: Partial<LayerConfig>;
2596
+ }>): void;
2597
+ batchShowLayers(layerIds: string[]): void;
2598
+ batchHideLayers(layerIds: string[]): void;
2599
+ /**
2600
+ * 添加内置图层
2601
+ * @param layerName 图层名称 或 图层名称数组
2602
+ * @param zindex 图层层级
2603
+ * @returns
2604
+ * 内置图层会合并,如:空域分为空域区域和空域区域名称
2605
+ */
2606
+ addBuiltInLayer(layerName: string | Array<string>, zindex: string): Promise<void>;
2607
+ removeBuiltInLayer(layerName: string): boolean;
2608
+ getBuiltInLayers(): typeof TYPEMAP;
2609
+ isBuiltInLayerVisible(layerId: string): boolean;
2610
+ setLODEnabled(enabled: boolean): void;
2611
+ setLayerLODConfig(layerId: string, config: LODConfig): void;
2612
+ }
2613
+ /**
2614
+ * 实现GeoJSON功能,包括添加点、线、面、GeoJSON数据等
2615
+ * @param {EngineMap} map 地图实例
2616
+ * @param {PerformanceManager} performanceManager 性能管理器,可选
2617
+ * @returns {GeoJSONManager}
2618
+ */
2619
+ declare class GeoJSONManager implements IGeoJSONManager {
2620
+ constructor(map: Map, performanceManager?: PerformanceManager);
2621
+ /**
2622
+ * 添加点要素
2623
+ * @param {Array} coordinates 坐标
2624
+ * @param {Object} properties 属性
2625
+ * @param {Object} style 样式
2626
+ * @param {String} id 图层要素id,可选
2627
+ * @returns {String} featureId,自动生成的图层要素id,可用于删除、更新、获取要素
2628
+ */
2629
+ addPoint(coordinates: [
2630
+ number,
2631
+ number
2632
+ ], properties?: Record<string, any>, style?: StyleConfig, id?: string): string;
2633
+ /**
2634
+ * 添加线要素
2635
+ * @param {Array<Array<number, number>>} coordinates 坐标
2636
+ * @param {Object} properties 属性
2637
+ * @param {Object} style 样式
2638
+ * @param {String} id 图层要素id,可选
2639
+ * @returns {String} featureId,自动生成的图层要素id,可用于删除、更新、获取要素
2640
+ */
2641
+ addLine(coordinates: [
2642
+ number,
2643
+ number
2644
+ ][], properties?: Record<string, any>, style?: StyleConfig, id?: string): string;
2645
+ /**
2646
+ * 添加面要素
2647
+ * @param {Array<Array<Array<number, number>>>} coordinates 坐标
2648
+ * @param {Object} properties 属性
2649
+ * @param {Object} style 样式
2650
+ * @param {String} id 图层要素id,可选
2651
+ * @returns {String} featureId,自动生成的图层要素id,可用于删除、更新、获取要素
2652
+ */
2653
+ addPolygon(coordinates: [
2654
+ number,
2655
+ number
2656
+ ][][], properties?: Record<string, any>, style?: StyleConfig, id?: string): string;
2657
+ /**
2658
+ * 添加GeoJSON数据
2659
+ * @param {String} sourceId 数据源id
2660
+ * @param {GeoJSON | string | null | undefined} geojson GeoJSON数据
2661
+ * @param {GeoJSONSourceSpecification | null | undefined} props 数据源配置
2662
+ * @returns {any} 数据源
2663
+ */
2664
+ addGeoJSON(sourceId: string, geojson?: GeoJSON | string | null | undefined, props?: GeoJSONSourceSpecification | null | undefined): any;
2665
+ /**
2666
+ * 删除图层要素
2667
+ * @param {String} id 图层要素id
2668
+ * @returns {boolean} 是否删除成功
2669
+ */
2670
+ removeFeature(id: string): boolean;
2671
+ /**
2672
+ * 根据id更新图层要素
2673
+ * @param {String} id 图层要素id
2674
+ * @param {Partial<GeoJSONFeature>} updates 更新内容
2675
+ * @returns {boolean} 是否更新成功
2676
+ */
2677
+ updateFeature(id: string, updates: Partial<GeoJSONFeature>): boolean;
2678
+ /**
2679
+ * 删除全部的图层要素
2680
+ * @returns {void}
2681
+ */
2682
+ clearAllFeatures(): void;
2683
+ /**
2684
+ * 根据id获取图层要素
2685
+ * @param {String} id 图层要素id
2686
+ * @returns {GeoJSONFeature | undefined} 图层要素
2687
+ */
2688
+ getFeature(id: string): GeoJSONFeature | undefined;
2689
+ /**
2690
+ * 获取全部的图层要素
2691
+ * @returns {GeoJSONFeature[]} 全部的图层要素
2692
+ */
2693
+ getAllFeatures(): GeoJSONFeature[];
2694
+ setClusteringEnabled(enabled: boolean): void;
2695
+ setClusteringConfig(layerId: string, config: ClusteringConfig): void;
2696
+ }
2697
+ /**
2698
+ * 实现错误管理功能,包括创建错误、添加错误处理器、移除错误处理器、处理错误、记录错误历史、获取错误历史、清空错误历史、获取错误统计、设置钩子、移除钩子等
2699
+ * @returns {ErrorManager}
2700
+ */
2701
+ declare class ErrorManager {
2702
+ constructor();
2703
+ /**
2704
+ * 创建SDK错误
2705
+ */
2706
+ createError(message: string, code: string, details?: any, recoverable?: boolean): SDKError;
2707
+ /**
2708
+ * 添加错误处理器
2709
+ */
2710
+ addErrorHandler(handler: ErrorHandler): void;
2711
+ /**
2712
+ * 移除错误处理器
2713
+ */
2714
+ removeErrorHandler(handler: ErrorHandler): void;
2715
+ /**
2716
+ * 处理错误
2717
+ */
2718
+ handleError(error: SDKError): Promise<void>;
2719
+ /**
2720
+ * 获取错误历史
2721
+ */
2722
+ getErrorHistory(): SDKError[];
2723
+ /**
2724
+ * 清空错误历史
2725
+ */
2726
+ clearErrorHistory(): void;
2727
+ /**
2728
+ * 获取错误统计
2729
+ */
2730
+ getErrorStats(): {
2731
+ total: number;
2732
+ recoverable: number;
2733
+ nonRecoverable: number;
2734
+ };
2735
+ /**
2736
+ * 设置钩子
2737
+ */
2738
+ addHook(hookName: string, callback: HookCallback): void;
2739
+ /**
2740
+ * 移除钩子
2741
+ */
2742
+ removeHook(hookName: string, callback: HookCallback): void;
2743
+ /**
2744
+ * 触发钩子
2745
+ */
2746
+ triggerHook(hookName: string, context: any): Promise<void>;
2747
+ /**
2748
+ * 销毁错误管理器
2749
+ */
2750
+ destroy(): void;
2751
+ }
2752
+ /**
2753
+ * 实现插件管理功能,包括注册插件、获取插件、卸载插件等
2754
+ * @param {IMapSDK} sdk 地图实例
2755
+ * @returns {PluginManager}
2756
+ */
2757
+ declare class PluginManager {
2758
+ constructor(sdk: IMapSDK);
2759
+ /**
2760
+ * 注册插件
2761
+ */
2762
+ use(plugin: IPlugin): void;
2763
+ /**
2764
+ * 获取插件
2765
+ */
2766
+ getPlugin<T extends IPlugin>(name: string): T | undefined;
2767
+ /**
2768
+ * 获取所有插件
2769
+ */
2770
+ getAllPlugins(): IPlugin[];
2771
+ /**
2772
+ * 检查插件是否存在
2773
+ */
2774
+ hasPlugin(name: string): boolean;
2775
+ /**
2776
+ * 卸载插件
2777
+ */
2778
+ uninstallPlugin(name: string): boolean;
2779
+ /**
2780
+ * 卸载所有插件
2781
+ */
2782
+ uninstallAllPlugins(): void;
2783
+ /**
2784
+ * 获取插件统计信息
2785
+ */
2786
+ getPluginStats(): {
2787
+ total: number;
2788
+ names: string[];
2789
+ };
2790
+ /**
2791
+ * 销毁插件管理器
2792
+ */
2793
+ destroy(): void;
2794
+ }
2795
+ declare class MeasurePlugin implements IPlugin {
2796
+ name: string;
2797
+ version: string;
2798
+ install(sdk: IMapSDK): void;
2799
+ uninstall(sdk: IMapSDK): void;
2800
+ /**
2801
+ * 启用测量功能
2802
+ */
2803
+ enable(mode: 'distance' | 'area'): void;
2804
+ /**
2805
+ * 禁用测量功能
2806
+ */
2807
+ disable(): void;
2808
+ /**
2809
+ * 获取插件状态
2810
+ */
2811
+ getStatus(): {
2812
+ isActive: boolean;
2813
+ mode: string | null;
2814
+ pointsCount: number;
2815
+ };
2816
+ }
2817
+ declare class DrawPlugin implements IPlugin {
2818
+ name: string;
2819
+ version: string;
2820
+ geoman: DrawingController | null;
2821
+ install(sdk: IMapSDK): void;
2822
+ uninstall(): void;
2823
+ enableDrag(): void;
2824
+ disableDrag(): void;
2825
+ enableEdit(): void;
2826
+ disableEdit(): void;
2827
+ }
2828
+ declare namespace CHART_THEMES {
2829
+ namespace light {
2830
+ let id: string;
2831
+ let label: string;
2832
+ let background: string;
2833
+ }
2834
+ namespace standard {
2835
+ let id_1: string;
2836
+ export { id_1 as id };
2837
+ let label_1: string;
2838
+ export { label_1 as label };
2839
+ let background_1: string;
2840
+ export { background_1 as background };
2841
+ }
2842
+ namespace dark {
2843
+ let id_2: string;
2844
+ export { id_2 as id };
2845
+ let label_2: string;
2846
+ export { label_2 as label };
2847
+ let background_2: string;
2848
+ export { background_2 as background };
2849
+ }
2850
+ namespace dusk {
2851
+ let id_3: string;
2852
+ export { id_3 as id };
2853
+ let label_3: string;
2854
+ export { label_3 as label };
2855
+ let background_3: string;
2856
+ export { background_3 as background };
2857
+ }
2858
+ namespace sectional {
2859
+ let id_4: string;
2860
+ export { id_4 as id };
2861
+ let label_4: string;
2862
+ export { label_4 as label };
2863
+ let background_4: string;
2864
+ export { background_4 as background };
2865
+ }
2866
+ }
2867
+ declare namespace LAYER_GROUPS {
2868
+ export let adiz: string[];
2869
+ export let airspace: string[];
2870
+ export let restricted: string[];
2871
+ let controlled_1: string[];
2872
+ export { controlled_1 as controlled };
2873
+ export let airline: string[];
2874
+ export let waypointOffAirway: string[];
2875
+ let vor_1: string[];
2876
+ export { vor_1 as vor };
2877
+ let ndb_1: string[];
2878
+ export { ndb_1 as ndb };
2879
+ let airport_1: string[];
2880
+ export { airport_1 as airport };
2881
+ }
2882
+ declare namespace LAYER_LABELS {
2883
+ let adiz_1: string;
2884
+ export { adiz_1 as adiz };
2885
+ let airspace_1: string;
2886
+ export { airspace_1 as airspace };
2887
+ let restricted_1: string;
2888
+ export { restricted_1 as restricted };
2889
+ let controlled_2: string;
2890
+ export { controlled_2 as controlled };
2891
+ let airline_1: string;
2892
+ export { airline_1 as airline };
2893
+ let waypointOffAirway_1: string;
2894
+ export { waypointOffAirway_1 as waypointOffAirway };
2895
+ let vor_2: string;
2896
+ export { vor_2 as vor };
2897
+ let ndb_2: string;
2898
+ export { ndb_2 as ndb };
2899
+ let airport_2: string;
2900
+ export { airport_2 as airport };
2901
+ }
2902
+ export { API, MapSDK as AviationChart, BuiltInLayer, CHART_THEMES, Circle, CircleOptions, ClusteringConfig, DEFAULT_LAYER_VISIBILITY, DrawPlugin, EnhancedMarker, EnhancedPolygon, ErrorHandler, ErrorManager, EventListener, FeatureType, GROUP_ALIASES, GeoJSONCollection, GeoJSONFeature, GeoJSONManager, GeometryFeature, GeometryParams, GlobalConfigManager, HookCallback, HookContext, HookRegistry, IGeoJSONManager, ILayerManager, IMapSDK, IPlugin, LAYER_GROUPS, LAYER_LABELS, LODConfig, LayerConfig, LayerManager, LineType, MapEvent, MapSDK, MapSDKOptions, MarkerOptions, MeasurePlugin, NOTAM, PerformanceManager, PluginManager, PolygonOptions, Polyline, PolylineOptions, SDKError, SearchParams, SearchResultItem, StrokeLineType, StyleConfig, TYPEMAP, Text, TextOptions, WindFrame, WindManager, WindOptions, MapSDK as default, getFeatureGeometry, getPeriods, globalConfig, searchFeatures };
2903
+ ```