@tianditu/core 0.1.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.
Files changed (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +68 -0
  3. package/dist/index.d.mts +662 -0
  4. package/dist/index.mjs +1617 -0
  5. package/package.json +53 -0
  6. package/types/base.d.ts +97 -0
  7. package/types/control/control.d.ts +55 -0
  8. package/types/control/copyright.d.ts +30 -0
  9. package/types/control/index.d.ts +6 -0
  10. package/types/control/mapType.d.ts +63 -0
  11. package/types/control/overviewMap.d.ts +64 -0
  12. package/types/control/scale.d.ts +17 -0
  13. package/types/control/zoom.d.ts +24 -0
  14. package/types/global.d.mts +2 -0
  15. package/types/index.d.ts +19 -0
  16. package/types/layer/gridlineLayer.d.ts +33 -0
  17. package/types/layer/index.d.ts +4 -0
  18. package/types/layer/tdt.d.ts +14 -0
  19. package/types/layer/tileLayer.d.ts +78 -0
  20. package/types/layer/wms.d.ts +24 -0
  21. package/types/map.d.ts +290 -0
  22. package/types/militarySymbols/base.d.ts +71 -0
  23. package/types/militarySymbols/control.d.ts +24 -0
  24. package/types/militarySymbols/entities.d.ts +547 -0
  25. package/types/militarySymbols/index.d.ts +4 -0
  26. package/types/militarySymbols/tools.d.ts +191 -0
  27. package/types/modular.d.ts +258 -0
  28. package/types/mousetool/circleTool.d.ts +32 -0
  29. package/types/mousetool/coordinatePickup.d.ts +28 -0
  30. package/types/mousetool/index.d.ts +8 -0
  31. package/types/mousetool/markTool.d.ts +40 -0
  32. package/types/mousetool/mousetool.d.ts +28 -0
  33. package/types/mousetool/paintBrushTool.d.ts +23 -0
  34. package/types/mousetool/polygonTool.d.ts +47 -0
  35. package/types/mousetool/polylineTool.d.ts +47 -0
  36. package/types/mousetool/rectangleTool.d.ts +28 -0
  37. package/types/overlay/circle.d.ts +67 -0
  38. package/types/overlay/cloudMarkerCollection.d.ts +50 -0
  39. package/types/overlay/contextMenu.d.ts +75 -0
  40. package/types/overlay/icon.d.ts +33 -0
  41. package/types/overlay/index.d.ts +13 -0
  42. package/types/overlay/infowindow.d.ts +59 -0
  43. package/types/overlay/label.d.ts +53 -0
  44. package/types/overlay/marker.d.ts +50 -0
  45. package/types/overlay/markerClusterer.d.ts +103 -0
  46. package/types/overlay/overlay.d.ts +109 -0
  47. package/types/overlay/polygon.d.ts +59 -0
  48. package/types/overlay/polyline.d.ts +47 -0
  49. package/types/overlay/rectangle.d.ts +57 -0
  50. package/types/overlay/svg.d.ts +19 -0
  51. package/types/service/administrativeDivision.d.ts +48 -0
  52. package/types/service/busLineSearch.d.ts +89 -0
  53. package/types/service/dataSources.d.ts +30 -0
  54. package/types/service/drivingRoute.d.ts +135 -0
  55. package/types/service/geocoder.d.ts +47 -0
  56. package/types/service/geolocation.d.ts +39 -0
  57. package/types/service/index.d.ts +9 -0
  58. package/types/service/localCity.d.ts +24 -0
  59. package/types/service/localSearch.d.ts +178 -0
  60. package/types/service/transitRoute.d.ts +132 -0
@@ -0,0 +1,662 @@
1
+ import "../types/global.d.mts";
2
+ //#region src/events.d.ts
3
+ /**
4
+ * 天地图事件对象的事件桥:包装 addEventListener/removeEventListener,
5
+ * 记录全部监听器以便随会话销毁统一移除。
6
+ */
7
+ interface EventTargetLike<E> {
8
+ addEventListener<K extends keyof E>(event: K, handler: E[K]): void;
9
+ removeEventListener<K extends keyof E>(event: K, handler: E[K]): void;
10
+ }
11
+ declare class EventBridge<E> {
12
+ private readonly target;
13
+ private readonly listeners;
14
+ constructor(target: EventTargetLike<E>);
15
+ /** 注册监听器,返回解绑函数 */
16
+ on<K extends keyof E>(event: K, handler: E[K]): () => void;
17
+ off<K extends keyof E>(event: K, handler: E[K]): void;
18
+ /** 移除全部经由本桥注册的监听器 */
19
+ destroy(): void;
20
+ }
21
+ /**
22
+ * 以宽松事件签名挂接命名事件集。SDK 侧(Mousetool/TileLayer 等)的事件
23
+ * 方法为泛型签名(keyof E),跨实体统一挂接时按宽签名收口;
24
+ * 目标缺少事件 API 时静默跳过。
25
+ */
26
+ declare function bindEventNames(target: unknown, names: readonly string[], dispatch: (name: string, event: unknown) => void): () => void;
27
+ //#endregion
28
+ //#region src/compact.d.ts
29
+ /**
30
+ * SDK 构造参数对显式 undefined 与字段默认不等价(如控件 options 携带
31
+ * position: undefined 时 addControl 直接报错),构造前统一剔除。
32
+ */
33
+ declare function compact<T extends object>(options: T): T;
34
+ //#endregion
35
+ //#region src/loader.d.ts
36
+ /**
37
+ * 天地图 JS API 的幂等加载器。
38
+ *
39
+ * 加载流程:fetch 主脚本文本 → 预填组件包缓存 → 内联执行。预填的原因:
40
+ * SDK 主脚本会并行加载组件包(localStorage 无缓存时经 XHR 乱序执行),
41
+ * 而包间存在依赖(如 military.js 依赖 components.js 的 Tool),乱序时
42
+ * 依赖包执行中断、包内类整体丢失;将组件包先按序写入 localStorage 后,
43
+ * SDK 检查缓存命中即同步顺序执行,从源头规避竞态。预填失败或组件包
44
+ * 仍缺失时(隐私模式、官方改版等),按哨兵检测补载兜底。
45
+ *
46
+ * SDK 挂载在全局 `window.T` 上且无卸载途径,以模块级 Promise 缓存保证
47
+ * 并发调用共享同一次加载,失败时重置缓存以便重试。
48
+ */
49
+ interface LoadTdtOptions {
50
+ /** 开发者密钥(tk) */
51
+ tk: string;
52
+ /** SDK 版本,默认 "4.0" */
53
+ version?: string;
54
+ /** SDK 地址前缀,默认官方地址 */
55
+ baseURL?: string;
56
+ }
57
+ declare function loadTdt(options: LoadTdtOptions): Promise<typeof T>;
58
+ /**
59
+ * 构造就绪守卫:SDK 扩展类构造过早会抛 "is not a constructor",此类
60
+ * 时序错误按固定间隔重试直至成功;超时抛出最后一次的真实错误,其余
61
+ * 错误立即抛出。
62
+ */
63
+ declare function createWhenReady<T>(create: () => T, timeout?: number): Promise<T>;
64
+ //#endregion
65
+ //#region src/session.d.ts
66
+ /**
67
+ * 地图会话:一个容器元素内 `T.Map` 实例的完整生命周期。
68
+ * 天地图 4.0 没有正规的销毁 API,destroy 做的是尽最大努力的资源回收。
69
+ */
70
+ interface MapSession {
71
+ map: T.Map;
72
+ el: HTMLElement;
73
+ /** 地图事件桥,随 destroy 统一解绑 */
74
+ events: EventBridge<T.MapEvents>;
75
+ /** 仅改中心:SDK 无 setCenter,以当前级别 centerAndZoom 实现 */
76
+ setCenter(center: T.LngLat | [number, number]): void;
77
+ destroy(): void;
78
+ }
79
+ /** 官方示例通用的默认中心(北京)与级别 */
80
+ declare const DEFAULT_CENTER: [number, number];
81
+ interface CreateMapSessionOptions {
82
+ tk: string;
83
+ version?: string;
84
+ baseURL?: string;
85
+ /** 地图投影 */
86
+ projection?: string;
87
+ minZoom?: number;
88
+ maxZoom?: number;
89
+ maxBounds?: T.LngLatBounds;
90
+ /** 初始中心点,允许以 [lng, lat] 数组表达;不传时回退北京,locate 开启时定位用户位置(计入 JavaScriptApi 配额) */
91
+ center?: T.LngLat | [number, number];
92
+ /**
93
+ * center 不传时的定位方式;默认 false(回退北京,零定位调用)。
94
+ * - "geolocation":仅浏览器定位(触发授权请求、高精度)
95
+ * - "ip":仅官方 IP 定位(城市级)
96
+ * - "auto" 或 true:优先浏览器定位,失败回退 IP 定位
97
+ */
98
+ locate?: boolean | "geolocation" | "ip" | "auto";
99
+ zoom?: number;
100
+ }
101
+ declare function createMapSession(el: HTMLElement, options: CreateMapSessionOptions): Promise<MapSession>;
102
+ declare function toLngLat(value: T.LngLat | [number, number]): T.LngLat;
103
+ declare function toLngLats(value: Array<T.LngLat | [number, number]>): T.LngLat[];
104
+ //#endregion
105
+ //#region src/props-sync.d.ts
106
+ /**
107
+ * props-sync 引擎:把响应式 props diff 成命令式 setter 调用。
108
+ * 与具体框架解耦,仅依赖 @vue/reactivity 的 effect(watch 属于
109
+ * runtime-core,这里用 effect 自行实现等效语义),供各框架适配层复用。
110
+ */
111
+ type SyncDef<T, P> = { [K in keyof P]?: (target: T, value: P[K], prev: P[K] | undefined) => void; };
112
+ /**
113
+ * 跟踪 target 与 props 两个响应式源:props 变化时按 key 浅比较后调用对应
114
+ * setter;首次执行或 target 就绪(从未就绪变为就绪)时对所有 key 做一次
115
+ * 全量应用(skipInitialApply 为 true 时跳过,适用于构造时已携带全部
116
+ * props 的实例,避免冗余 setter 调用)。返回 stop 函数,由适配层在卸载时调用。
117
+ */
118
+ declare function createPropsSync<T, P extends object>(target: () => T | undefined, props: () => P, defs: SyncDef<T, P>, options?: {
119
+ skipInitialApply?: boolean;
120
+ }): () => void;
121
+ //#endregion
122
+ //#region src/map.d.ts
123
+ /**
124
+ * Map 类的官方事件与交互开关,清单以官方 Map 文档页为准。
125
+ * 文档外的事件(如 dblclick/mousemove 等 SDK 内部事件)不进直发表,
126
+ * 可经 map 会话的事件桥命令式挂接。
127
+ */
128
+ declare const MAP_EVENT_NAMES: readonly ["click", "contextmenu", "mouseover", "movestart", "moveend", "zoomend", "removeoverlay", "removecontrol", "dragstart", "dragend", "layerremove", "resize", "touchstart", "touchend"];
129
+ interface MapInteractionOptions {
130
+ dragging?: boolean;
131
+ scrollWheelZoom?: boolean;
132
+ doubleClickZoom?: boolean;
133
+ keyboard?: boolean;
134
+ inertia?: boolean;
135
+ continuousZoom?: boolean;
136
+ pinchToZoom?: boolean;
137
+ autoResize?: boolean;
138
+ }
139
+ /** 初始化时一次性应用交互开关;未配置的项保持 SDK 默认(启用) */
140
+ declare function applyMapInteractions(map: T.Map, options: MapInteractionOptions): void;
141
+ //#endregion
142
+ //#region src/overlay.d.ts
143
+ /**
144
+ * 覆盖物的挂载编排。天地图覆盖物有两种去向:直接上屏(map.addOverLay)
145
+ * 或加入点聚合(collector),由挂载上下文表达;MarkerClusterer 等非常规
146
+ * 收尾经 attach/detach 钩子覆盖。
147
+ */
148
+ /** 聚合收集器(MarkerClusterer 提供给内部 Marker) */
149
+ interface OverlayCollector {
150
+ addMarker(marker: T.Marker): void;
151
+ removeMarker(marker: T.Marker): void;
152
+ }
153
+ interface OverlayMountContext {
154
+ map: T.Map;
155
+ /** 存在时覆盖物加入聚合而非直接上屏 */
156
+ collector?: OverlayCollector;
157
+ }
158
+ interface OverlayMountSpec<P extends object, O> {
159
+ /** 响应式 props getter(框架适配层传入) */
160
+ props: () => P;
161
+ /** props diff → 实例 setter */
162
+ sync?: SyncDef<O, P>;
163
+ /** SDK 原生事件名 */
164
+ events?: readonly string[];
165
+ dispatch: (name: string, event: unknown) => void;
166
+ /** 构造实例;上屏由 attach 统一编排 */
167
+ create(ctx: OverlayMountContext): O;
168
+ /** 默认:有 collector 走 addMarker,否则 addOverLay;this: void 允许适配层直接传递 def 钩子引用 */
169
+ attach?: (this: void, instance: O, ctx: OverlayMountContext) => void;
170
+ /** 默认:有 collector 走 removeMarker,否则 removeOverLay */
171
+ detach?: (this: void, instance: O, ctx: OverlayMountContext) => void;
172
+ }
173
+ interface OverlayHandle<O> {
174
+ readonly instance: O;
175
+ readonly context: OverlayMountContext;
176
+ /** 停同步、解绑事件并卸载实例 */
177
+ destroy(): void;
178
+ }
179
+ declare function mountOverlay<P extends object, O>(ctx: OverlayMountContext, spec: OverlayMountSpec<P, O>): OverlayHandle<O>;
180
+ //#endregion
181
+ //#region src/infoWindow.d.ts
182
+ /**
183
+ * 信息窗的纯 SDK 编排(对照官方 InfoWindow/Map/Marker 文档页):
184
+ * 打开是宿主方法(map.openInfoWindow(win, lnglat) / marker.openInfoWindow(win)),
185
+ * 关闭是窗方法(closeInfoWindow);内容容器为 DOM 时由本层创建,
186
+ * 框架适配层可将其作为渲染目标。
187
+ */
188
+ interface InfoWindowSpec {
189
+ /** 窗体内容:HTML 字符串或容器元素;默认创建空 div 供适配层渲染 */
190
+ content?: string | HTMLElement;
191
+ minWidth?: number;
192
+ maxWidth?: number;
193
+ maxHeight?: number;
194
+ autoPan?: boolean;
195
+ closeButton?: boolean;
196
+ offset?: T.Point;
197
+ autoPanPadding?: T.Point;
198
+ closeOnClick?: boolean;
199
+ }
200
+ type InfoWindowHost = T.Map | T.Marker;
201
+ interface InfoWindowHandle {
202
+ readonly win: T.InfoWindow;
203
+ /** content 为 DOM 时返回该容器,否则返回窗体内容容器 */
204
+ readonly container: HTMLElement;
205
+ /** 在宿主上打开;宿主为 Map 且未传坐标时取地图中心 */
206
+ openOn(host: InfoWindowHost, lnglat?: T.LngLat | [number, number]): void;
207
+ close(): void;
208
+ isOpen(): boolean;
209
+ /** 解绑事件;窗体本身由 SDK 管理 */
210
+ destroy(): void;
211
+ }
212
+ declare const INFO_WINDOW_EVENT_NAMES: readonly ["open", "close", "clickclose"];
213
+ declare function createInfoWindow(spec: InfoWindowSpec, dispatch: (name: (typeof INFO_WINDOW_EVENT_NAMES)[number], event: unknown) => void): InfoWindowHandle;
214
+ //#endregion
215
+ //#region src/tools.d.ts
216
+ /**
217
+ * 地图工具(Mousetool 体系及 CoordinatePickup)的协议与生命周期编排。
218
+ *
219
+ * Mousetool 基类以 open/close 开关并暴露泛型事件签名;CoordinatePickup
220
+ * 以 addEvent/removeEvent 开关且无事件监听,因此协议只约定开关动作,
221
+ * 事件按宽松签名挂接。
222
+ */
223
+ /** 工具实例的开关协议 */
224
+ interface ToolLike {
225
+ open?(): unknown;
226
+ close?(): unknown;
227
+ addEvent?(): unknown;
228
+ removeEvent?(): unknown;
229
+ }
230
+ interface ToolMountOptions {
231
+ map: T.Map;
232
+ create(): ToolLike;
233
+ /** 需要挂接的 SDK 原生事件名 */
234
+ events?: readonly string[];
235
+ /** 事件分发回调(事件名 + 原生事件对象) */
236
+ dispatch: (name: string, event: unknown) => void;
237
+ /** 默认调用 tool.open()(Mousetool 语义);this: void 允许适配层直接传递 def 钩子引用 */
238
+ activate?: (this: void, tool: ToolLike) => void;
239
+ deactivate?: (this: void, tool: ToolLike) => void;
240
+ }
241
+ interface ToolSession {
242
+ readonly tool: ToolLike;
243
+ setActive(active: boolean): void;
244
+ /** 解绑事件并关闭工具;不清除工具已绘制的图形(属于用户数据) */
245
+ destroy(): void;
246
+ }
247
+ declare function mountTool(options: ToolMountOptions): ToolSession;
248
+ //#endregion
249
+ //#region src/layer.d.ts
250
+ /**
251
+ * 瓦片图层的挂载与事件编排。图层构造(TileLayer/TileLayerWMS/GridlineLayer)
252
+ * 由调用方完成,此处统一处理上屏、事件挂接与卸载。
253
+ */
254
+ declare const TILE_LAYER_EVENT_NAMES: readonly ["loading", "load", "tileloadstart", "tileload", "tileunload", "tileerror"];
255
+ interface TileLayerMountOptions {
256
+ map: T.Map;
257
+ layer: T.TileLayer;
258
+ /** 默认为全部瓦片图层事件 */
259
+ events?: readonly string[];
260
+ dispatch: (name: string, event: unknown) => void;
261
+ }
262
+ /** 挂接事件并上屏,返回卸载函数(解绑事件 + removeLayer) */
263
+ declare function mountTileLayer(options: TileLayerMountOptions): () => void;
264
+ //#endregion
265
+ //#region src/defs/types.d.ts
266
+ /**
267
+ * 框架无关的组件定义层类型。每个组件一份纯数据定义(props 形状、SDK 构造、
268
+ * sync、事件表),Vue 适配层与 Web Components 适配层各自消费同一份定义,
269
+ * 保证两个适配层一对一对应且共享逻辑只写一份。
270
+ *
271
+ * props 形状 P 为「已解析的 JS 值」形态(如 [number, number]、T.IconOptions);
272
+ * attribute 字符串的解析由 PropDef.converter 声明,响应式追踪由各适配层实现。
273
+ */
274
+ /** vue 运行时支持的构造器类型子集 */
275
+ type PropTypeConstructor = BooleanConstructor | StringConstructor | NumberConstructor | ArrayConstructor | ObjectConstructor;
276
+ interface PropDef<P = unknown> {
277
+ /** vue 运行时类型 */
278
+ type?: PropTypeConstructor;
279
+ required?: boolean;
280
+ default?: P | (() => P);
281
+ /**
282
+ * WC attribute 名(kebab-case)。省略 = JS-only property,用于 T.LayerGroup
283
+ * 等不可序列化的 SDK 实例。converter 未声明时按 type 走内建转换
284
+ * (Boolean 为 presence 语义:attribute 存在即 true)。
285
+ */
286
+ attribute?: string;
287
+ /** attribute 字符串 → 属性值;坐标、JSON 等复杂形态在此声明 */
288
+ converter?: (value: string) => P;
289
+ /** 变更是否反射回 attribute(仅 open/active 等布尔状态需要) */
290
+ reflect?: boolean;
291
+ }
292
+ type PropDefs<P extends object> = { [K in keyof P]: PropDef<P[K]>; };
293
+ /** create 收到的挂载上下文(构造 SDK 实例可能需要 map,如 MarkerClusterer) */
294
+ interface DefCreateContext {
295
+ map: T.Map;
296
+ }
297
+ /** 覆盖物定义(Marker/Polyline/MarkerClusterer/LayerGroup 等) */
298
+ interface OverlayDef<P extends object, O> {
299
+ /** vue 组件名(TdtXxx)与 wc 元素类名(TdtXxxElement)共用 */
300
+ name: string;
301
+ /** WC 元素 tag(tdt-xxx) */
302
+ tag: string;
303
+ props: PropDefs<P>;
304
+ /** SDK 原生事件名;适配层转发为组件事件 / tdt- 前缀 DOM 事件 */
305
+ events?: readonly string[];
306
+ create(props: P, ctx: DefCreateContext): O;
307
+ sync?: SyncDef<O, P>;
308
+ /** 覆盖默认挂载(有 collector 走 addMarker,否则 addOverLay);不依赖 this,适配层直接传递引用 */
309
+ attach?: (this: void, instance: O, ctx: OverlayMountContext) => void;
310
+ /** 覆盖默认卸载(如 MarkerClusterer.clearMarkers) */
311
+ detach?: (this: void, instance: O, ctx: OverlayMountContext) => void;
312
+ }
313
+ /** 鼠标工具定义(active 受控开关由适配层注入,不进 defs) */
314
+ interface ToolDef<P extends object> {
315
+ name: string;
316
+ tag: string;
317
+ props: PropDefs<P>;
318
+ events?: readonly string[];
319
+ create(props: P, map: T.Map): ToolLike;
320
+ /** 默认调用 tool.open()(Mousetool 语义);不依赖 this,适配层直接传递引用 */
321
+ activate?: (this: void, tool: ToolLike) => void;
322
+ deactivate?: (this: void, tool: ToolLike) => void;
323
+ }
324
+ /** 控件定义(Zoom/Scale/Copyright/OverviewMap/MapType/标绘控件) */
325
+ interface ControlDef<P extends object> {
326
+ name: string;
327
+ tag: string;
328
+ props: PropDefs<P>;
329
+ create(props: P): T.Control;
330
+ }
331
+ /** 瓦片图层定义(TileLayer/WMS/TDT/GridlineLayer) */
332
+ interface LayerDef<P extends object> {
333
+ name: string;
334
+ tag: string;
335
+ props: PropDefs<P>;
336
+ /** 默认为全部瓦片图层事件(GridlineLayer 收窄为 loading/load) */
337
+ events?: readonly string[];
338
+ create(props: P): T.TileLayer;
339
+ /** 默认为 opacity/zIndex/url 同步(GridlineLayer 整表替换为仅 opacity) */
340
+ sync?: SyncDef<T.TileLayer, P>;
341
+ }
342
+ //#endregion
343
+ //#region src/defs/converters.d.ts
344
+ /**
345
+ * WC attribute 字符串的解析器,供 defs 的 PropDef.converter 声明。
346
+ * 分隔约定:坐标 "lng,lat",坐标集合用 ";" 分段。
347
+ */
348
+ declare function parseLnglat(value: string): [number, number];
349
+ declare function parsePath(value: string): Array<[number, number]>;
350
+ /** "swLng,swLat;neLng,neLat" → [[swLng, swLat], [neLng, neLat]] */
351
+ declare function parseBounds(value: string): [[number, number], [number, number]];
352
+ /** "w,h" → [width, height] */
353
+ declare function parseSize(value: string): [number, number];
354
+ declare function parseJson<T>(value: string): T;
355
+ //#endregion
356
+ //#region src/defs/controls.d.ts
357
+ /**
358
+ * 控件定义。逐个从 vue 适配层迁移:props 形状与 SDK 构造是 vue/wc 共同的
359
+ * 唯一来源。ControlDef 无 sync——官方控件构造后位置由 setPosition 等命令式
360
+ * 方法维护,声明式仅覆盖构造参数;Scale 的 color 走 setColor,只能在
361
+ * create 内一并应用。
362
+ */
363
+ interface ControlZoomProps {
364
+ position?: T.ControlPosition;
365
+ zoomInText?: string;
366
+ zoomOutText?: string;
367
+ zoomInTitle?: string;
368
+ zoomOutTitle?: string;
369
+ }
370
+ declare const zoomDef: ControlDef<ControlZoomProps>;
371
+ interface ControlScaleProps {
372
+ position?: T.ControlPosition;
373
+ /** 比例尺颜色(官方 Control.Scale 方法 setColor) */
374
+ color?: string;
375
+ }
376
+ declare const scaleDef: ControlDef<ControlScaleProps>;
377
+ interface ControlCopyrightProps {
378
+ position?: T.ControlPosition;
379
+ /** 版权信息的唯一标识 */
380
+ id?: string;
381
+ /** 版权文本,支持 HTML */
382
+ content?: string;
383
+ /** 该版权信息适用的地理范围(官方 CopyrightOptions.bounds) */
384
+ bounds?: [[number, number], [number, number]] | T.LngLatBounds;
385
+ }
386
+ declare const copyrightDef: ControlDef<ControlCopyrightProps>;
387
+ interface ControlOverviewMapProps {
388
+ position?: T.ControlPosition;
389
+ /** 鹰眼控件大小 [width, height] */
390
+ size?: [number, number];
391
+ /** 添加到地图后的开合状态 */
392
+ isOpen?: boolean;
393
+ }
394
+ declare const overviewMapDef: ControlDef<ControlOverviewMapProps>;
395
+ interface ControlMapTypeProps {
396
+ position?: T.ControlPosition;
397
+ /** 控件展示的地图类型,默认为 SDK 默认列表 */
398
+ mapTypes?: T.ControlMapTypeOptionsMapType[];
399
+ }
400
+ declare const mapTypeDef: ControlDef<ControlMapTypeProps>;
401
+ //#endregion
402
+ //#region src/defs/overlays.d.ts
403
+ /**
404
+ * 覆盖物定义。逐个从 vue 适配层迁移:props 形状、SDK 构造、sync 与事件表
405
+ * 是 vue/wc 共同的唯一来源。sync 的风格统一为「undefined 不触发 setter」,
406
+ * 与 SDK setter 对 undefined 敏感的行为对齐。
407
+ */
408
+ interface MarkerProps {
409
+ lnglat: [number, number] | T.LngLat;
410
+ /** 标注图标:官方 Icon 实例或 IconOptions(iconUrl/iconSize/iconAnchor) */
411
+ icon?: T.Icon | T.IconOptions;
412
+ draggable?: boolean;
413
+ title?: string;
414
+ zIndexOffset?: number;
415
+ opacity?: number;
416
+ }
417
+ declare const markerDef: OverlayDef<MarkerProps, T.Marker>;
418
+ interface LineStyleProps {
419
+ color?: string;
420
+ weight?: number;
421
+ opacity?: number;
422
+ lineStyle?: "solid" | "dashed";
423
+ }
424
+ /** 线样式四件套的 props 定义(polyline/polygon/rectangle/线型工具共用) */
425
+ declare const lineStylePropDefs: PropDefs<LineStyleProps>;
426
+ /** 具备线样式 setter 的 SDK 实例(Polyline/Polygon/Rectangle/Circle 同构) */
427
+ type LineStyleSetter = Pick<T.Polyline, "setColor" | "setWeight" | "setOpacity" | "setLineStyle">;
428
+ /** 线样式 setter 同步(polyline/polygon/rectangle/circle 同构复用) */
429
+ declare const lineStyleSync: SyncDef<LineStyleSetter, LineStyleProps>;
430
+ interface PolylineProps extends LineStyleProps {
431
+ path: Array<[number, number] | T.LngLat>;
432
+ }
433
+ /** 填充两件套的 props 定义(polygon/circle/rectangle 共用) */
434
+ interface FillStyleProps {
435
+ fillColor?: string;
436
+ fillOpacity?: number;
437
+ }
438
+ declare const polylineDef: OverlayDef<PolylineProps, T.Polyline>;
439
+ interface PolygonProps extends LineStyleProps, FillStyleProps {
440
+ path: Array<[number, number] | T.LngLat>;
441
+ }
442
+ declare const polygonDef: OverlayDef<PolygonProps, T.Polygon>;
443
+ interface CircleProps extends LineStyleProps, FillStyleProps {
444
+ center: [number, number] | T.LngLat;
445
+ /** 半径,单位米 */
446
+ radius: number;
447
+ }
448
+ declare const circleDef: OverlayDef<CircleProps, T.Circle>;
449
+ interface RectangleProps extends LineStyleProps, FillStyleProps {
450
+ /** 西南角与东北角坐标 [[swLng, swLat], [neLng, neLat]] */
451
+ bounds: [[number, number], [number, number]] | T.LngLatBounds;
452
+ }
453
+ declare const rectangleDef: OverlayDef<RectangleProps, T.Rectangle>;
454
+ interface LabelProps {
455
+ text: string;
456
+ lnglat: [number, number] | T.LngLat;
457
+ /** 文本偏移(官方 LabelOptions.offset) */
458
+ offset?: T.Point;
459
+ /** 字体颜色(官方 Label 方法 setFontColor) */
460
+ fontColor?: string;
461
+ /** 字体大小(像素,官方 Label 方法 setFontSize) */
462
+ fontSize?: number;
463
+ backgroundColor?: string;
464
+ /** 提示内容(title) */
465
+ title?: string;
466
+ }
467
+ declare const labelDef: OverlayDef<LabelProps, T.Label>;
468
+ interface CloudMarkerProps {
469
+ /** 海量点的坐标集合 */
470
+ lnglats: Array<T.LngLat | [number, number]>;
471
+ /** 绘制样式(官方 CloudMarkerCollectionOptions:ShapeType/SizeType/color) */
472
+ styles?: T.CloudMarkerCollectionOptions;
473
+ }
474
+ declare const cloudMarkerDef: OverlayDef<CloudMarkerProps, T.CloudMarkerCollection>;
475
+ interface MarkerClustererProps {
476
+ /** 批量传入的待聚合标注(官方 MarkerClustererOptions.markers) */
477
+ markers?: Array<T.Marker | [number, number]>;
478
+ /** 聚合计算网格的像素大小,默认 60(SDK 拼写为 girdSize) */
479
+ gridSize?: number;
480
+ /** 大于该级别不进行聚合 */
481
+ maxZoom?: number;
482
+ styles?: T.MarkerClustererStyle[];
483
+ }
484
+ declare const markerClustererDef: OverlayDef<MarkerClustererProps, T.MarkerClusterer>;
485
+ interface LayerGroupProps {}
486
+ declare const layerGroupDef: OverlayDef<LayerGroupProps, T.LayerGroup>;
487
+ //#endregion
488
+ //#region src/defs/layers.d.ts
489
+ /**
490
+ * 瓦片图层定义。逐个从 vue 适配层迁移:props 形状、SDK 构造、sync 与
491
+ * 事件表是 vue/wc 共同的唯一来源。minZoom/maxZoom 仅构造生效(SDK 无
492
+ * setter),不进 sync;格网图层官方仅列 loading/load 两个事件,sync
493
+ * 收窄为仅 opacity(官方选项无 url/zIndex)。
494
+ */
495
+ interface TileLayerProps {
496
+ /** 瓦片服务 URL 模板 */
497
+ url: string;
498
+ minZoom?: number;
499
+ maxZoom?: number;
500
+ opacity?: number;
501
+ zIndex?: number;
502
+ /** 瓦片加载失败时显示的图片 URL */
503
+ errorTileUrl?: string;
504
+ /** 图层显示范围(官方 TileLayerOptions.bounds) */
505
+ bounds?: [[number, number], [number, number]] | T.LngLatBounds;
506
+ }
507
+ declare const tileLayerDef: LayerDef<TileLayerProps>;
508
+ interface TileLayerWMSProps extends TileLayerProps {
509
+ /** 用","分隔的多个图层列表 */
510
+ layers?: string;
511
+ styles?: string;
512
+ /** 输出图像类型,default: image/jpeg */
513
+ format?: string;
514
+ transparent?: boolean;
515
+ /** 请求服务的版本,default: 1.1.1 */
516
+ version?: string;
517
+ /** 地图投影类型,default: EPSG:900913 */
518
+ srs?: string;
519
+ }
520
+ declare const tileLayerWmsDef: LayerDef<TileLayerWMSProps>;
521
+ interface TileLayerTDTProps extends TileLayerProps {
522
+ /** 用来描述图层信息 */
523
+ attribution?: string;
524
+ }
525
+ declare const tileLayerTdtDef: LayerDef<TileLayerTDTProps>;
526
+ interface GridlineLayerProps {
527
+ /** 格网图层的网格大小,单位是像素,default: 256 */
528
+ tileSize?: number;
529
+ minZoom?: number;
530
+ maxZoom?: number;
531
+ opacity?: number;
532
+ /** 边线的颜色、宽度、线样式,default: {width:1, style:'solid', color:'#999'} */
533
+ outlineSize?: T.GridlineLayerOptions["outlineSize"];
534
+ /** 文字样式,图层文字表现网格的行号、列号、层级,default: {display:false, fontSize:'14', fontWeight:true, color:'black'} */
535
+ textSize?: T.GridlineLayerOptions["textSize"];
536
+ }
537
+ declare const gridlineLayerDef: LayerDef<GridlineLayerProps>;
538
+ //#endregion
539
+ //#region src/defs/plot-entities.d.ts
540
+ /**
541
+ * 标绘覆盖物定义。逐个从 vue 适配层迁移:props 形状与 SDK 构造是
542
+ * vue/wc 共同的唯一来源。SDK 实体只暴露 setLngLats/getLngLats,
543
+ * 样式 props(线样式与填充)仅构造时生效,故 sync 只含 path。
544
+ * 官方标绘实体页未列事件表,defs 保持无 events。
545
+ */
546
+ interface PlotEntityProps extends LineStyleProps {
547
+ path: Array<[number, number] | T.LngLat>;
548
+ }
549
+ interface PlotFillEntityProps extends PlotEntityProps {
550
+ fillColor?: string;
551
+ fillOpacity?: number;
552
+ }
553
+ /** 标绘实体的 SDK 同构面:样式 setter 官方未提供,path 同步为唯一可变项 */
554
+ interface PlotEntityShape {
555
+ setLngLats(lnglats: T.LngLat[]): void;
556
+ }
557
+ declare const plotEntityPropDefs: PropDefs<PlotEntityProps>;
558
+ declare const plotFillPropDefs: PropDefs<Pick<PlotFillEntityProps, "fillColor" | "fillOpacity">>;
559
+ declare const plotEntitySync: SyncDef<PlotEntityShape, PlotEntityProps>;
560
+ declare const arcDef: OverlayDef<PlotEntityProps, T.Arc>;
561
+ declare const bezierCurve2Def: OverlayDef<PlotEntityProps, T.BezierCurve2>;
562
+ declare const bezierCurve3Def: OverlayDef<PlotEntityProps, T.BezierCurve3>;
563
+ declare const bezierCurveArrowDef: OverlayDef<PlotEntityProps, T.BezierCurveArrow>;
564
+ declare const bezierCurveNDef: OverlayDef<PlotEntityProps, T.BezierCurveN>;
565
+ declare const cardinalCurveDef: OverlayDef<PlotEntityProps, T.CardinalCurve>;
566
+ declare const cardinalCurveArrowDef: OverlayDef<PlotEntityProps, T.CardinalCurveArrow>;
567
+ declare const parallelSearchDef: OverlayDef<PlotEntityProps, T.ParallelSearch>;
568
+ declare const polylineArrowDef: OverlayDef<PlotEntityProps, T.PolylineArrow>;
569
+ declare const sectorSearchDef: OverlayDef<PlotEntityProps, T.SectorSearch>;
570
+ declare const closeCurveDef: OverlayDef<PlotFillEntityProps, T.CloseCurve>;
571
+ declare const curveFlagDef: OverlayDef<PlotFillEntityProps, T.CurveFlag>;
572
+ declare const diagonalArrowDef: OverlayDef<PlotFillEntityProps, T.DiagonalArrow>;
573
+ declare const doubleArrowDef: OverlayDef<PlotFillEntityProps, T.DoubleArrow>;
574
+ declare const doveTailDiagonalArrowDef: OverlayDef<PlotFillEntityProps, T.DoveTailDiagonalArrow>;
575
+ declare const doveTailStraightArrowDef: OverlayDef<PlotFillEntityProps, T.DoveTailStraightArrow>;
576
+ declare const gatheringPlaceDef: OverlayDef<PlotFillEntityProps, T.GatheringPlace>;
577
+ declare const rectFlagDef: OverlayDef<PlotFillEntityProps, T.RectFlag>;
578
+ declare const roundRectDef: OverlayDef<PlotFillEntityProps, T.RoundRect>;
579
+ declare const sectorDef: OverlayDef<PlotFillEntityProps, T.Sector>;
580
+ declare const straightArrowDef: OverlayDef<PlotFillEntityProps, T.StraightArrow>;
581
+ declare const triangleFlagDef: OverlayDef<PlotFillEntityProps, T.TriangleFlag>;
582
+ //#endregion
583
+ //#region src/defs/plot-tools.d.ts
584
+ /**
585
+ * 标绘鼠标工具定义族(军事标绘体系,SDK 基类 MilitaryTool)。23 个工具
586
+ * 完全同构:公共 Options 仅 style 与 layers(存储绘制图形的容器),事件表
587
+ * 为官方基类成员 click/move/dbclick(官方拼写即为 dbclick),故用一个
588
+ * helper 从 SDK 类名批量生成,逐个搬运 vue 实现的构造参数。
589
+ */
590
+ interface PlotToolProps {
591
+ /** 绘制图形的样式(官方 MilitaryToolOptions 的 style 字段) */
592
+ style?: T.MilitaryStyle;
593
+ /** 存储绘制图形的容器;不传时工具自行创建空图层容器 */
594
+ layers?: T.LayerGroup;
595
+ }
596
+ declare const plotToolPropDefs: PropDefs<PlotToolProps>;
597
+ declare const arcToolDef: ToolDef<PlotToolProps>;
598
+ declare const bezierCurve2ToolDef: ToolDef<PlotToolProps>;
599
+ declare const bezierCurve3ToolDef: ToolDef<PlotToolProps>;
600
+ declare const bezierCurveArrowToolDef: ToolDef<PlotToolProps>;
601
+ declare const bezierCurveNToolDef: ToolDef<PlotToolProps>;
602
+ declare const cardinalCurveArrowToolDef: ToolDef<PlotToolProps>;
603
+ declare const cardinalCurveToolDef: ToolDef<PlotToolProps>;
604
+ declare const closeCurveToolDef: ToolDef<PlotToolProps>;
605
+ declare const curveFlagToolDef: ToolDef<PlotToolProps>;
606
+ declare const diagonalArrowToolDef: ToolDef<PlotToolProps>;
607
+ declare const doubleArrowToolDef: ToolDef<PlotToolProps>;
608
+ declare const doveTailDiagonalArrowToolDef: ToolDef<PlotToolProps>;
609
+ declare const doveTailStraightArrowToolDef: ToolDef<PlotToolProps>;
610
+ declare const gatheringPlaceToolDef: ToolDef<PlotToolProps>;
611
+ declare const handDrawingToolDef: ToolDef<PlotToolProps>;
612
+ declare const parallelSearchToolDef: ToolDef<PlotToolProps>;
613
+ declare const polylineArrowToolDef: ToolDef<PlotToolProps>;
614
+ declare const rectFlagToolDef: ToolDef<PlotToolProps>;
615
+ declare const roundRectToolDef: ToolDef<PlotToolProps>;
616
+ declare const sectorSearchToolDef: ToolDef<PlotToolProps>;
617
+ declare const sectorToolDef: ToolDef<PlotToolProps>;
618
+ declare const straightArrowToolDef: ToolDef<PlotToolProps>;
619
+ declare const triangleFlagToolDef: ToolDef<PlotToolProps>;
620
+ //#endregion
621
+ //#region src/defs/tools.d.ts
622
+ /**
623
+ * 鼠标工具定义(Mousetool 体系)。active 受控开关不进 defs(Vue 以 prop、
624
+ * WC 以 attribute 各自注入);CoordinatePickup 非该体系(addEvent 开关 +
625
+ * callback 构造),由适配层各自手写。线样式 props 与折线覆盖物共用。
626
+ */
627
+ interface PolylineToolProps extends LineStyleProps {
628
+ /** 是否显示测距结果,关闭后可作画线工具使用 */
629
+ showLabel?: boolean;
630
+ }
631
+ declare const polylineToolDef: ToolDef<PolylineToolProps>;
632
+ interface PolygonToolProps extends LineStyleProps {
633
+ /** 是否显示测面积结果,关闭后可作画多边形工具使用 */
634
+ showLabel?: boolean;
635
+ }
636
+ declare const polygonToolDef: ToolDef<PolygonToolProps>;
637
+ interface CircleToolProps extends LineStyleProps {
638
+ fillColor?: string;
639
+ fillOpacity?: number;
640
+ }
641
+ declare const circleToolDef: ToolDef<CircleToolProps>;
642
+ interface RectangleToolProps extends LineStyleProps {
643
+ fillColor?: string;
644
+ fillOpacity?: number;
645
+ }
646
+ declare const rectangleToolDef: ToolDef<RectangleToolProps>;
647
+ interface MarkToolProps {
648
+ /** 标注图标,默认为 SDK 默认图标 */
649
+ icon?: T.Icon;
650
+ /** 标记图标是否跟随鼠标 */
651
+ follow?: boolean;
652
+ }
653
+ declare const markToolDef: ToolDef<MarkToolProps>;
654
+ interface PaintBrushToolProps {
655
+ /** 保持工具的连续可用性 */
656
+ keepdrawing?: boolean;
657
+ /** 画笔留下笔迹的样式(官方 PaintBrushToolOptions 的 style 字段) */
658
+ style?: T.PaintBrushToolOptions["style"];
659
+ }
660
+ declare const paintBrushToolDef: ToolDef<PaintBrushToolProps>;
661
+ //#endregion
662
+ export { type CircleProps, type CircleToolProps, type CloudMarkerProps, type ControlCopyrightProps, type ControlDef, type ControlMapTypeProps, type ControlOverviewMapProps, type ControlScaleProps, type ControlZoomProps, type CreateMapSessionOptions, DEFAULT_CENTER, type DefCreateContext, EventBridge, type EventTargetLike, type GridlineLayerProps, type InfoWindowHandle, type InfoWindowHost, type InfoWindowSpec, type LabelProps, type LayerDef, type LayerGroupProps, type LineStyleProps, type LoadTdtOptions, MAP_EVENT_NAMES, type MapInteractionOptions, type MapSession, type MarkToolProps, type MarkerClustererProps, type MarkerProps, type OverlayCollector, type OverlayDef, type OverlayHandle, type OverlayMountContext, type OverlayMountSpec, type PaintBrushToolProps, type PlotEntityProps, type PlotFillEntityProps, type PlotToolProps, type PolygonProps, type PolygonToolProps, type PolylineProps, type PolylineToolProps, type PropDef, type PropDefs, type PropTypeConstructor, type RectangleProps, type RectangleToolProps, type SyncDef, TILE_LAYER_EVENT_NAMES, type TileLayerProps, type TileLayerTDTProps, type TileLayerWMSProps, type ToolDef, type ToolLike, type ToolSession, applyMapInteractions, arcDef, arcToolDef, bezierCurve2Def, bezierCurve2ToolDef, bezierCurve3Def, bezierCurve3ToolDef, bezierCurveArrowDef, bezierCurveArrowToolDef, bezierCurveNDef, bezierCurveNToolDef, bindEventNames, cardinalCurveArrowDef, cardinalCurveArrowToolDef, cardinalCurveDef, cardinalCurveToolDef, circleDef, circleToolDef, closeCurveDef, closeCurveToolDef, cloudMarkerDef, compact, copyrightDef, createInfoWindow, createMapSession, createPropsSync, createWhenReady, curveFlagDef, curveFlagToolDef, diagonalArrowDef, diagonalArrowToolDef, doubleArrowDef, doubleArrowToolDef, doveTailDiagonalArrowDef, doveTailDiagonalArrowToolDef, doveTailStraightArrowDef, doveTailStraightArrowToolDef, gatheringPlaceDef, gatheringPlaceToolDef, gridlineLayerDef, handDrawingToolDef, labelDef, layerGroupDef, lineStylePropDefs, lineStyleSync, loadTdt, mapTypeDef, markToolDef, markerClustererDef, markerDef, mountOverlay, mountTileLayer, mountTool, overviewMapDef, paintBrushToolDef, parallelSearchDef, parallelSearchToolDef, parseBounds, parseJson, parseLnglat, parsePath, parseSize, plotEntityPropDefs, plotEntitySync, plotFillPropDefs, plotToolPropDefs, polygonDef, polygonToolDef, polylineArrowDef, polylineArrowToolDef, polylineDef, polylineToolDef, rectFlagDef, rectFlagToolDef, rectangleDef, rectangleToolDef, roundRectDef, roundRectToolDef, scaleDef, sectorDef, sectorSearchDef, sectorSearchToolDef, sectorToolDef, straightArrowDef, straightArrowToolDef, tileLayerDef, tileLayerTdtDef, tileLayerWmsDef, toLngLat, toLngLats, triangleFlagDef, triangleFlagToolDef, zoomDef };