@baidumap/vue-bmap 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +271 -0
  3. package/dist/components/Control/index.d.ts +186 -0
  4. package/dist/components/Layer/index.d.ts +138 -0
  5. package/dist/components/Map/Map.d.ts +340 -0
  6. package/dist/components/Map/MapRef.d.ts +204 -0
  7. package/dist/components/Map/index.d.ts +4 -0
  8. package/dist/components/Overlay/InfoWindow.d.ts +193 -0
  9. package/dist/components/Overlay/index.d.ts +50 -0
  10. package/dist/components/Overlay/types.d.ts +799 -0
  11. package/dist/composables/index.d.ts +12 -0
  12. package/dist/composables/useCapabilities.d.ts +5 -0
  13. package/dist/composables/useDriver.d.ts +5 -0
  14. package/dist/composables/useGeocoder.d.ts +17 -0
  15. package/dist/composables/useIcon.d.ts +5 -0
  16. package/dist/composables/useMap.d.ts +8 -0
  17. package/dist/composables/useMapEvent.d.ts +4 -0
  18. package/dist/composables/useMapReady.d.ts +11 -0
  19. package/dist/composables/useMapRef.d.ts +8 -0
  20. package/dist/composables/useServiceTimeout.d.ts +7 -0
  21. package/dist/composables/useSymbol.d.ts +5 -0
  22. package/dist/const/index.d.ts +19 -0
  23. package/dist/constants/index.d.ts +195 -0
  24. package/dist/context/index.d.ts +31 -0
  25. package/dist/drivers/capabilityMatrix.d.ts +3 -0
  26. package/dist/drivers/createDriver.d.ts +18 -0
  27. package/dist/drivers/types.d.ts +359 -0
  28. package/dist/drivers/unsupported.d.ts +66 -0
  29. package/dist/drivers/v3Driver.d.ts +13 -0
  30. package/dist/drivers/v4Driver.d.ts +15 -0
  31. package/dist/index.cjs +2 -0
  32. package/dist/index.cjs.map +1 -0
  33. package/dist/index.d.ts +22 -0
  34. package/dist/index.js +4121 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/loader/index.d.ts +21 -0
  37. package/dist/loader/registry.d.ts +13 -0
  38. package/dist/loader/stableHash.d.ts +2 -0
  39. package/dist/provider/BMapProvider.d.ts +108 -0
  40. package/dist/types/core.d.ts +82 -0
  41. package/dist/types/index.d.ts +111 -0
  42. package/dist/types/results.d.ts +171 -0
  43. package/dist/types-skd.d.ts +21 -0
  44. package/dist/utils/createComponent.d.ts +51 -0
  45. package/dist/utils/debugWarn.d.ts +22 -0
  46. package/dist/utils/event.d.ts +7 -0
  47. package/dist/utils/handle.d.ts +16 -0
  48. package/dist/utils/pointEquals.d.ts +7 -0
  49. package/dist/utils/sdk.d.ts +47 -0
  50. package/dist/utils/shallowEqual.d.ts +2 -0
  51. package/dist/utils/stableStringify.d.ts +10 -0
  52. package/package.json +71 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../src/context/index.ts","../src/drivers/capabilityMatrix.ts","../src/utils/handle.ts","../src/utils/debugWarn.ts","../src/drivers/unsupported.ts","../src/utils/pointEquals.ts","../src/drivers/v4Driver.ts","../src/utils/sdk.ts","../src/drivers/v3Driver.ts","../src/drivers/createDriver.ts","../src/loader/stableHash.ts","../src/loader/registry.ts","../src/loader/index.ts","../src/provider/BMapProvider.ts","../src/constants/index.ts","../src/const/index.ts","../src/components/Map/MapRef.ts","../src/components/Map/Map.ts","../src/utils/stableStringify.ts","../src/utils/createComponent.ts","../src/components/Overlay/InfoWindow.ts","../src/components/Overlay/index.ts","../src/components/Control/index.ts","../src/components/Layer/index.ts","../src/composables/useMap.ts","../src/composables/useMapEvent.ts","../src/composables/useMapReady.ts","../src/composables/useDriver.ts","../src/composables/useMapRef.ts","../src/composables/useCapabilities.ts","../src/composables/useSymbol.ts","../src/composables/useIcon.ts","../src/composables/useServiceTimeout.ts","../src/composables/useGeocoder.ts"],"sourcesContent":["/**\n * Vue provide/inject 注入键 —— 替代 react-bmap 的 React Context。\n *\n * - BMAP_KEY:Provider 下发的加载状态(含 driver),响应式 shallowRef。\n * - MAP_KEY:Map 组件下发的 { map, driver },响应式 shallowRef(map 就绪前为 null)。\n * - OVERLAY_TARGET_KEY:父级覆盖物(如 Marker)下发的挂载目标,供子级(如 InfoWindow/Label)识别。\n *\n * 关键约定:所有句柄(driver / map / overlay handle)都放在 shallowRef 里或普通对象里,\n * **绝不能进 reactive 深代理**,否则 Vue 的 Proxy 会破坏 SDK 内部状态。\n */\nimport { inject, type InjectionKey, type ShallowRef } from 'vue';\nimport type { BMapVersion, LoaderStatus, MapHandle, OverlayHandle } from '../types';\nimport type { BMapDriver } from '../drivers/types';\n\nexport interface BMapContextValue {\n status: LoaderStatus;\n driver: BMapDriver | null;\n version: BMapVersion;\n error: Error | null;\n}\n\nexport interface MapContextValue {\n map: MapHandle | null;\n driver: BMapDriver;\n}\n\nexport type OverlayTargetType = 'clusterer' | 'overlay' | 'marker' | 'map';\n\nexport interface OverlayTargetStore {\n type: OverlayTargetType;\n /** 父级 handle(父级尚未挂载时为 null);响应式,子级 watch 即可感知就绪 */\n handle: ShallowRef<OverlayHandle | MapHandle | null>;\n addOverlay?: (overlay: OverlayHandle) => void;\n removeOverlay?: (overlay: OverlayHandle) => void;\n}\n\nexport const BMAP_KEY: InjectionKey<ShallowRef<BMapContextValue>> = Symbol('vue-bmap:context');\nexport const MAP_KEY: InjectionKey<ShallowRef<MapContextValue | null>> = Symbol('vue-bmap:map');\nexport const OVERLAY_TARGET_KEY: InjectionKey<OverlayTargetStore> = Symbol('vue-bmap:overlay-target');\n\n/** 读取 Provider 状态;不在 Provider 内时返回 loading 兜底。 */\nexport function useBMapContext(): ShallowRef<BMapContextValue> {\n const ctx = inject(BMAP_KEY, null);\n if (!ctx) {\n throw new Error('[vue-bmap] 组件必须用在 <BMapProvider> 内部');\n }\n return ctx;\n}\n\n/** 读取当前 <Map> 上下文;不在 <Map> 内时返回 null(供检索类 composable 安全回退)。 */\nexport function useMapContextOptional(): ShallowRef<MapContextValue | null> | null {\n return inject(MAP_KEY, null);\n}\n\n/** 读取当前 <Map> 上下文;不在 <Map> 内时抛错。 */\nexport function useMapContext(): ShallowRef<MapContextValue | null> {\n const ctx = inject(MAP_KEY, null);\n if (!ctx) {\n throw new Error('[vue-bmap] 组件必须用在 <Map> 内部');\n }\n return ctx;\n}\n","// AUTO-GENERATED by scripts/gen-capability-matrix.ts from bmap-jsapi-dts.\n//\n// 当前为框架种子版本:手动列出主要能力,待 gen 脚本接入后自动覆盖。\n//\n// 命名规范(消除歧义):\n// - 类存在性:PascalCase 类名,如 `Prism`、`Marker`、`NavigationControl3D`、`RidingRoute`\n// - 类方法/Map 方法:`ClassName.method`,如 `Map.flyTo`、`Map.enableMapClick`、`Marker.openInfoWindow`\n// - 这样用户 `caps.has('Map.flyTo')` 一眼能看出是 Map 的 flyTo 方法;\n// `caps.has('Prism')` 能看出是 Prism 类是否存在。\n\nimport type { Capability } from '../types';\n\n// ── 4.0+ Map 视角与动画方法 ──\nconst V4_MAP_VIEW: Capability[] = [\n 'Map.flyTo', 'Map.setHeading', 'Map.getHeading', 'Map.setTilt', 'Map.getTilt',\n 'Map.startViewAnimation', 'Map.pauseViewAnimation', 'Map.continueViewAnimation', 'Map.cancelViewAnimation',\n 'Map.restrictBounds', 'Map.setDisplayOptions', 'Map.setOptions',\n 'Map.enableRotate', 'Map.disableRotate', 'Map.enableTilt', 'Map.disableTilt',\n 'Map.enableRotateGestures', 'Map.disableRotateGestures',\n 'Map.enableTiltGestures', 'Map.disableTiltGestures',\n 'Map.enableResizeOnCenter', 'Map.disableResizeOnCenter',\n];\n\n// ── 4.0+ 图层类(class 本身存在性) ──\nconst V4_LAYER_CLASS: Capability[] = [\n 'NormalLayer', 'GeoJSONLayer', 'DistrictLayer',\n 'RasterTileLayer', 'WMSLayer', 'WMTSLayer', 'XYZLayer', 'MVTLayer',\n 'FillLayer', 'DOMLayer',\n 'PointIconLayer', 'PointShapeLayer',\n 'LineLayer', 'PixelLayer', 'BaiduLayer', 'ThreeLayer',\n];\n\n// ── 4.0+ Map 图层方法 ──\nconst V4_MAP_LAYER: Capability[] = [\n 'Map.addNormalLayer', 'Map.removeNormalLayer',\n 'Map.addGeoJSONLayer', 'Map.removeGeoJSONLayer',\n 'Map.addDistrictLayer', 'Map.removeDistrictLayer',\n 'Map.setTrafficOn', 'Map.setTrafficOff',\n];\n\n// ── 4.0+ 覆盖物类 ──\nconst V4_OVERLAY: Capability[] = [\n // 注:Rectangle 在源码快照 publicListForMap.js 未导出,但运行时 CDN 版 BMapGL 存在(driver 实测可用)\n 'Prism', 'Rectangle', 'BezierCurve', 'CustomOverlay', 'GroundPoint', 'Marker3D', 'SimpleInfoWindow', 'MapMask',\n];\n\n// ── 4.0+ 控件类 ──\nconst V4_CONTROL: Capability[] = [\n 'NavigationControl3D', 'ZoomControl', 'LogoControl',\n];\n\n// ── 4.0+ 服务类 ──\nconst V4_SERVICE: Capability[] = [\n 'PlaceDetail', 'PlaceDetailPanel',\n];\n\n// ── 4.0+ 其他公开类(SDK publicListForMap.js 导出、react-bmap 暂未封装) ──\nconst V4_MISC: Capability[] = [\n 'MapConfig', 'SVGSymbol', 'PolylineMultipart', 'ParkingSpot', 'IndoorManager', 'DistanceTool',\n 'Animation', 'ViewAnimation', 'Transitions', 'Event', 'GeoJSONParse', 'Entity', 'DrivingRouteLine', 'XYZProjection',\n];\n\n// ── 4.0+ Map 实用方法 ──\nconst V4_MAP_UTIL: Capability[] = [\n 'Map.getScreenshot', 'Map.lnglatToMercator', 'Map.mercatorToLnglat',\n 'Map.isLoaded', 'Map.getCoordType', 'Map.getMinZoom', 'Map.getMaxZoom',\n 'Map.getContainerSize', 'Map.getZoomUnits',\n 'Map.addSpots', 'Map.getSpots', 'Map.removeSpots', 'Map.clearSpots', 'Map.hightlightSpotByUid',\n 'Map.addMapLabels', 'Map.removeMapLabels',\n 'Map.enablePreferredLanguage', 'Map.disablePreferredLanguage',\n 'Marker.openInfoWindow', // 4.0+ Marker 打开信息窗口\n 'Map.destroy', // 4.0+ 显式销毁\n 'Map.checkResize', // 4.0+ resize API\n];\n\n// ── 3.0-only Map 方法 ──\nconst V3_MAP_ONLY: Capability[] = [\n 'Map.enableMapClick', 'Map.disableMapClick',\n 'Map.enable3DBuilding', 'Map.disable3DBuilding',\n 'Map.highResolutionEnabled',\n 'Map.setCurrentCity',\n 'Map.setPanorama', 'Map.getPanorama',\n // Hotspot v4 也支持(publicListForMap.js 导出 + SpotManager),故归 COMMON 而非此处\n 'Map.openInfoWindow', // 3.0-only map.openInfoWindow(v4 移到 Marker)\n 'Map.closeInfoWindow',\n 'Map.addTileLayer', 'Map.removeTileLayer', 'Map.getTileLayer',\n];\n\n// ── 3.0-only 覆盖物/图层 ──\nconst V3_OVERLAY_ONLY: Capability[] = [\n 'CustomLayer', // v4 无此类(对应物是 CustomHtmlLayer/DOMLayer)\n 'PanoramaFlashInterface',// v3 publish.js:82 导出,v4 无\n 'PointCollection', // @removed 4.0,仅 v3(@baidumap/jsapi-v4-types 无此类)\n];\n\n// ── 全版本共有(隐式:v3 与 v4 共有) ──\nconst COMMON: Capability[] = [\n // 基础 Map 类(全版本)\n 'Map',\n // 基础 Map 命令(全版本)\n 'Map.setCenter', 'Map.setZoom', 'Map.centerAndZoom', 'Map.panTo', 'Map.panBy',\n 'Map.setViewport', 'Map.getViewport', 'Map.zoomIn', 'Map.zoomOut', 'Map.reset',\n 'Map.getCenter', 'Map.getZoom', 'Map.getBounds', 'Map.getSize', 'Map.getDistance',\n 'Map.pointToPixel', 'Map.pixelToPoint', 'Map.pointToOverlayPixel', 'Map.overlayPixelToPoint',\n // 交互开关(全版本)\n 'Map.enableDragging', 'Map.disableDragging',\n 'Map.enableScrollWheelZoom', 'Map.disableScrollWheelZoom',\n 'Map.enableDoubleClickZoom', 'Map.disableDoubleClickZoom',\n 'Map.enableKeyboard', 'Map.disableKeyboard',\n 'Map.enableInertialDragging', 'Map.disableInertialDragging',\n 'Map.enableContinuousZoom', 'Map.disableContinuousZoom',\n 'Map.enablePinchToZoom', 'Map.disablePinchToZoom',\n 'Map.enableAutoResize', 'Map.disableAutoResize',\n // enableIconInfoWindow/disableIconInfoWindow:全版本可调用。3.0 下转发到\n // enableMapClick/disableMapClick,其内部会异步加载 mapclick 模块,点击底图\n // 标注本身就会创建并弹出 InfoWindow,效果与 4.0 基本等价,归入\"全版本\"。\n 'Map.enableIconInfoWindow', 'Map.disableIconInfoWindow',\n // addControl/removeControl:v3 与 v4 均有(@baidumap/jsapi-v4-types core/Map.d.ts:730/743 确认 v4 存在)\n 'Map.addControl', 'Map.removeControl',\n // 个性化样式:setMapStyle 两版本均有(v4 types core/Map.d.ts:870 确认);\n // setMapStyleV2 v3Driver 实测可用,v4 同名转发,归 COMMON\n 'Map.setMapStyle', 'Map.setMapStyleV2',\n 'Map.clearOverlays', 'Map.getOverlays', 'Map.addOverlay', 'Map.removeOverlay',\n // 覆盖物(全版本)\n 'Overlay', // 公开抽象基类\n 'Marker', 'Label', 'Polyline', 'Polygon', 'Circle',\n 'GroundOverlay', 'InfoWindow', 'Symbol', 'Icon', 'IconSequence',\n 'Hotspot',\n // 控件(全版本)\n 'Control', // 公开抽象基类\n 'NavigationControl', 'ScaleControl', 'OverviewMapControl', 'MapTypeControl',\n 'CopyrightControl', 'Copyright', 'GeolocationControl', 'PanoramaControl',\n 'CityListControl',\n // 注:LocationControl 的 SDK 类仅 4.0 存在,但 react-bmap 用 GeolocationControl 别名实现,两个版本均可用\n 'LocationControl',\n // 图层(全版本)\n 'TileLayer', 'TrafficLayer', 'CanvasLayer', 'PanoramaCoverageLayer',\n // 服务(全版本)\n 'LocalSearch', 'Geocoder', 'DrivingRoute', 'WalkingRoute', 'TransitRoute',\n 'RidingRoute', 'Geolocation', 'LocalCity', 'TruckRoute',\n 'BusLineSearch', 'Autocomplete', 'Boundary', 'Convertor', 'PanoramaService', 'RouteSearch',\n // 坐标投影(全版本公开类)\n 'Projection', 'MercatorProjection', 'PerspectiveProjection',\n // 全景(全版本)\n 'Panorama', 'PanoramaLabel',\n // 右键菜单\n 'ContextMenu', 'MenuItem',\n];\n\nconst v3Set = new Set<Capability>([...COMMON, ...V3_MAP_ONLY, ...V3_OVERLAY_ONLY]);\nconst v4Set = new Set<Capability>([\n ...COMMON, ...V4_MAP_VIEW, ...V4_LAYER_CLASS, ...V4_MAP_LAYER, ...V4_OVERLAY, ...V4_CONTROL, ...V4_SERVICE, ...V4_MAP_UTIL, ...V4_MISC,\n]);\n\nexport const CAPABILITY_MATRIX: Record<'3.0' | '4.0', ReadonlySet<Capability>> = {\n '3.0': v3Set,\n '4.0': v4Set,\n};\n","/**\n * Brand handle 工具。\n *\n * 框架对外暴露的 Map/Overlay/... 都是 brand handle(`{ __brand, raw }`),\n * 传给 SDK 前需要解包出内部的 raw 实例。集中在此处理,\n * 避免在各 hook / 组件里散落 `(x as any).__brand` / `(x as any).raw`。\n */\n\ninterface BrandHandle {\n readonly __brand: string;\n readonly raw: unknown;\n}\n\n/** 判断值是否为 brand handle。 */\nexport function isHandle(value: unknown): value is BrandHandle {\n return typeof value === 'object' && value !== null && '__brand' in value;\n}\n\n/** 若是 brand handle 则解包出内部 raw SDK 实例,否则原样返回。 */\nexport function unwrapHandle(value: unknown): unknown {\n return isHandle(value) ? value.raw : value;\n}\n","/**\n * 开发期非抛出型告警。\n *\n * 用途:包住那些「用户明确要求某个操作、但 SDK 静默失败」的 catch —— 例如\n * Layer.setData 没渲染、Map 的属性 setter 没生效。这些位置以前是 `catch { /* noop *\\/ }`,\n * 故障被完全吞掉,开发时无从排查。\n *\n * 设计约束:\n * - 只在非 production 打印(对齐 v4Driver 里的 env 判断),避免污染线上 console。\n * - 绝不抛异常:这些 catch 多在 React effect 回调里,抛出会破坏渲染树。日志本身也 try 兜底。\n * - 不走 reportUnsupported:那是「能力不支持」语义、且 throw 模式会抛错;这里是\n * 受支持操作的运行时失败,只需可观测,不改变控制流。\n */\nexport function debugWarn(context: string, cause?: unknown): void {\n if (cause !== undefined) devWarn(`${context} 调用失败:`, cause);\n else devWarn(`${context} 调用失败`);\n}\n\n/**\n * 开发期提示(原文输出,不追加「调用失败」)。\n *\n * 用途:不是调用失败、但用户几乎一定会误解的场景 —— 例如把某个 option prop 改回\n * undefined,框架没有 SDK 默认值可以还原,只能保持原状。这类「符合实现、但违背直觉」\n * 的行为不说出来就是静默失效。\n */\nexport function devWarn(message: string, cause?: unknown): void {\n try {\n // 不依赖 @types/node:从 globalThis 上安全读取,浏览器里 process 不存在时按 dev 处理\n const env = (globalThis as { process?: { env?: Record<string, string | undefined> } }).process?.env;\n if (env?.NODE_ENV === 'production') return;\n if (typeof console === 'undefined') return;\n if (cause !== undefined) console.warn(`[react-bmap] ${message}`, cause);\n else console.warn(`[react-bmap] ${message}`);\n } catch {\n // 日志绝不能反过来把调用方搞崩\n }\n}\n","import type { BMapVersion, Capability, UnsupportedBehavior } from '../types';\nimport { debugWarn } from '../utils/debugWarn';\n\n/**\n * 不支持能力异常。\n * 在 throw 策略下抛此异常;用户可用 try/catch 或 ErrorBoundary 捕获。\n */\nexport class UnsupportedCapabilityError extends Error {\n constructor(public capability: Capability, public version: BMapVersion) {\n super(`[react-bmap] ${capability} is not supported in JSAPI ${version}`);\n this.name = 'UnsupportedCapabilityError';\n }\n}\n\n/**\n * 报告不支持的能力。根据 behavior:\n * - 'throw':抛 UnsupportedCapabilityError\n * - 'warn':dev console.warn,正常返回(调用方返回兜底值)\n * - 'ignore':静默,正常返回(调用方返回兜底值)\n *\n * 只用于「确实不支持」:能力矩阵里没有,或原生成员不存在。\n * 「成员存在但执行时抛错」请走 reportCallFailure,不要塞到这里 ——\n * 那会把真实的运行时错误说成版本问题,排障时反而被误导。\n *\n * 用于命令(返回 void):throw 抛错;warn/ignore noop。\n */\nexport function reportUnsupported(\n capability: Capability,\n version: BMapVersion,\n behavior: UnsupportedBehavior,\n): void {\n if (behavior === 'throw') {\n throw new UnsupportedCapabilityError(capability, version);\n }\n if (behavior === 'warn' && typeof console !== 'undefined') {\n console.warn(`[react-bmap] ${capability} not supported in JSAPI ${version} (noop)`);\n }\n // 'ignore' 或 'warn' 走到这里返回 undefined\n}\n\n/**\n * 判断一个错误是不是「成员根本不存在」。\n *\n * 依据的是 JS 引擎自己产出的 TypeError 文案(`x is not a function` /\n * `x is not a constructor`),V8/JSC/SpiderMonkey 都是这套措辞;不是匹配 SDK\n * 的字符串,所以 SDK 压缩混淆换版本也不会失效。判错的最坏后果只是日志分类不准,\n * 不会引入新的失败路径。\n */\nexport function isMissingMember(e: unknown): boolean {\n return e instanceof TypeError && /is not a (function|constructor)/.test(e.message);\n}\n\n/**\n * 调用原生 API 失败时的统一出口,按错误性质分流:\n * - 成员不存在 → reportUnsupported,语义是「这个版本没这能力」\n * - 成员存在但抛错(参数非法、SDK 内部空指针、销毁竞态……)→ debugWarn 带上原始错误\n *\n * 后者刻意不抛:behavior='throw' 的语义是「能力不支持时抛」,而且这些 catch 大多在\n * React effect / cleanup 里,抛出会连带整棵树。\n */\nexport function reportCallFailure(\n capability: Capability,\n version: BMapVersion,\n behavior: UnsupportedBehavior,\n error: unknown,\n): void {\n if (isMissingMember(error)) {\n reportUnsupported(capability, version, behavior);\n return;\n }\n debugWarn(capability, error);\n}\n\n/**\n * Getter 不支持时的兜底。先 reportUnsupported,然后返回类型断言的兜底值。\n * - number 类型建议返回 NaN(业务可用 Number.isNaN 检测)\n * - 对象类型字段为 undefined\n *\n * 调用方需根据语义传 fallback:\n * return unsupportedValue('getHeading', '3.0', behavior, NaN);\n */\nexport function unsupportedValue<T>(\n capability: Capability,\n version: BMapVersion,\n behavior: UnsupportedBehavior,\n fallback: T,\n): T {\n reportUnsupported(capability, version, behavior);\n return fallback;\n}\n\n/**\n * tryOp 工具:在 throw 模式下捕获 UnsupportedCapabilityError,转成 Result。\n * 业务想优雅处理时使用:\n * const r = tryOp(() => mapRef.flyTo(...));\n * if (!r.ok) { /* fallback *\\/ }\n */\nexport type OpResult<T> = { ok: true; value: T } | { ok: false; reason: 'unsupported'; capability: Capability };\nexport function tryOp<T>(fn: () => T): OpResult<T> {\n try {\n return { ok: true, value: fn() };\n } catch (e) {\n if (e instanceof UnsupportedCapabilityError) {\n return { ok: false, reason: 'unsupported', capability: e.capability };\n }\n throw e;\n }\n}\n","import type { Point } from '../types';\n\n/**\n * 经纬度误差容忍比较,避免浮点误差导致受控循环。\n */\nexport function pointEquals(a: Point | null | undefined, b: Point | null | undefined, eps = 1e-7): boolean {\n if (!a || !b) return a === b;\n return Math.abs(a.lng - b.lng) <= eps && Math.abs(a.lat - b.lat) <= eps;\n}\n\nexport function pointToPlain(p: unknown): Point | null {\n if (!p) return null;\n const r = p as { lng?: number; lat?: number };\n if (typeof r.lng !== 'number' || typeof r.lat !== 'number') return null;\n return { lng: r.lng, lat: r.lat };\n}\n","import type { BMapVersion, Capability, UnsupportedBehavior } from '../types';\nimport type {\n Bounds,\n ControlHandle,\n LayerHandle,\n MapHandle,\n OverlayHandle,\n Pixel,\n Point,\n ServiceHandle,\n Size,\n} from '../types';\nimport type { BMapDriver } from './types';\nimport type { BMapSDK } from '../utils/sdk';\nimport { CAPABILITY_MATRIX } from './capabilityMatrix';\nimport { unwrapHandle } from '../utils/handle';\nimport { reportCallFailure, reportUnsupported, unsupportedValue } from './unsupported';\nimport { debugWarn } from '../utils/debugWarn';\nimport { pointToPlain } from '../utils/pointEquals';\n\n// ─────────────── Handle 工厂 ───────────────\nconst mapHandle = (raw: unknown): MapHandle => ({ __brand: 'MapHandle', raw });\nconst overlayHandle = (raw: unknown, type: string): OverlayHandle => ({ __brand: 'OverlayHandle', raw, type });\nconst controlHandle = (raw: unknown, type: string): ControlHandle => ({ __brand: 'ControlHandle', raw, type });\nconst layerHandle = (raw: unknown, kind: LayerHandle['kind']): LayerHandle => ({ __brand: 'LayerHandle', raw, kind });\nconst serviceHandle = (raw: unknown, isNull: boolean): ServiceHandle => ({ __brand: 'ServiceHandle', raw, isNull });\n\nconst rawOf = (h: { raw: unknown }) => h.raw as any;\nconst rawMap = (m: MapHandle) => rawOf(m);\n\n// CanvasLayer 在 SDK 内部是 overlay(实例上 _type === 'overlay'),Map.addLayer 会\n// 拒收并打印 \"unknown layer type\",必须走 addOverlay。和 v3Driver 的分派保持一致。\n// 只认 kind:DOMLayer / FeatureLayer 之类也可能带 _type === 'overlay',但 addLayer 收得下,\n// 按 _type 探测会把它们一起改道,反而挂不上内容。\nconst isOverlayLikeLayer = (l: LayerHandle) => l.kind === 'canvas';\n\n// v4 的 Map.addLayer 靠实例上的 isXxxLayer 标记分派,认不出就打 \"unknown layer type\"。\nconst LAYER_BRANDS = ['isNormalLayer', 'isGeoJSONLayer', 'isTileLayer', 'isDistrictLayer', 'isCustomHtmlLayer', 'isWebGLLayer'];\n// PixelLayer / MVTLayer / BaiduVectorLayer 是包在真正 TileLayer 外面的一层壳:TileLayer 挂在\n// .layer 上,壳自己一个标记都没有。SDK 里只有 addTileLayer/removeTileLayer 会拆这层壳,\n// 但那两个方法又会打 \"deprecated, use addLayer instead\" —— 两条路都有警告。\n// 所以自己先拆壳,再交给 addLayer:命中的还是同一条 _addTileLayer 分支,两条警告都不会出现。\nconst unwrapTileWrapper = (raw: any) => {\n if (!raw || LAYER_BRANDS.some(b => raw[b])) return raw;\n return raw.layer?.isTileLayer ? raw.layer : raw;\n};\n\n// ─── 碰撞检测(SDK v4.0 有 enableCollisionDetection/rank 属性但未实现碰撞逻辑,框架补齐) ───\nconst collisionState = new WeakMap<object, { hidden: boolean; userVisible: boolean }>();\nconst collisionManagers = new WeakMap<object, CollisionManager>();\nconst overlayToCM = new WeakMap<object, CollisionManager>();\n\n// 已 destroy 的原生 Map 实例。React 卸载时父组件 <Map> 的 layout cleanup 先跑 destroyMap,\n// 子组件(右键菜单等)的 passive cleanup 后跑,此时地图容器已被清空 —— 需要据此跳过那些\n// 会去摸 DOM 的 detach 调用。\nconst destroyedMaps = new WeakSet<object>();\n\nclass CollisionManager {\n private mapRaw: any;\n private markers = new Set<any>();\n private unsub: (() => void) | null = null;\n private rafId: number | null = null;\n private retryCount = 0;\n pendingContainers = false;\n\n constructor(mapRaw: any) {\n this.mapRaw = mapRaw;\n const evalFn = () => this.schedule();\n try {\n const moveFn = () => evalFn();\n const zoomFn = () => evalFn();\n mapRaw.addEventListener('moveend', moveFn);\n mapRaw.addEventListener('zoomend', zoomFn);\n this.unsub = () => {\n try { mapRaw.removeEventListener?.('moveend', moveFn); } catch { /* ignore */ }\n try { mapRaw.removeEventListener?.('zoomend', zoomFn); } catch { /* ignore */ }\n };\n } catch { /* ignore */ }\n }\n\n register(rawMarker: any) {\n this.markers.add(rawMarker);\n collisionState.set(rawMarker, { hidden: false, userVisible: true });\n overlayToCM.set(rawMarker, this);\n this.retryCount = 0;\n this.schedule();\n }\n unregister(rawMarker: any) {\n this.markers.delete(rawMarker);\n collisionState.delete(rawMarker);\n overlayToCM.delete(rawMarker);\n }\n\n clear() {\n for (const m of this.markers) collisionState.delete(m);\n this.markers.clear();\n }\n\n schedule() {\n if (this.rafId != null) return;\n this.rafId = requestAnimationFrame(() => { this.rafId = null; this.evaluate(); });\n }\n\n evaluate() {\n if (this.markers.size < 2) return;\n const entries: Array<{ raw: any; px: { x: number; y: number }; rank: number }> = [];\n for (const m of this.markers) {\n try {\n const pos = m.getPosition?.();\n if (!pos) continue;\n const px = this.mapRaw.pointToPixel?.(pos);\n if (!px || typeof px.x !== 'number') continue;\n entries.push({ raw: m, px: { x: px.x, y: px.y }, rank: m.getRank?.() ?? 0 });\n } catch { /* ignore */ }\n }\n if (entries.length < 2) return;\n\n const THRESHOLD_SQ = 32 * 32;\n for (const e of entries) { const s = collisionState.get(e.raw); if (s) s.hidden = false; }\n\n for (let i = 0; i < entries.length; i++) {\n for (let j = i + 1; j < entries.length; j++) {\n const a = entries[i], b = entries[j];\n const dx = a.px.x - b.px.x, dy = a.px.y - b.px.y;\n const distSq = dx * dx + dy * dy;\n if (distSq < THRESHOLD_SQ) {\n if (a.rank > b.rank) { const s = collisionState.get(a.raw); if (s) s.hidden = true; }\n else if (b.rank > a.rank) { const s = collisionState.get(b.raw); if (s) s.hidden = true; }\n }\n }\n }\n\n for (const e of entries) {\n const s = collisionState.get(e.raw);\n if (!s) continue;\n try {\n const container = e.raw._container ?? e.raw.domElement;\n if (s.hidden && s.userVisible !== false) {\n try { e.raw.hide?.(); } catch { /* ignore */ }\n if (container) container.style.display = 'none';\n else this.pendingContainers = true; // 容器未就绪,稍后重试\n } else if (!s.hidden && s.userVisible !== false) {\n if (container) container.style.display = '';\n try { e.raw.show?.(); } catch { /* ignore */ }\n }\n } catch { /* ignore */ }\n }\n if (this.pendingContainers) { this.pendingContainers = false; if (this.retryCount++ < 5) setTimeout(() => this.schedule(), 300); }\n }\n\n destroy() {\n this.unsub?.();\n if (this.rafId != null) cancelAnimationFrame(this.rafId);\n this.clear();\n }\n}\n\n// Point / Pixel / Bounds 转换\n// SDK 形参统一用 BMapSDK(构造器签名来自官方 @baidumap/jsapi-v4-types),\n// 这一层的参数与返回值因此是真实类型,几何转换写错会在编译期暴露。\nfunction toRawPoint(SDK: BMapSDK, p: Point | null | undefined): BMap.Point {\n if (!p) return p as unknown as BMap.Point;\n if (p instanceof SDK.Point) return p;\n return new SDK.Point(p.lng, p.lat);\n}\n/** 官方 IconOptions 只声明了 anchor/imageOffset/imageSize,其余几项是 SDK 额外支持的 */\ntype RawIconOptions = BMap.IconOptions & {\n infoWindowAnchor?: BMap.Size;\n printImageUrl?: string;\n srcset?: string;\n};\n/** 把 plain icon 对象 {url, size, imageOffset, imageSize, anchor} 转成 SDK Icon 实例;\n * 或 {symbol: {path/shapeType, ...}} 转成 SDK Symbol 实例(矢量图标)。 */\nfunction toRawIcon(SDK: BMapSDK, icon: any): any {\n if (!icon) return icon;\n if (icon.raw) return icon.raw; // 已是 Handle 包装的 SDK 实例\n // Symbol 变体:{ symbol: { path | shapeType, fillColor, ... } } → SDK Symbol 实例\n if (icon.symbol && typeof icon.symbol === 'object') {\n const s = icon.symbol;\n const path = s.path ?? s.shapeType;\n if (path !== undefined) {\n const symOpts: BMap.SymbolOptions = {};\n if (s.anchor) symOpts.anchor = new SDK.Size(s.anchor.width, s.anchor.height);\n if (typeof s.fillColor === 'string') symOpts.fillColor = s.fillColor;\n if (typeof s.fillOpacity === 'number') symOpts.fillOpacity = s.fillOpacity;\n if (typeof s.scale === 'number') symOpts.scale = s.scale;\n if (typeof s.rotation === 'number') symOpts.rotation = s.rotation;\n if (typeof s.strokeColor === 'string') symOpts.strokeColor = s.strokeColor;\n if (typeof s.strokeOpacity === 'number') symOpts.strokeOpacity = s.strokeOpacity;\n if (typeof s.strokeWeight === 'number') symOpts.strokeWeight = s.strokeWeight;\n return new SDK.Symbol(path, symOpts);\n }\n }\n if (!icon.url) return icon; // 无法转换,透传\n if (!icon.size) {\n console.warn('[react-bmap] PlainIcon.size is required');\n return icon;\n }\n const sz = new SDK.Size(icon.size.width, icon.size.height);\n // v3 SDK 的 imageOffset 用 CSS background-position 语义(负值=右移),v4 用正值=裁剪起点\n const isV3 = typeof (globalThis as { BMapGL?: unknown }).BMapGL === 'undefined';\n const opts: RawIconOptions = {};\n if (icon.imageOffset) {\n const off = isV3\n ? new SDK.Size(-icon.imageOffset.width, -icon.imageOffset.height)\n : new SDK.Size(icon.imageOffset.width, icon.imageOffset.height);\n opts.imageOffset = off;\n }\n if (icon.imageSize) opts.imageSize = new SDK.Size(icon.imageSize.width, icon.imageSize.height);\n if (icon.anchor) opts.anchor = new SDK.Size(icon.anchor.width, icon.anchor.height);\n if (icon.infoWindowAnchor) opts.infoWindowAnchor = new SDK.Size(icon.infoWindowAnchor.width, icon.infoWindowAnchor.height);\n if (icon.printImageUrl) opts.printImageUrl = icon.printImageUrl;\n if (icon.srcset) opts.srcset = icon.srcset;\n const inst = new SDK.Icon(icon.url, sz, opts);\n // v3 SDK 构造函数不接受 imageSize,需要额外调 setImageSize\n if (icon.imageSize && typeof inst.setImageSize === 'function') {\n inst.setImageSize(new SDK.Size(icon.imageSize.width, icon.imageSize.height));\n }\n return inst;\n}\n/** 把 plain offset {width, height} 转成 SDK Size */\nfunction toRawSize(SDK: BMapSDK, s: Partial<Size> | null | undefined): BMap.Size {\n if (!s) return s as unknown as BMap.Size;\n if (s instanceof SDK.Size) return s;\n return new SDK.Size(s.width ?? 0, s.height ?? 0);\n}\n/**\n * option key → SDK getter/setter 方法名。\n * SDK 绝大多数属性走规则命名(icon → getIcon/setIcon),直接由 key 推导;不规则的列在别名表里。\n * 推导出的方法不存在时(如 enableDragging 只有 enable/disable、没有 getter),\n * 快照阶段会跳过该 key,交由上层告警 —— 这就是「能还原就还原、还原不了就说出来」的分界。\n */\nconst OPTION_ACCESSOR_ALIAS: Record<string, { get: string; set: string }> = {\n url: { get: 'getImageUrl', set: 'setImageUrl' },\n imageURL: { get: 'getImageUrl', set: 'setImageURL' },\n};\nfunction optionAccessor(key: string): { get: string; set: string } {\n const alias = OPTION_ACCESSOR_ALIAS[key];\n if (alias) return alias;\n const cap = key.charAt(0).toUpperCase() + key.slice(1);\n return { get: `get${cap}`, set: `set${cap}` };\n}\nfunction toRawPoints(SDK: BMapSDK, path: Point[] | null | undefined): BMap.Point[] {\n return Array.isArray(path) ? path.map(p => toRawPoint(SDK, p)) : (path as any);\n}\n/** BezierCurve 的控制点是二维数组:每组对应一段路径的 1~2 个控制点 */\nfunction toRawPointGroups(SDK: BMapSDK, groups: Point[][] | null | undefined): BMap.Point[][] {\n return Array.isArray(groups) ? groups.map(g => toRawPoints(SDK, g)) : (groups as any);\n}\n/** 判断是否为多坐标串(Point[][]),Prism 的 constructor 同时接受两种形式 */\nfunction isNestedPath(path: unknown): path is Point[][] {\n return Array.isArray(path) && Array.isArray(path[0]);\n}\n/** Prism 路径:单坐标串走 toRawPoints,多坐标串逐串转换 */\nfunction toRawPathOrPaths(SDK: BMapSDK, path: Point[] | Point[][] | null | undefined): BMap.Point[] | BMap.Point[][] {\n return isNestedPath(path) ? toRawPointGroups(SDK, path) : toRawPoints(SDK, path as Point[]);\n}\n/** 编辑态节点图标 node/nodeT:把 {url,size} 图标配置转成 SDK Icon 实例写入 ctorOpts(enableEditing 时生效) */\nfunction applyEditNodeIcons(SDK: BMapSDK, raw: Record<string, unknown> | undefined, ctorOpts: Record<string, unknown>): void {\n if (raw?.node) ctorOpts.node = toRawIcon(SDK, raw.node);\n if (raw?.nodeT) ctorOpts.nodeT = toRawIcon(SDK, raw.nodeT);\n}\nfunction toRawPixel(SDK: BMapSDK, p: Pixel | null | undefined): BMap.Pixel {\n if (!p) return p as unknown as BMap.Pixel;\n if (p instanceof SDK.Pixel) return p;\n return new SDK.Pixel(p.x, p.y);\n}\nfunction toRawBounds(SDK: BMapSDK, b: Bounds | null | undefined): BMap.Bounds {\n if (!b) return b as unknown as BMap.Bounds;\n if (b instanceof SDK.Bounds) return b;\n return new SDK.Bounds(toRawPoint(SDK, b.sw), toRawPoint(SDK, b.ne));\n}\nfunction toPlainPoint(p: any): Point | null {\n return pointToPlain(p);\n}\nfunction toPlainBounds(b: any): Bounds | null {\n if (!b) return null;\n const sw = typeof b.getSouthWest === 'function' ? b.getSouthWest() : b.sw ?? b.southWest;\n const ne = typeof b.getNorthEast === 'function' ? b.getNorthEast() : b.ne ?? b.northEast;\n const swP = toPlainPoint(sw);\n const neP = toPlainPoint(ne);\n if (!swP || !neP) return null;\n return { sw: swP, ne: neP };\n}\nfunction toPlainSize(s: any): Size | null {\n if (!s) return null;\n return { width: s.width ?? 0, height: s.height ?? 0 };\n}\nfunction toPlainPixel(p: any): Pixel | null {\n if (!p) return null;\n return { x: p.x ?? 0, y: p.y ?? 0 };\n}\n\nfunction toRawControlOptions(SDK: any, options: unknown): Record<string, unknown> {\n const raw = options as Record<string, unknown> | null | undefined;\n const out: Record<string, unknown> = {};\n if (!raw) return out;\n for (const [key, value] of Object.entries(raw)) {\n if (value === undefined || value === null) continue;\n if (key === 'children' || key === 'visible') continue;\n if (key.startsWith('on') && key !== 'onLocationStart' && key !== 'onChangeBefore' && key !== 'onChangeAfter' && key !== 'onChangeSuccess' && key !== 'onOpen' && key !== 'onClose') continue;\n if (key === 'offset' || key === 'size') out[key] = toRawSize(SDK, value);\n else if (key === 'locationIcon') out[key] = toRawIcon(SDK, value);\n else if (key === 'mapTypes' && Array.isArray(value)) out[key] = value.map(v => (v && typeof v === 'object' && 'raw' in v ? rawOf(v as any) : v));\n else if (key !== 'showStreetLayer' && key !== 'copyrights') out[key] = value;\n }\n return out;\n}\n\nfunction applyCopyrights(SDK: any, control: any, copyrights: unknown): void {\n if (!Array.isArray(copyrights)) return;\n for (const item of copyrights) {\n if (!item || typeof item !== 'object') continue;\n const rawItem: Record<string, unknown> = { ...(item as Record<string, unknown>) };\n if (rawItem.bounds) rawItem.bounds = toRawBounds(SDK, rawItem.bounds as Bounds);\n control.addCopyright?.(rawItem);\n }\n}\n\n/**\n * setOverlayOptions 里实际有 SDK setter 分支的属性名。\n * 组件的 optionProps 声明了但这里没有的属性,运行时修改不会生效(静默失效),\n * 由 warnUnhandledOverlayOptions 在 dev 下提示。新增分支时记得同步这个集合。\n */\nconst HANDLED_OVERLAY_OPTION_KEYS = new Set([\n 'strokeColor', 'strokeWeight', 'strokeOpacity', 'strokeStyle',\n 'fillColor', 'fillOpacity',\n 'topFillColor', 'topFillOpacity', 'sideFillColor', 'sideFillOpacity',\n 'enableEditing', 'enableDragging', 'enableMassClear',\n 'radius', 'bounds', 'controlPoints', 'altitude',\n 'url', 'imageURL', 'displayOnMinLevel', 'displayOnMaxLevel',\n 'rotation', 'title', 'content', 'styles', 'opacity',\n 'height', 'fillColor', 'fillOpacity', 'shape', 'size',\n 'icon', 'anchor', 'zIndex', 'offset',\n 'size', 'scale', 'shape', 'color', 'path',\n 'imageOffset', 'imageSize', 'infoWindowAnchor', 'printImageUrl', 'srcset',\n 'text', 'userData',\n 'point', 'rotationInit', 'properties',\n 'rank', 'rotationOrigin',\n // visible 不走 setOverlayOptions,由 showOverlay/hideOverlay 单独处理\n 'visible',\n]);\n\nconst warnedOverlayOptionKeys = new Set<string>();\n\n/**\n * dev 下提示 optionProps 声明了但 driver 未实现的属性。\n * 这类问题类型检查发现不了(optionProps 只是字符串数组),\n * 只会表现为「改了 prop 没反应」,很难排查。每个 type.key 只警告一次,避免刷屏。\n */\nfunction warnUnhandledOverlayOptions(type: string, o: Record<string, unknown>): void {\n // 不依赖 @types/node:从 globalThis 上安全读取,浏览器里 process 不存在时按 dev 处理\n const env = (globalThis as { process?: { env?: Record<string, string | undefined> } }).process?.env;\n if (env?.NODE_ENV === 'production') return;\n if (typeof console === 'undefined') return;\n for (const k of Object.keys(o)) {\n if (HANDLED_OVERLAY_OPTION_KEYS.has(k)) continue;\n const seen = `${type}.${k}`;\n if (warnedOverlayOptionKeys.has(seen)) continue;\n warnedOverlayOptionKeys.add(seen);\n console.warn(\n `[react-bmap] ${type} 的 \"${k}\" 声明在 optionProps 里,`\n + '但 v4Driver.setOverlayOptions 没有对应的 SDK setter 分支,运行时修改该 prop 不会生效。'\n + '要么补上分支,要么把它移到 ctorOnlyProps(改动时重建覆盖物)。',\n );\n }\n}\n\n/**\n * v4 Driver — 4.0 baseline 实现。\n * 直接 1:1 调用 window.BMap 上的类与方法;缺的能力(3.0-only)按 unsupportedBehavior 处理。\n *\n * opts.version 只影响日志文案(v3Driver 复用本实现,\n * 不传的话 3.0 会话里也会打成 \"JSAPI 4.0\")。\n * capabilities 仍固定取 4.0 矩阵:v3Driver 依赖这一点绕过能力检查直建 v3-only 的类。\n */\nexport function createV4Driver(\n rawSDK: any,\n opts: { unsupportedBehavior: UnsupportedBehavior; version?: BMapVersion },\n): BMapDriver {\n const capabilities = CAPABILITY_MATRIX['4.0'];\n const behavior = opts.unsupportedBehavior;\n const version = opts.version ?? '4.0';\n\n // 通用工具:调原生方法,失败按错误性质分流\n // (成员不存在 = 不支持,其余 = 运行时失败)\n const callRaw = (cap: Capability, fn: () => void) => {\n try { fn(); } catch (e: any) {\n if (e?.name === 'UnsupportedCapabilityError') throw e;\n reportCallFailure(cap, version, behavior, e);\n }\n };\n const getRaw = <T,>(cap: Capability, fn: () => T, fallback: T): T => {\n try { const v = fn(); return v ?? fallback; } catch (e: any) {\n if (e?.name === 'UnsupportedCapabilityError') throw e;\n // getter 无论如何都得给出兜底值;错误分类交给 reportCallFailure,不在这里重复一遍。\n reportCallFailure(cap, version, behavior, e);\n return fallback;\n }\n };\n\n // 类工厂:capabilities 不含 → null / isNull\n const createOverlayFactory = <T>(cap: Capability, ctor: () => T, type: string): OverlayHandle | null => {\n if (!capabilities.has(cap)) { reportUnsupported(cap, version, behavior); return null; }\n try { return overlayHandle(ctor(), type); }\n catch (e) { reportCallFailure(cap, version, behavior, e); return null; }\n };\n const createControlFactory = <T>(cap: Capability, ctor: () => T, type: string): ControlHandle | null => {\n if (!capabilities.has(cap)) { reportUnsupported(cap, version, behavior); return null; }\n try { return controlHandle(ctor(), type); }\n catch (e) { reportCallFailure(cap, version, behavior, e); return null; }\n };\n const createLayerFactory = <T>(cap: Capability, ctor: () => T, kind: LayerHandle['kind']): LayerHandle | null => {\n if (!capabilities.has(cap)) { reportUnsupported(cap, version, behavior); return null; }\n try { return layerHandle(ctor(), kind); }\n catch (e) { reportCallFailure(cap, version, behavior, e); return null; }\n };\n const createServiceFactory = <T>(cap: Capability, ctor: () => T): ServiceHandle => {\n if (!capabilities.has(cap)) return serviceHandle(null, true);\n // 构造失败要留痕:服务类静默变成 isNull handle,业务只会看到\"什么都没发生\"。\n try { return serviceHandle(ctor(), false); }\n catch (e) { debugWarn(cap, e); return serviceHandle(null, true); }\n };\n\n return {\n version,\n rawSDK,\n capabilities,\n unsupportedBehavior: behavior,\n\n // ─────────────── 1. Map 工厂 ───────────────\n createMap(container, options) {\n // 无 options 时只传 1 个参数:new Map(container) vs new Map(container, {})\n // SDK 可能检查 arguments.length 走不同初始化路径,影响 pane 结构和 marker DOM\n const hasOpts = options && typeof options === 'object' && Object.keys(options).length > 0;\n const map = hasOpts ? new rawSDK.Map(container, options) : new rawSDK.Map(container);\n collisionManagers.set(map, new CollisionManager(map));\n return mapHandle(map);\n },\n destroyMap(handle) {\n const map = rawMap(handle);\n destroyedMaps.add(map);\n collisionManagers.get(map)?.destroy();\n collisionManagers.delete(map);\n try { map.clearOverlays?.(); } catch { /* ignore */ }\n // 先移除所有图层,防止 SDK 异步瓦片加载在 destroy 后崩溃\n try {\n const layers = (map as any).getLayers?.() ?? [];\n for (const layer of layers) { try { (map as any).removeLayer?.(layer); } catch { /* ignore */ } }\n } catch { /* ignore */ }\n if (typeof map.destroy === 'function') {\n try { map.destroy(); } catch { /* ignore */ }\n } else {\n const c = typeof map.getContainer === 'function' ? map.getContainer() : null;\n if (c) try { c.replaceChildren?.(); } catch { /* ignore */ }\n }\n },\n\n // ─────────────── 2. 交互开关 ───────────────\n enableDragging: (map) => callRaw('Map.enableDragging', () => rawMap(map).enableDragging()),\n disableDragging: (map) => callRaw('Map.disableDragging', () => rawMap(map).disableDragging()),\n enableInertialDragging: (map) => callRaw('Map.enableInertialDragging', () => rawMap(map).enableInertialDragging()),\n disableInertialDragging: (map) => callRaw('Map.disableInertialDragging', () => rawMap(map).disableInertialDragging()),\n enableScrollWheelZoom: (map) => callRaw('Map.enableScrollWheelZoom', () => rawMap(map).enableScrollWheelZoom()),\n disableScrollWheelZoom: (map) => callRaw('Map.disableScrollWheelZoom', () => rawMap(map).disableScrollWheelZoom()),\n enableContinuousZoom: (map) => callRaw('Map.enableContinuousZoom', () => rawMap(map).enableContinuousZoom()),\n disableContinuousZoom: (map) => callRaw('Map.disableContinuousZoom', () => rawMap(map).disableContinuousZoom()),\n enableResizeOnCenter: (map) => callRaw('Map.enableResizeOnCenter', () => rawMap(map).enableResizeOnCenter()),\n disableResizeOnCenter: (map) => callRaw('Map.disableResizeOnCenter', () => rawMap(map).disableResizeOnCenter()),\n enableDoubleClickZoom: (map) => callRaw('Map.enableDoubleClickZoom', () => rawMap(map).enableDoubleClickZoom()),\n disableDoubleClickZoom: (map) => callRaw('Map.disableDoubleClickZoom', () => rawMap(map).disableDoubleClickZoom()),\n enableKeyboard: (map) => callRaw('Map.enableKeyboard', () => rawMap(map).enableKeyboard()),\n disableKeyboard: (map) => callRaw('Map.disableKeyboard', () => rawMap(map).disableKeyboard()),\n enablePinchToZoom: (map) => callRaw('Map.enablePinchToZoom', () => rawMap(map).enablePinchToZoom()),\n disablePinchToZoom: (map) => callRaw('Map.disablePinchToZoom', () => rawMap(map).disablePinchToZoom()),\n enableRotate: (map) => callRaw('Map.enableRotate', () => rawMap(map).enableRotate()),\n disableRotate: (map) => callRaw('Map.disableRotate', () => rawMap(map).disableRotate()),\n enableRotateGestures: (map) => callRaw('Map.enableRotateGestures', () => rawMap(map).enableRotateGestures()),\n disableRotateGestures: (map) => callRaw('Map.disableRotateGestures', () => rawMap(map).disableRotateGestures()),\n enableTilt: (map) => callRaw('Map.enableTilt', () => rawMap(map).enableTilt()),\n disableTilt: (map) => callRaw('Map.disableTilt', () => rawMap(map).disableTilt()),\n enableTiltGestures: (map) => callRaw('Map.enableTiltGestures', () => rawMap(map).enableTiltGestures()),\n disableTiltGestures: (map) => callRaw('Map.disableTiltGestures', () => rawMap(map).disableTiltGestures()),\n enableAutoResize: (map) => callRaw('Map.enableAutoResize', () => rawMap(map).enableAutoResize()),\n disableAutoResize: (map) => callRaw('Map.disableAutoResize', () => rawMap(map).disableAutoResize()),\n enableIconInfoWindow: (map) => callRaw('Map.enableIconInfoWindow', () => rawMap(map).enableIconInfoWindow()),\n disableIconInfoWindow: (map) => callRaw('Map.disableIconInfoWindow', () => rawMap(map).disableIconInfoWindow()),\n\n // ─────────────── 3. 视角 ───────────────\n setHeading: (map, h, o) => callRaw('Map.setHeading', () => rawMap(map).setHeading(h, o)),\n getHeading: (map) => getRaw('Map.getHeading', () => rawMap(map).getHeading(), NaN),\n setTilt: (map, t, o) => callRaw('Map.setTilt', () => rawMap(map).setTilt(t, o)),\n getTilt: (map) => getRaw('Map.getTilt', () => rawMap(map).getTilt(), NaN),\n getCurrentMaxTilt: (map) => getRaw('Map.getCurrentMaxTilt', () => rawMap(map).getCurrentMaxTilt(), NaN),\n\n // ─────────────── 4. 缩放级别 ───────────────\n setMinZoom: (map, z) => callRaw('Map.setMinZoom', () => rawMap(map).setMinZoom(z)),\n setMaxZoom: (map, z) => callRaw('Map.setMaxZoom', () => rawMap(map).setMaxZoom(z)),\n getMinZoom: (map) => getRaw('Map.getMinZoom', () => rawMap(map).getMinZoom(), NaN),\n getMaxZoom: (map) => getRaw('Map.getMaxZoom', () => rawMap(map).getMaxZoom(), NaN),\n\n // ─────────────── 5. resize ───────────────\n checkResize: (map) => callRaw('Map.checkResize', () => rawMap(map).checkResize()),\n resize: (map) => callRaw('Map.checkResize', () => rawMap(map).checkResize?.()),\n setSize: (map, size) => callRaw('Map.setSize', () => { rawMap(map).setSize?.(size); }),\n zoomTo: (map, level, point) => callRaw('Map.zoomTo', () => { const m = rawMap(map); if (point) m.zoomTo?.(level, toRawPixel(rawSDK, point as Pixel)); else m.zoomTo?.(level); }),\n\n // ─────────────── 6. 显示配置 ───────────────\n setDisplayOptions: (map, o) => callRaw('Map.setDisplayOptions', () => rawMap(map).setDisplayOptions(o)),\n setOptions: (map, o) => callRaw('Map.setOptions', () => rawMap(map).setOptions(o)),\n\n // ─────────────── 7. 容器信息 ───────────────\n getSize: (map) => getRaw('Map.getSize', () => toPlainSize(rawMap(map).getSize()) ?? { width: 0, height: 0 }, { width: 0, height: 0 }),\n getContainerSize: (map) => getRaw('Map.getContainerSize', () => toPlainSize(rawMap(map).getContainerSize()) ?? { width: 0, height: 0 }, { width: 0, height: 0 }),\n getZoomUnits: (map) => getRaw('Map.getZoomUnits', () => rawMap(map).getZoomUnits(), NaN),\n getContainer: (map) => getRaw('Map.getContainer', () => rawMap(map).getContainer(), document.createElement('div')),\n\n // ─────────────── 8. 坐标转换 ───────────────\n pixelToPoint: (map, p, o) => getRaw('Map.pixelToPoint', () => toPlainPoint(rawMap(map).pixelToPoint(toRawPixel(rawSDK, p), o)) ?? ({ lng: NaN, lat: NaN } as Point), { lng: NaN, lat: NaN } as Point),\n pointToPixel: (map, p, o) => getRaw('Map.pointToPixel', () => toPlainPixel(rawMap(map).pointToPixel(toRawPoint(rawSDK, p), o)) ?? { x: 0, y: 0 }, { x: 0, y: 0 }),\n lnglatToMercator: (map, lng, lat) => getRaw('Map.lnglatToMercator', () => rawMap(map).lnglatToMercator(lng, lat) ?? [NaN, NaN], [NaN, NaN] as [number, number]),\n mercatorToLnglat: (map, x, y) => getRaw('Map.mercatorToLnglat', () => rawMap(map).mercatorToLnglat(x, y) ?? [NaN, NaN], [NaN, NaN] as [number, number]),\n pointToOverlayPixel: (map, p, o) => getRaw('Map.pointToOverlayPixel', () => toPlainPixel(rawMap(map).pointToOverlayPixel(toRawPoint(rawSDK, p), o)) ?? { x: 0, y: 0 }, { x: 0, y: 0 }),\n overlayPixelToPoint: (map, p, o) => getRaw('Map.overlayPixelToPoint', () => toPlainPoint(rawMap(map).overlayPixelToPoint(toRawPixel(rawSDK, p), o)) ?? ({ lng: NaN, lat: NaN } as Point), { lng: NaN, lat: NaN } as Point),\n getDistance: (map, a, b) => getRaw('Map.getDistance', () => rawMap(map).getDistance(toRawPoint(rawSDK, a), toRawPoint(rawSDK, b)), NaN),\n\n // ─────────────── 9. 地图状态 ───────────────\n isLoaded: (map) => getRaw('Map.isLoaded', () => (typeof rawMap(map).isLoaded === 'function' ? rawMap(map).isLoaded() : true), true),\n getCoordType: (map) => getRaw('Map.getCoordType', () => rawMap(map).getCoordType(), ''),\n getMapTypeId: (map) => getRaw('Map.getMapTypeId', () => rawMap(map).getMapTypeId?.() ?? rawMap(map).getMapType?.() ?? '', ''),\n getMapCoordType: (map) => getRaw('Map.getMapCoordType', () => rawMap(map).getMapCoordType?.(), ''),\n getMapStyleId: (map) => getRaw('Map.getMapStyleId', () => rawMap(map).getMapStyleId?.(), ''),\n getAreaStyleId: (map) => getRaw('Map.getAreaStyleId', () => rawMap(map).getAreaStyleId?.(), ''),\n getRenderType: (map) => getRaw('Map.getRenderType', () => rawMap(map).getRenderType?.(), ''),\n isCanvasMap: (map) => getRaw('Map.isCanvasMap', () => rawMap(map).isCanvasMap?.() ?? false, false),\n getProjection: (map) => getRaw('Map.getProjection', () => rawMap(map).getProjection?.(), null),\n getSolarInfo: (map, date) => getRaw('Map.getSolarInfo', () => rawMap(map).getSolarInfo?.(date), null),\n getTileId: (map, p, level) => getRaw('Map.getTileId', () => rawMap(map).getTileId?.(toRawPoint(rawSDK, p), level), ''),\n getPoiByUid: (map, uid, cb) => callRaw('Map.getPoiByUid', () => rawMap(map).getPoiByUid?.(uid, cb)),\n getPanes: (map) => getRaw('Map.getPanes', () => rawMap(map).getPanes?.(), null),\n getInfoWindow: (map) => getRaw('Map.getInfoWindow', () => { const iw = rawMap(map).getInfoWindow?.(); return iw ? overlayHandle(iw, 'infoWindow') : null; }, null),\n\n // ─────────────── 10. Spots / 标注 ───────────────\n addSpots: (map, s, o) => getRaw('Map.addSpots', () => rawMap(map).addSpots(s, o) ?? '', ''),\n getSpots: (map, id) => getRaw('Map.getSpots', () => rawMap(map).getSpots(id) ?? [], []),\n removeSpots: (map, id) => callRaw('Map.removeSpots', () => rawMap(map).removeSpots(id)),\n clearSpots: (map) => callRaw('Map.clearSpots', () => rawMap(map).clearSpots()),\n resetSpotStatus: (map) => callRaw('Map.resetSpotStatus', () => rawMap(map).resetSpotStatus?.()),\n hightlightSpotByUid: (map, uid, tilePosStr) => callRaw('Map.hightlightSpotByUid', () => rawMap(map).hightlightSpotByUid(uid, tilePosStr)),\n addAreaSpot: (map, a, o) => getRaw('Map.addAreaSpot', () => rawMap(map).addAreaSpot(a, o) ?? '', ''),\n getAreaSpot: (map, id) => getRaw('Map.getAreaSpot', () => rawMap(map).getAreaSpot(id) ?? [], []),\n removeAreaSpot: (map, id) => callRaw('Map.removeAreaSpot', () => rawMap(map).removeAreaSpot(id)),\n clearAreaSpots: (map) => callRaw('Map.clearAreaSpots', () => rawMap(map).clearAreaSpots()),\n clearLabels: (map) => callRaw('Map.clearLabels', () => rawMap(map).clearLabels?.()),\n addMapLabels: (map, l) => getRaw('Map.addMapLabels', () => rawMap(map).addMapLabels(l) ?? [], []),\n removeMapLabels: (map, u) => callRaw('Map.removeMapLabels', () => rawMap(map).removeMapLabels(u)),\n getIconByClickPosition: (map, p) => getRaw('Map.getIconByClickPosition', () => rawMap(map).getIconByClickPosition?.(toRawPixel(rawSDK, p)) ?? null, null),\n setBounds: (map, b) => callRaw('Map.setBounds', () => rawMap(map).setBounds?.(toRawBounds(rawSDK, b))),\n\n // ─────────────── 11. 视野控制 ───────────────\n centerAndZoom: (map, c, z, o) => callRaw('Map.centerAndZoom', () => {\n const m = rawMap(map);\n if (typeof c === 'string') m.centerAndZoom(c, z, o);\n else m.centerAndZoom(toRawPoint(rawSDK, c), z, o);\n }),\n panTo: (map, c, o) => callRaw('Map.panTo', () => rawMap(map).panTo(toRawPoint(rawSDK, c as Point), o)),\n panBy: (map, x, y, o) => callRaw('Map.panBy', () => rawMap(map).panBy(x, y, o)),\n flyTo: (map, c, z, o) => callRaw('Map.flyTo', () => rawMap(map).flyTo(toRawPoint(rawSDK, c), z, o)),\n reset: (map) => callRaw('Map.reset', () => rawMap(map).reset()),\n setCenter: (map, c, o) => callRaw('Map.setCenter', () => rawMap(map).setCenter(typeof c === 'string' ? c : toRawPoint(rawSDK, c), o)),\n getCenter: (map) => getRaw('Map.getCenter', () => toPlainPoint(rawMap(map).getCenter()) ?? ({ lng: NaN, lat: NaN } as Point), { lng: NaN, lat: NaN } as Point),\n setViewport: (map, v, o) => callRaw('Map.setViewport', () => rawMap(map).setViewport(Array.isArray(v) ? toRawPoints(rawSDK, v) : v, o)),\n getViewport: (map, v, o) => getRaw('Map.getViewport', () => rawMap(map).getViewport(Array.isArray(v) ? toRawPoints(rawSDK, v) : v, o), null),\n setZoom: (map, z, o) => callRaw('Map.setZoom', () => rawMap(map).setZoom(z, o)),\n getZoom: (map) => getRaw('Map.getZoom', () => rawMap(map).getZoom(), NaN),\n zoomIn: (map, zc) => callRaw('Map.zoomIn', () => rawMap(map).zoomIn(zc && toRawPoint(rawSDK, zc))),\n zoomOut: (map, zc) => callRaw('Map.zoomOut', () => rawMap(map).zoomOut(zc && toRawPoint(rawSDK, zc))),\n getBounds: (map) => getRaw('Map.getBounds', () => toPlainBounds(rawMap(map).getBounds()) ?? ({ sw: { lng: NaN, lat: NaN }, ne: { lng: NaN, lat: NaN } }), { sw: { lng: NaN, lat: NaN }, ne: { lng: NaN, lat: NaN } }),\n restrictBounds: (map, b) => callRaw('Map.restrictBounds', () => rawMap(map).restrictBounds(b ? toRawBounds(rawSDK, b) : null)),\n\n // ─────────────── 12. 地图类型 ───────────────\n setMapType: (map, t) => callRaw('Map.setMapType', () => rawMap(map).setMapType(t)),\n getMapType: (map) => getRaw('Map.getMapType', () => rawMap(map).getMapType?.() ?? '', ''),\n\n // ─────────────── 13. 控件 / 右键菜单 ───────────────\n addControl: (map, c) => callRaw('Map.addControl', () => rawMap(map).addControl(rawOf(c))),\n removeControl: (map, c) => callRaw('Map.removeControl', () => rawMap(map).removeControl(rawOf(c))),\n setControlOptions: (c, options) => {\n try {\n const raw = rawOf(c);\n const opts = toRawControlOptions(rawSDK, options);\n if (opts.anchor !== undefined) raw.setAnchor?.(opts.anchor);\n if (opts.offset !== undefined) raw.setOffset?.(opts.offset);\n if (c.type === 'navigation' && opts.type !== undefined) raw.setType?.(opts.type);\n if (c.type === 'scale' && (options as any)?.unit !== undefined) raw.setUnit?.((options as any).unit);\n if (c.type === 'overview') {\n if (opts.size !== undefined) raw.setSize?.(opts.size);\n if ((options as any)?.isOpen !== undefined) {\n // v3 没有 isOpen() 方法,读 _opts.isOpen;changeView 是 toggle,只在状态不同时调\n const currentOpen = typeof raw.isOpen === 'function' ? raw.isOpen() : (raw as any)._opts?.isOpen;\n const desired = (options as any).isOpen;\n if (currentOpen !== desired) raw.changeView?.();\n }\n }\n if ((c.type === 'geolocation' || c.type === 'location') && raw.setOptions) raw.setOptions(opts);\n if (c.type === 'mapType' && (options as any)?.showStreetLayer !== undefined) raw.showStreetLayer?.((options as any).showStreetLayer);\n if (c.type === 'copyright') applyCopyrights(rawSDK, raw, (options as any)?.copyrights);\n } catch { /* ignore */ }\n },\n showControl: (c) => { try { rawOf(c).show?.(); } catch { /* ignore */ } },\n hideControl: (c) => { try { rawOf(c).hide?.(); } catch { /* ignore */ } },\n addContextMenu: (target, menu) => callRaw('Map.addContextMenu', () => rawOf(target).addContextMenu(rawOf(menu))),\n removeContextMenu: (target, menu) => {\n const raw = rawOf(target);\n // SDK 的 ContextMenu.remove() 是裸的 this.P.parentNode.removeChild(this.P),不判空 parentNode。\n // 地图 destroy 后容器已被清空,菜单 DOM 连 parentNode 都没了 —— 这时地图本身都不在了,\n // 没什么需要摘的,直接跳过,避免报成\"能力不支持\"的误导性警告。\n if (destroyedMaps.has(raw) || destroyedMaps.has(raw?.getMap?.())) return;\n callRaw('Map.removeContextMenu', () => raw.removeContextMenu(rawOf(menu)));\n },\n\n // ─────────────── 14. 覆盖物 ───────────────\n addOverlay: (map, o) => {\n callRaw('Map.addOverlay', () => rawMap(map).addOverlay(rawOf(o)));\n const raw = rawOf(o);\n if (raw?._config?.enableCollisionDetection) {\n collisionManagers.get(rawMap(map))?.register(raw);\n }\n },\n removeOverlay: (map, o) => {\n const raw = rawOf(o);\n collisionManagers.get(rawMap(map))?.unregister(raw);\n // 在 removeOverlay 前先关闭编辑:Circle/Polyline/Polygon 的编辑句柄\n // 在 overlay 被移除时若仍激活,会触发 \"Cannot read properties of null\"。\n try { raw?.disableEditing?.(); } catch { /* ignore */ }\n callRaw('Map.removeOverlay', () => rawMap(map).removeOverlay(raw));\n },\n clearOverlays: (map) => {\n collisionManagers.get(rawMap(map))?.clear();\n callRaw('Map.clearOverlays', () => rawMap(map).clearOverlays());\n },\n getOverlays: (map) => getRaw('Map.getOverlays', () => (rawMap(map).getOverlays() ?? []).map((o: any) => overlayHandle(o, inferOverlayType(o))), []),\n\n // Label 挂到 Marker:marker.setLabel 会把 label 定位到 marker 的 point,并随 marker 定位/拖拽跟随。\n setMarkerLabel: (marker, label) => callRaw('Marker.setLabel', () => rawOf(marker)?.setLabel?.(rawOf(label))),\n // SDK 没有官方「解除 label」API(setLabel(null) 会因 instanceof 检查被忽略):\n // 兜底隐藏 label 实例并清掉 marker 内部引用,避免 label 组件卸载后残留在 marker 上。\n removeMarkerLabel: (marker, label) => {\n try {\n rawOf(label)?.hide?.();\n const m = rawOf(marker);\n if (m?._config && m._config.label === rawOf(label)) m._config.label = null;\n // 触发 marker 重绘,让清掉的 label 立即从画面消失\n try { m?.setPoint?.(m.getPosition?.() ?? m.point); } catch { /* ignore */ }\n } catch { /* ignore */ }\n },\n\n // ─────────────── 15. 图层 ───────────────\n addLayer: (map, l) => {\n if (isOverlayLikeLayer(l)) { callRaw('Map.addOverlay', () => rawMap(map).addOverlay(rawOf(l))); return; }\n callRaw('Map.addLayer', () => rawMap(map).addLayer(unwrapTileWrapper(rawOf(l))));\n },\n removeLayer: (map, l) => {\n if (isOverlayLikeLayer(l)) { callRaw('Map.removeOverlay', () => rawMap(map).removeOverlay(rawOf(l))); return; }\n callRaw('Map.removeLayer', () => rawMap(map).removeLayer(unwrapTileWrapper(rawOf(l))));\n },\n addTileLayer: (map, l) => callRaw('Map.addTileLayer', () => rawMap(map).addTileLayer(rawOf(l))),\n removeTileLayer: (map, l) => callRaw('Map.removeTileLayer', () => rawMap(map).removeTileLayer(rawOf(l))),\n getTileLayer: (map, t) => {\n if (!capabilities.has('Map.getTileLayer')) { reportUnsupported('Map.getTileLayer', version, behavior); return null; }\n const r = rawMap(map).getTileLayer?.(t);\n return r ? layerHandle(r, 'tile') : null;\n },\n addGeoJSONLayer: (map, l) => callRaw('Map.addGeoJSONLayer', () => rawMap(map).addGeoJSONLayer(rawOf(l))),\n removeGeoJSONLayer: (map, l) => callRaw('Map.removeGeoJSONLayer', () => rawMap(map).removeGeoJSONLayer(rawOf(l))),\n addDistrictLayer: (map, l) => callRaw('Map.addDistrictLayer', () => rawMap(map).addDistrictLayer(rawOf(l))),\n removeDistrictLayer: (map, l) => callRaw('Map.removeDistrictLayer', () => rawMap(map).removeDistrictLayer(rawOf(l))),\n addNormalLayer: (map, l) => callRaw('Map.addNormalLayer', () => rawMap(map).addNormalLayer(rawOf(l))),\n removeNormalLayer: (map, l) => callRaw('Map.removeNormalLayer', () => rawMap(map).removeNormalLayer(rawOf(l))),\n setTrafficOn: (map) => callRaw('Map.setTrafficOn', () => rawMap(map).setTrafficOn()),\n setTrafficOff: (map) => callRaw('Map.setTrafficOff', () => rawMap(map).setTrafficOff()),\n showOverlayContainer: (map) => callRaw('Map.showOverlayContainer', () => rawMap(map).showOverlayContainer?.()),\n hideOverlayContainer: (map) => callRaw('Map.hideOverlayContainer', () => rawMap(map).hideOverlayContainer?.()),\n\n // ─────────────── 16. 信息窗口(v4 由 Marker 承载) ───────────────\n openInfoWindow: (target, iw, point) => {\n const t = rawOf(target);\n if (typeof t.openInfoWindow === 'function') {\n callRaw('Marker.openInfoWindow', () => t.openInfoWindow(rawOf(iw), point && toRawPoint(rawSDK, point)));\n } else {\n reportUnsupported('Marker.openInfoWindow', version, behavior);\n }\n },\n closeInfoWindow: (target) => callRaw('Map.closeInfoWindow', () => rawOf(target).closeInfoWindow?.()),\n openSimpleInfoWindow: (map, iw, point) => callRaw('Map.openSimpleInfoWindow', () => rawMap(map).openSimpleInfoWindow?.(rawOf(iw), toRawPoint(rawSDK, point))),\n closeSimpleInfoWindow: (map) => callRaw('Map.closeSimpleInfoWindow', () => rawMap(map).closeSimpleInfoWindow?.()),\n\n // ─────────────── 17. 样式 / 主题 ───────────────\n setMapStyle: (map, o) => callRaw('Map.setMapStyle', () => rawMap(map).setMapStyle(o)),\n setMapStyleV2: (map, o) => callRaw('Map.setMapStyleV2', () => rawMap(map).setMapStyleV2(o)),\n setTheme: (map, t, cv) => callRaw('Map.setTheme', () => rawMap(map).setTheme(t, cv)),\n setCopyrightOffset: (map, l, c) => callRaw('Map.setCopyrightOffset', () => rawMap(map).setCopyrightOffset(l, c)),\n setDefaultCursor: (map, c) => callRaw('Map.setDefaultCursor', () => rawMap(map).setDefaultCursor(c)),\n getDefaultCursor: (map) => getRaw('Map.getDefaultCursor', () => rawMap(map).getDefaultCursor?.() ?? '', ''),\n setDraggingCursor: (map, c) => callRaw('Map.setDraggingCursor', () => rawMap(map).setDraggingCursor(c)),\n getDraggingCursor: (map) => getRaw('Map.getDraggingCursor', () => rawMap(map).getDraggingCursor?.() ?? '', ''),\n setOverlayMoveCursor: (map, c) => callRaw('Map.setOverlayMoveCursor', () => rawMap(map).setOverlayMoveCursor?.(c)),\n\n // ─────────────── 18. 视角动画 ───────────────\n // pause/continue/cancel 在没有进行中的动画时会抛 TypeError(读 _viewAnimationController 为 undefined),\n // 这是 SDK 正常行为,不算\"不支持\",静默吞掉即可。\n startViewAnimation: (map, a) => getRaw('Map.startViewAnimation', () => rawMap(map).startViewAnimation(a) ?? 0, 0),\n pauseViewAnimation: (map, a) => { try { rawMap(map).pauseViewAnimation?.(a); } catch { /* 无进行中动画 */ } },\n continueViewAnimation: (map, a) => { try { rawMap(map).continueViewAnimation?.(a); } catch { /* 无进行中动画 */ } },\n cancelViewAnimation: (map, a) => { try { rawMap(map).cancelViewAnimation?.(a); } catch { /* 无进行中动画 */ } },\n\n // ─────────────── 19. 截图 ───────────────\n getScreenshot: (map) => getRaw('Map.getScreenshot', () => rawMap(map).getScreenshot?.() ?? rawMap(map).getMapScreenshot?.() ?? '', ''),\n\n // ─────────────── 20. 地球模式 ───────────────\n isSupportEarth: (map) => getRaw('Map.isSupportEarth', () => rawMap(map).isSupportEarth?.() ?? false, false),\n getEarth: (map) => getRaw('Map.getEarth', () => rawMap(map).getEarth?.(), null),\n showEarthBoundary: (map) => callRaw('Map.showEarthBoundary', () => rawMap(map).showEarthBoundary?.()),\n hideEarthBoundary: (map) => callRaw('Map.hideEarthBoundary', () => rawMap(map).hideEarthBoundary?.()),\n setEarthMaxZoom: (map, z) => callRaw('Map.setEarthMaxZoom', () => rawMap(map).setEarthMaxZoom?.(z)),\n setEarthMinZoom: (map, z) => callRaw('Map.setEarthMinZoom', () => rawMap(map).setEarthMinZoom?.(z)),\n\n // ─────────────── 21. 室内 ───────────────\n showIndoor: (map, uid, floor) => callRaw('Map.showIndoor', () => rawMap(map).showIndoor?.(uid, floor)),\n setIndoor: (map, uid, floor) => callRaw('Map.setIndoor', () => rawMap(map).setIndoor?.(uid, floor)),\n getIndoorInfo: (map) => getRaw('Map.getIndoorInfo', () => rawMap(map).getIndoorInfo?.() ?? null, null),\n initIndoorLayer: (map, opts) => getRaw('Map.initIndoorLayer', () => rawMap(map).initIndoorLayer?.(opts), null),\n setNormalMapDisplay: (map, display) => callRaw('Map.setNormalMapDisplay', () => rawMap(map).setNormalMapDisplay?.(display)),\n getVectorContainer: (map) => getRaw('Map.getVectorContainer', () => rawMap(map).getVectorContainer?.(), null),\n\n // ─────────────── 22. 街景图层 ───────────────\n showStreetLayer: (map, s) => callRaw('Map.showStreetLayer', () => rawMap(map).showStreetLayer?.(s)),\n hideStreetLayer: (map) => callRaw('Map.hideStreetLayer', () => rawMap(map).hideStreetLayer?.()),\n isStreetLayerShow: (map) => getRaw('Map.isStreetLayerShow', () => rawMap(map).isStreetLayerShow?.() ?? false, false),\n showVectorStreetLayer: (map) => callRaw('Map.showVectorStreetLayer', () => rawMap(map).showVectorStreetLayer?.()),\n hideVectorStreetLayer: (map) => callRaw('Map.hideVectorStreetLayer', () => rawMap(map).hideVectorStreetLayer?.()),\n\n // ─────────────── 23. 语言 ───────────────\n getLanguage: (map) => getRaw('Map.getLanguage', () => rawMap(map).getLanguage?.() ?? '', ''),\n changeLanguage: (map, l) => callRaw('Map.changeLanguage', () => rawMap(map).changeLanguage?.(l)),\n enablePreferredLanguage: (map, l) => callRaw('Map.enablePreferredLanguage', () => rawMap(map).enablePreferredLanguage?.(l)),\n disablePreferredLanguage: (map) => callRaw('Map.disablePreferredLanguage', () => rawMap(map).disablePreferredLanguage?.()),\n\n // ─────────────── 24. 私有 / 焦点遮罩 / 自定义 HTML 图层 ───────────────\n setLock: (map, l) => callRaw('Map.setLock', () => rawMap(map).setLock?.(l)),\n setPrivateRegions: (map, r) => callRaw('Map.setPrivateRegions', () => rawMap(map).setPrivateRegions?.(r)),\n getPrivateRegions: (map) => getRaw('Map.getPrivateRegions', () => rawMap(map).getPrivateRegions?.() ?? [], []),\n setPrivateStatus: (map, s) => callRaw('Map.setPrivateStatus', () => rawMap(map).setPrivateStatus?.(s)),\n getPrivateStatus: (map) => getRaw('Map.getPrivateStatus', () => rawMap(map).getPrivateStatus?.() ?? false, false),\n setCustomArea: (map, c) => callRaw('Map.setCustomArea', () => {\n const cfg = (c ?? {}) as { area?: Point[]; [k: string]: unknown };\n // area 用普通经纬度传入,这里转成原生 Point(已是 Point 实例则原样返回)\n const rawCfg = Array.isArray(cfg.area) ? { ...cfg, area: toRawPoints(rawSDK, cfg.area) } : cfg;\n return rawMap(map).setCustomArea?.(rawCfg);\n }),\n addFocusMask: (map, m) => callRaw('Map.addFocusMask', () => rawMap(map).addFocusMask?.(m)),\n removeFocusMask: (map, m) => callRaw('Map.removeFocusMask', () => rawMap(map).removeFocusMask?.(m)),\n clearFocusMasks: (map) => callRaw('Map.clearFocusMasks', () => rawMap(map).clearFocusMasks?.()),\n addCustomHtmlLayer: (map, l) => callRaw('Map.addCustomHtmlLayer', () => rawMap(map).addCustomHtmlLayer?.(l)),\n removeCustomHtmlLayer: (map, l) => callRaw('Map.removeCustomHtmlLayer', () => rawMap(map).removeCustomHtmlLayer?.(l)),\n addParkingSpot: (map, l) => callRaw('Map.addParkingSpot', () => rawMap(map).addParkingSpot?.(l)),\n removeParkingSpot: (map, p) => callRaw('Map.removeParkingSpot', () => rawMap(map).removeParkingSpot?.(p)),\n\n // ─────────────── 25. 3.0-only(v4 不支持) ───────────────\n enableMapClick: () => reportUnsupported('Map.enableMapClick', version, behavior),\n disableMapClick: () => reportUnsupported('Map.disableMapClick', version, behavior),\n enable3DBuilding: () => reportUnsupported('Map.enable3DBuilding', version, behavior),\n disable3DBuilding: () => reportUnsupported('Map.disable3DBuilding', version, behavior),\n setPanorama: () => reportUnsupported('Map.setPanorama', version, behavior),\n getPanorama: () => unsupportedValue('Map.getPanorama', version, behavior, null),\n setCurrentCity: () => reportUnsupported('Map.setCurrentCity', version, behavior),\n highResolutionEnabled: (map) => getRaw('Map.highResolutionEnabled', () => rawMap(map).highResolutionEnabled?.() ?? false, false),\n addHotspot: (map, h) => { try { rawMap(map).addHotspot?.(rawOf(h)); } catch { /* ignore */ } },\n removeHotspot: (map, h) => { try { rawMap(map).removeHotspot?.(rawOf(h)); } catch { /* ignore */ } },\n clearHotspots: (map) => { try { rawMap(map).clearHotspots?.(); } catch { /* ignore */ } },\n\n // ─────────────── 26. Overlay 工厂 ───────────────\n createMarker: (p, o) => {\n // v3 SDK 可能检查 arguments.length:new Marker(point) vs new Marker(point, undefined) 走不同路径。\n // 必须确保无 opts 时只传 1 个参数。\n const raw = o as Record<string, unknown>;\n const ctorOpts: Record<string, unknown> = {};\n if (raw?.icon) ctorOpts.icon = toRawIcon(rawSDK, raw.icon);\n if (raw?.offset) ctorOpts.offset = toRawSize(rawSDK, raw.offset);\n // 以下选项 SDK 没有 setter 方法,只能在 constructor 设置\n if (typeof raw?.enableClicking === 'boolean') ctorOpts.enableClicking = raw.enableClicking;\n if (typeof raw?.raiseOnDrag === 'boolean') ctorOpts.raiseOnDrag = raw.raiseOnDrag;\n if (typeof raw?.draggingCursor === 'string') ctorOpts.draggingCursor = raw.draggingCursor;\n if (typeof raw?.enableCollisionDetection === 'boolean') ctorOpts.enableCollisionDetection = raw.enableCollisionDetection;\n if (typeof raw?.enableDraggingMap === 'boolean') ctorOpts.enableDraggingMap = raw.enableDraggingMap;\n if (typeof raw?.baseZIndex === 'number') ctorOpts.baseZIndex = raw.baseZIndex;\n if (typeof raw?.restrictDraggingArea === 'boolean') ctorOpts.restrictDraggingArea = raw.restrictDraggingArea;\n if (typeof raw?.anchor === 'number') ctorOpts.anchor = raw.anchor;\n // shadow @removed 4.0,v3 only;icon 类型转换同样适用\n if (raw?.shadow) ctorOpts.shadow = toRawIcon(rawSDK, raw.shadow);\n const hasOpts = Object.keys(ctorOpts).length > 0;\n const point = toRawPoint(rawSDK, p);\n return createOverlayFactory('Marker', () =>\n hasOpts ? new rawSDK.Marker(point, ctorOpts) : new rawSDK.Marker(point),\n 'marker');\n },\n createLabel: (c, o) => {\n const raw = o as Record<string, unknown>;\n const ctorOpts: Record<string, unknown> = {};\n if (raw?.offset) ctorOpts.offset = toRawSize(rawSDK, raw.offset);\n if (raw?.position) ctorOpts.position = toRawPoint(rawSDK, raw.position as Point);\n if (typeof raw?.anchor === 'number') ctorOpts.anchor = raw.anchor;\n if (typeof raw?.enableMassClear === 'boolean') ctorOpts.enableMassClear = raw.enableMassClear;\n if (typeof raw?.enableClicking === 'boolean') ctorOpts.enableClicking = raw.enableClicking;\n if (typeof raw?.width === 'number' && raw.width > 0) ctorOpts.width = raw.width;\n // SDK 的 OverlayInternal.setConfig 对 styles 是「整体替换」而非合并,用户传 styles 会覆盖掉\n // Label 默认的 whiteSpace:'nowrap'(单行),导致文字变多行。这里在用户未显式指定 whiteSpace 时\n // 补回 nowrap,保持与原生 JSAPI 一致的单行显示(用户仍可显式传 whiteSpace:'normal' 换行)。\n if (raw?.styles && typeof raw.styles === 'object') {\n const s = raw.styles as Record<string, unknown>;\n ctorOpts.styles = ('whiteSpace' in s) ? s : { whiteSpace: 'nowrap', ...s };\n }\n const hasOpts = Object.keys(ctorOpts).length > 0;\n return createOverlayFactory('Label', () =>\n hasOpts ? new rawSDK.Label(c, ctorOpts) : new rawSDK.Label(c),\n 'label');\n },\n createPolyline: (p, o) => {\n const raw = o as Record<string, unknown>;\n const ctorOpts: Record<string, unknown> = {};\n const strokeFields = ['strokeColor', 'strokeWeight', 'strokeOpacity', 'strokeStyle', 'strokeLineCap', 'strokeLineJoin'];\n for (const f of strokeFields) { if (raw?.[f] !== undefined) ctorOpts[f] = raw[f]; }\n if (typeof raw?.enableMassClear === 'boolean') ctorOpts.enableMassClear = raw.enableMassClear;\n if (typeof raw?.enableEditing === 'boolean') ctorOpts.enableEditing = raw.enableEditing;\n if (typeof raw?.enableClicking === 'boolean') ctorOpts.enableClicking = raw.enableClicking;\n if (typeof raw?.geodesic === 'boolean') ctorOpts.geodesic = raw.geodesic;\n if (typeof raw?.linkRight === 'boolean') ctorOpts.linkRight = raw.linkRight;\n if (typeof raw?.clip === 'boolean') ctorOpts.clip = raw.clip;\n if (typeof raw?.coordType === 'string') ctorOpts.coordType = raw.coordType;\n if (raw?.icons) ctorOpts.icons = (raw.icons as unknown[]).map(ic =>\n ic && typeof ic === 'object' && 'raw' in ic ? rawOf(ic as any) : ic,\n );\n if (raw?.dashArray) ctorOpts.dashArray = raw.dashArray;\n if (raw?.strokeTexture) ctorOpts.strokeTexture = raw.strokeTexture;\n if (typeof raw?.zIndex === 'number') ctorOpts.zIndex = raw.zIndex;\n applyEditNodeIcons(rawSDK, raw, ctorOpts);\n const hasOpts = Object.keys(ctorOpts).length > 0;\n return createOverlayFactory('Polyline', () =>\n hasOpts ? new rawSDK.Polyline(toRawPoints(rawSDK, p), ctorOpts) : new rawSDK.Polyline(toRawPoints(rawSDK, p)),\n 'polyline');\n },\n createPolygon: (p, o) => {\n const raw = o as Record<string, unknown>;\n const ctorOpts: Record<string, unknown> = {};\n const fields = ['strokeColor', 'fillColor', 'strokeWeight', 'strokeOpacity', 'fillOpacity', 'strokeStyle', 'strokeLineCap', 'strokeLineJoin'];\n for (const f of fields) { if (raw?.[f] !== undefined) ctorOpts[f] = raw[f]; }\n if (typeof raw?.enableMassClear === 'boolean') ctorOpts.enableMassClear = raw.enableMassClear;\n if (typeof raw?.enableEditing === 'boolean') ctorOpts.enableEditing = raw.enableEditing;\n if (typeof raw?.enableClicking === 'boolean') ctorOpts.enableClicking = raw.enableClicking;\n if (typeof raw?.linkRight === 'boolean') ctorOpts.linkRight = raw.linkRight;\n if (typeof raw?.coordType === 'string') ctorOpts.coordType = raw.coordType;\n if (raw?.dashArray) ctorOpts.dashArray = raw.dashArray;\n if (typeof raw?.zIndex === 'number') ctorOpts.zIndex = raw.zIndex;\n applyEditNodeIcons(rawSDK, raw, ctorOpts);\n const hasOpts = Object.keys(ctorOpts).length > 0;\n // path 支持单坐标串 Point[] 或多坐标串 Point[][](镂空/多环,对齐 JSAPI)\n const rawPath = toRawPathOrPaths(rawSDK, p as Point[] | Point[][]);\n return createOverlayFactory('Polygon', () =>\n hasOpts ? new rawSDK.Polygon(rawPath, ctorOpts) : new rawSDK.Polygon(rawPath),\n 'polygon');\n },\n createCircle: (c, r, o) => {\n const raw = o as Record<string, unknown>;\n // enableEditing 不传给 constructor:SDK 在 constructor 阶段初始化编辑句柄时\n // 会访问内部 path 数组(Circle 没有 path,只有 center+radius),\n // 导致 \"Cannot read properties of null (reading '0')\"。\n // 改为创建后用 rAF 延迟调用 enableEditing(),此时 overlay 已 addOverlay 到地图。\n const wantEditing = raw?.enableEditing === true;\n const ctorOpts: Record<string, unknown> = {};\n const fields = ['strokeColor', 'fillColor', 'strokeWeight', 'strokeOpacity', 'fillOpacity', 'strokeStyle'];\n for (const f of fields) { if (raw?.[f] !== undefined) ctorOpts[f] = raw[f]; }\n if (typeof raw?.enableMassClear === 'boolean') ctorOpts.enableMassClear = raw.enableMassClear;\n if (typeof raw?.enableClicking === 'boolean') ctorOpts.enableClicking = raw.enableClicking;\n if (typeof raw?.coordType === 'string') ctorOpts.coordType = raw.coordType;\n if (raw?.dashArray) ctorOpts.dashArray = raw.dashArray;\n if (typeof raw?.zIndex === 'number') ctorOpts.zIndex = raw.zIndex;\n applyEditNodeIcons(rawSDK, raw, ctorOpts);\n const hasOpts = Object.keys(ctorOpts).length > 0;\n return createOverlayFactory('Circle', () => {\n const inst = hasOpts\n ? new rawSDK.Circle(toRawPoint(rawSDK, c), r, ctorOpts)\n : new rawSDK.Circle(toRawPoint(rawSDK, c), r);\n if (wantEditing) {\n const rafId = requestAnimationFrame(() => {\n try { inst.enableEditing?.(); } catch { /* ignore */ }\n });\n const origRemove = inst.remove?.bind(inst);\n if (origRemove) inst.remove = function () { cancelAnimationFrame(rafId); return origRemove(); };\n }\n return inst;\n }, 'circle');\n },\n createRectangle: (b, o) => {\n const raw = o as Record<string, unknown>;\n const ctorOpts: Record<string, unknown> = {};\n const fields = ['strokeColor', 'fillColor', 'strokeWeight', 'strokeOpacity', 'fillOpacity', 'strokeStyle'];\n for (const f of fields) { if (raw?.[f] !== undefined) ctorOpts[f] = raw[f]; }\n if (typeof raw?.enableMassClear === 'boolean') ctorOpts.enableMassClear = raw.enableMassClear;\n if (typeof raw?.enableClicking === 'boolean') ctorOpts.enableClicking = raw.enableClicking;\n if (typeof raw?.linkRight === 'boolean') ctorOpts.linkRight = raw.linkRight;\n if (typeof raw?.coordType === 'string') ctorOpts.coordType = raw.coordType;\n if (raw?.dashArray) ctorOpts.dashArray = raw.dashArray;\n if (typeof raw?.zIndex === 'number') ctorOpts.zIndex = raw.zIndex;\n applyEditNodeIcons(rawSDK, raw, ctorOpts);\n const hasOpts = Object.keys(ctorOpts).length > 0;\n return createOverlayFactory('Rectangle', () =>\n hasOpts\n ? new rawSDK.Rectangle(toRawBounds(rawSDK, b), ctorOpts)\n : new rawSDK.Rectangle(toRawBounds(rawSDK, b)),\n 'rectangle');\n },\n createBezierCurve: (p, cp, o) => {\n const raw = o as Record<string, unknown>;\n // P2: controlPoints 兜底,防止漏传导致 SDK 抛错被误报为 unsupported\n const safeCp = Array.isArray(cp) ? cp : [];\n // P1: controlPoints 组数必须 >= path.length - 1,否则 SDK 内部索引越界\n const pathLen = Array.isArray(p) ? p.length : 0;\n if (safeCp.length < Math.max(0, pathLen - 1)) {\n // eslint-disable-next-line no-console\n console.warn(`[react-bmap] BezierCurve: controlPoints 需要 ${pathLen - 1} 组,实际 ${safeCp.length} 组,已自动补齐`);\n while (safeCp.length < pathLen - 1) safeCp.push([{ lng: 0, lat: 0 }]);\n }\n const ctorOpts: Record<string, unknown> = {};\n const fields = ['strokeColor', 'strokeWeight', 'strokeOpacity', 'strokeStyle'];\n for (const f of fields) { if (raw?.[f] !== undefined) ctorOpts[f] = raw[f]; }\n if (typeof raw?.enableMassClear === 'boolean') ctorOpts.enableMassClear = raw.enableMassClear;\n if (typeof raw?.enableClicking === 'boolean') ctorOpts.enableClicking = raw.enableClicking;\n if (typeof raw?.enableEditing === 'boolean') ctorOpts.enableEditing = raw.enableEditing;\n if (raw?.dashArray) ctorOpts.dashArray = raw.dashArray;\n if (typeof raw?.zIndex === 'number') ctorOpts.zIndex = raw.zIndex;\n applyEditNodeIcons(rawSDK, raw, ctorOpts);\n const hasOpts = Object.keys(ctorOpts).length > 0;\n // controlPoints 是第 2 个位置参数,opts 是第 3 个,顺序不能省\n return createOverlayFactory('BezierCurve', () =>\n hasOpts\n ? new rawSDK.BezierCurve(toRawPoints(rawSDK, p), toRawPointGroups(rawSDK, safeCp), ctorOpts)\n : new rawSDK.BezierCurve(toRawPoints(rawSDK, p), toRawPointGroups(rawSDK, safeCp)),\n 'bezierCurve');\n },\n createPrism: (p, altitude, o) => {\n const raw = o as Record<string, unknown>;\n const ctorOpts: Record<string, unknown> = {};\n const fields = ['topFillColor', 'topFillOpacity', 'sideFillColor', 'sideFillOpacity'];\n for (const f of fields) { if (raw?.[f] !== undefined) ctorOpts[f] = raw[f]; }\n if (typeof raw?.enableMassClear === 'boolean') ctorOpts.enableMassClear = raw.enableMassClear;\n if (typeof raw?.enableClicking === 'boolean') ctorOpts.enableClicking = raw.enableClicking;\n if (typeof raw?.zIndex === 'number') ctorOpts.zIndex = raw.zIndex;\n const hasOpts = Object.keys(ctorOpts).length > 0;\n // altitude 是第 2 个位置参数,opts 是第 3 个,顺序不能省\n return createOverlayFactory('Prism', () =>\n hasOpts\n ? new rawSDK.Prism(toRawPathOrPaths(rawSDK, p), altitude, ctorOpts)\n : new rawSDK.Prism(toRawPathOrPaths(rawSDK, p), altitude),\n 'prism');\n },\n createGroundOverlay: (b, o) => {\n const raw = o as Record<string, unknown>;\n const ctorOpts: Record<string, unknown> = {};\n if (typeof raw?.opacity === 'number') ctorOpts.opacity = raw.opacity;\n if (typeof raw?.enableMassClear === 'boolean') ctorOpts.enableMassClear = raw.enableMassClear;\n if (typeof raw?.enableClicking === 'boolean') ctorOpts.enableClicking = raw.enableClicking;\n // url 可以是图片/视频地址,也可以是 canvas 元素(type='canvas')\n if (raw?.url !== undefined) {\n ctorOpts.url = raw.url;\n // v3 SDK 不识别 url,用 imageURL 作为 fallback\n if (typeof raw.url === 'string' && typeof raw.imageURL !== 'string') ctorOpts.imageURL = raw.url;\n }\n if (typeof raw?.displayOnMinLevel === 'number') ctorOpts.displayOnMinLevel = raw.displayOnMinLevel;\n if (typeof raw?.displayOnMaxLevel === 'number') ctorOpts.displayOnMaxLevel = raw.displayOnMaxLevel;\n if (typeof raw?.imageURL === 'string') ctorOpts.imageURL = raw.imageURL;\n if (typeof raw?.stretch === 'boolean') ctorOpts.stretch = raw.stretch;\n if (typeof raw?.type === 'string') ctorOpts.type = raw.type;\n if (typeof raw?.top === 'boolean') ctorOpts.top = raw.top;\n if (typeof raw?.isReDraw === 'boolean') ctorOpts.isReDraw = raw.isReDraw;\n if (typeof raw?.drawHook === 'function') ctorOpts.drawHook = raw.drawHook;\n // zIndex 不是 SDK 的 constructor 选项,只能通过 setZIndex 设置,故不放进 ctorOpts\n const hasOpts = Object.keys(ctorOpts).length > 0;\n return createOverlayFactory('GroundOverlay', () =>\n hasOpts\n ? new rawSDK.GroundOverlay(toRawBounds(rawSDK, b), ctorOpts)\n : new rawSDK.GroundOverlay(toRawBounds(rawSDK, b)),\n 'groundOverlay');\n },\n createGroundPoint: (p, o) => {\n const raw = o as Record<string, unknown>;\n const ctorOpts: Record<string, unknown> = {};\n // GroundPointOptions 自身字段\n if (typeof raw?.url === 'string') ctorOpts.url = raw.url;\n if (raw?.size) ctorOpts.size = toRawSize(rawSDK, raw.size as Size);\n if (raw?.anchor) ctorOpts.anchor = toRawSize(rawSDK, raw.anchor as Size);\n if (typeof raw?.scale === 'number') ctorOpts.scale = raw.scale;\n if (typeof raw?.rotation === 'number') ctorOpts.rotation = raw.rotation;\n if (raw?.offset) ctorOpts.offset = toRawSize(rawSDK, raw.offset as Size);\n if (typeof raw?.level === 'number') ctorOpts.level = raw.level;\n // 继承自 GroundOverlayOptions 的字段\n if (typeof raw?.opacity === 'number') ctorOpts.opacity = raw.opacity;\n if (typeof raw?.enableMassClear === 'boolean') ctorOpts.enableMassClear = raw.enableMassClear;\n if (typeof raw?.enableClicking === 'boolean') ctorOpts.enableClicking = raw.enableClicking;\n if (typeof raw?.displayOnMinLevel === 'number') ctorOpts.displayOnMinLevel = raw.displayOnMinLevel;\n if (typeof raw?.displayOnMaxLevel === 'number') ctorOpts.displayOnMaxLevel = raw.displayOnMaxLevel;\n if (typeof raw?.imageURL === 'string') ctorOpts.imageURL = raw.imageURL;\n // type/top/isReDraw/drawHook 继承自 GroundOverlayOptions\n if (typeof raw?.type === 'string') ctorOpts.type = raw.type;\n if (typeof raw?.top === 'boolean') ctorOpts.top = raw.top;\n if (typeof raw?.isReDraw === 'boolean') ctorOpts.isReDraw = raw.isReDraw;\n if (typeof raw?.drawHook === 'function') ctorOpts.drawHook = raw.drawHook;\n // zIndex 不是 constructor 选项(见 GroundOverlayOptions 注释),跳过\n // Bug fix: SDK GroundPoint 构造函数直接读 options.size,不传 options 会崩溃\n return createOverlayFactory('GroundPoint', () =>\n new rawSDK.GroundPoint(toRawPoint(rawSDK, p), ctorOpts),\n 'groundPoint');\n },\n createPointCollection: (p, o) => {\n const raw = o as Record<string, unknown>;\n const ctorOpts: Record<string, unknown> = {};\n if (raw?.shape !== undefined) ctorOpts.shape = raw.shape;\n if (typeof raw?.color === 'string') ctorOpts.color = raw.color;\n if (raw?.size !== undefined) ctorOpts.size = raw.size;\n const hasOpts = Object.keys(ctorOpts).length > 0;\n return createOverlayFactory('PointCollection', () =>\n hasOpts ? new rawSDK.PointCollection(toRawPoints(rawSDK, p), ctorOpts) : new rawSDK.PointCollection(toRawPoints(rawSDK, p)),\n 'pointCollection');\n },\n createInfoWindow: (c, o) => {\n const raw = o as Record<string, unknown>;\n const ctorOpts: Record<string, unknown> = {};\n if (typeof raw?.width === 'number') ctorOpts.width = raw.width;\n if (typeof raw?.height === 'number') ctorOpts.height = raw.height;\n if (typeof raw?.maxWidth === 'number') ctorOpts.maxWidth = raw.maxWidth;\n if (raw?.offset) ctorOpts.offset = toRawSize(rawSDK, raw.offset as Size);\n if (typeof raw?.title === 'string') ctorOpts.title = raw.title;\n if (typeof raw?.enableAutoPan === 'boolean') ctorOpts.enableAutoPan = raw.enableAutoPan;\n if (typeof raw?.enableCloseOnClick === 'boolean') ctorOpts.enableCloseOnClick = raw.enableCloseOnClick;\n if (typeof raw?.enableMessage === 'boolean') ctorOpts.enableMessage = raw.enableMessage;\n if (typeof raw?.message === 'string') ctorOpts.message = raw.message;\n if (typeof raw?.maxContent === 'string') ctorOpts.maxContent = raw.maxContent;\n if (typeof raw?.enableMaximize === 'boolean') ctorOpts.enableMaximize = raw.enableMaximize;\n if (typeof raw?.enableSearchTool === 'boolean') ctorOpts.enableSearchTool = raw.enableSearchTool;\n const hasOpts = Object.keys(ctorOpts).length > 0;\n return createOverlayFactory('InfoWindow', () =>\n hasOpts ? new rawSDK.InfoWindow(c, ctorOpts) : new rawSDK.InfoWindow(c),\n 'infoWindow');\n },\n createSymbol: (path, o) => {\n const raw = o as Record<string, unknown>;\n const ctorOpts: Record<string, unknown> = {};\n if (raw?.anchor) ctorOpts.anchor = toRawSize(rawSDK, raw.anchor as Size);\n if (typeof raw?.fillColor === 'string') ctorOpts.fillColor = raw.fillColor;\n if (typeof raw?.fillOpacity === 'number') ctorOpts.fillOpacity = raw.fillOpacity;\n if (typeof raw?.scale === 'number') ctorOpts.scale = raw.scale;\n if (typeof raw?.rotation === 'number') ctorOpts.rotation = raw.rotation;\n if (typeof raw?.strokeColor === 'string') ctorOpts.strokeColor = raw.strokeColor;\n if (typeof raw?.strokeOpacity === 'number') ctorOpts.strokeOpacity = raw.strokeOpacity;\n if (typeof raw?.strokeWeight === 'number') ctorOpts.strokeWeight = raw.strokeWeight;\n const hasOpts = Object.keys(ctorOpts).length > 0;\n return createOverlayFactory('Symbol', () =>\n hasOpts ? new rawSDK.Symbol(path, ctorOpts) : new rawSDK.Symbol(path),\n 'symbol');\n },\n createIcon: (url, size, o) => {\n const raw = o as Record<string, unknown>;\n const isV3 = typeof (globalThis as { BMapGL?: unknown }).BMapGL === 'undefined';\n const ctorOpts: Record<string, unknown> = {};\n if (raw?.anchor) ctorOpts.anchor = toRawSize(rawSDK, raw.anchor as Size);\n // v3 的 imageOffset 用 CSS background-position 语义(负值=右移),v4 用正值=裁剪起点\n if (raw?.imageOffset) {\n const off = raw.imageOffset as Size;\n ctorOpts.imageOffset = isV3\n ? new rawSDK.Size(-off.width, -off.height)\n : toRawSize(rawSDK, off);\n }\n if (raw?.imageSize) ctorOpts.imageSize = toRawSize(rawSDK, raw.imageSize as Size);\n if (raw?.infoWindowAnchor) ctorOpts.infoWindowAnchor = toRawSize(rawSDK, raw.infoWindowAnchor as Size);\n if (typeof raw?.printImageUrl === 'string') ctorOpts.printImageUrl = raw.printImageUrl;\n if (raw?.srcset) ctorOpts.srcset = raw.srcset;\n const hasOpts = Object.keys(ctorOpts).length > 0;\n const imgSize = raw?.imageSize ? toRawSize(rawSDK, raw.imageSize as Size) : null;\n return createOverlayFactory('Icon', () => {\n const inst = hasOpts\n ? new rawSDK.Icon(url, new rawSDK.Size(size.width, size.height), ctorOpts)\n : new rawSDK.Icon(url, new rawSDK.Size(size.width, size.height));\n // v3 SDK 构造函数不接受 imageSize,需要额外调 setImageSize\n if (imgSize && typeof inst.setImageSize === 'function') inst.setImageSize(imgSize);\n return inst;\n }, 'icon');\n },\n createIconSequence: (sym, offset, repeat, fr) => createOverlayFactory('IconSequence', () => new rawSDK.IconSequence(sym ? rawOf(sym) : undefined, offset, repeat ?? '', fr), 'iconSequence'),\n createHotspot: (p, o) => {\n const raw = o as Record<string, unknown>;\n const ctorOpts: Record<string, unknown> = {};\n if (typeof raw?.text === 'string') ctorOpts.text = raw.text;\n if (Array.isArray(raw?.offsets)) ctorOpts.offsets = raw.offsets;\n if (raw?.userData !== undefined) ctorOpts.userData = raw.userData;\n if (typeof raw?.minZoom === 'number') ctorOpts.minZoom = raw.minZoom;\n if (typeof raw?.maxZoom === 'number') ctorOpts.maxZoom = raw.maxZoom;\n const hasOpts = Object.keys(ctorOpts).length > 0;\n return createOverlayFactory('Hotspot', () =>\n hasOpts ? new rawSDK.Hotspot(toRawPoint(rawSDK, p), ctorOpts) : new rawSDK.Hotspot(toRawPoint(rawSDK, p)),\n 'hotspot');\n },\n createCustomOverlay: (domCreate, o) => {\n const raw = o as Record<string, unknown>;\n const ctorOpts: Record<string, unknown> = {};\n if (raw?.point) ctorOpts.point = toRawPoint(rawSDK, raw.point as Point);\n if (raw?.anchors) ctorOpts.anchors = raw.anchors;\n if (typeof raw?.offsetX === 'number') ctorOpts.offsetX = raw.offsetX;\n if (typeof raw?.offsetY === 'number') ctorOpts.offsetY = raw.offsetY;\n if (typeof raw?.rotation === 'number') ctorOpts.rotation = raw.rotation;\n if (typeof raw?.rotationInit === 'number') ctorOpts.rotationInit = raw.rotationInit;\n if (typeof raw?.minZoom === 'number') ctorOpts.minZoom = raw.minZoom;\n if (typeof raw?.maxZoom === 'number') ctorOpts.maxZoom = raw.maxZoom;\n if (raw?.properties !== undefined) ctorOpts.properties = raw.properties;\n if (typeof raw?.fixBottom === 'boolean') ctorOpts.fixBottom = raw.fixBottom;\n if (typeof raw?.useTranslate === 'boolean') ctorOpts.useTranslate = raw.useTranslate;\n if (typeof raw?.autoFollowHeadingChanged === 'boolean') ctorOpts.autoFollowHeadingChanged = raw.autoFollowHeadingChanged;\n if (typeof raw?.zIndex === 'number') ctorOpts.zIndex = raw.zIndex;\n if (typeof raw?.enableMassClear === 'boolean') ctorOpts.enableMassClear = raw.enableMassClear;\n if (typeof raw?.enableDraggingMap === 'boolean') ctorOpts.enableDraggingMap = raw.enableDraggingMap;\n return createOverlayFactory('CustomOverlay', () =>\n new rawSDK.CustomOverlay(domCreate ?? (() => document.createElement('div')), ctorOpts),\n 'customOverlay');\n },\n createMarker3D: (p, height, o) => {\n const raw = o as Record<string, unknown>;\n const ctorOpts: Record<string, unknown> = {};\n if (typeof raw?.shape === 'number') ctorOpts.shape = raw.shape;\n if (typeof raw?.size === 'number') ctorOpts.size = raw.size;\n if (typeof raw?.fillColor === 'string') ctorOpts.fillColor = raw.fillColor;\n if (typeof raw?.fillOpacity === 'number') ctorOpts.fillOpacity = raw.fillOpacity;\n if (typeof raw?.enableMassClear === 'boolean') ctorOpts.enableMassClear = raw.enableMassClear;\n const hasOpts = Object.keys(ctorOpts).length > 0;\n return createOverlayFactory('Marker3D', () =>\n hasOpts\n ? new rawSDK.Marker3D(toRawPoint(rawSDK, p), height, ctorOpts)\n : new rawSDK.Marker3D(toRawPoint(rawSDK, p), height),\n 'marker3d');\n },\n\n // ─────────────── 27. Overlay 属性 setter ───────────────\n setOverlayPosition: (ov, p) => {\n try {\n const r = rawOf(ov);\n // Circle 用 setCenter,GroundPoint 用 setPoint,其余用 setPosition\n if (ov.type === 'circle') r.setCenter?.(toRawPoint(rawSDK, p));\n else if (ov.type === 'groundPoint') r.setPoint?.(toRawPoint(rawSDK, p));\n else r.setPosition?.(toRawPoint(rawSDK, p));\n } catch { /* ignore */ }\n },\n setOverlayPath: (ov, path) => {\n try {\n // PointCollection 用 setPoints 而非 setPath\n if (ov.type === 'pointCollection') {\n rawOf(ov).setPoints?.(toRawPoints(rawSDK, path as Point[]));\n return;\n }\n if (isNestedPath(path)) {\n // 只有 Polygon 的 setPath 支持多坐标串(Point[][],镂空/多环,对齐 JSAPI)。\n // 其余(如 Prism)无法用多坐标串更新,交由 ctorOnlyProps/key 重建处理。\n if (ov.type === 'polygon') rawOf(ov).setPath?.(toRawPointGroups(rawSDK, path));\n return;\n }\n rawOf(ov).setPath?.(toRawPoints(rawSDK, path as Point[]));\n } catch { /* ignore */ }\n },\n setOverlayOptions: (ov, options) => {\n const r = rawOf(ov);\n const o = options as Record<string, unknown>;\n warnUnhandledOverlayOptions(ov.type, o);\n try {\n if (typeof o.strokeColor === 'string') r.setStrokeColor?.(o.strokeColor);\n if (typeof o.strokeWeight === 'number') r.setStrokeWeight?.(o.strokeWeight);\n if (typeof o.strokeOpacity === 'number') r.setStrokeOpacity?.(o.strokeOpacity);\n if (typeof o.strokeStyle === 'string') r.setStrokeStyle?.(o.strokeStyle);\n if (o.enableEditing === true) r.enableEditing?.();\n else if (o.enableEditing === false && ov.type !== 'circle') r.disableEditing?.();\n if (typeof o.fillColor === 'string') r.setFillColor?.(o.fillColor);\n if (typeof o.fillOpacity === 'number') r.setFillOpacity?.(o.fillOpacity);\n // Prism 专属:顶面/侧面填充分开设置,空字符串表示无填充,所以用 typeof 判断而非真值判断\n if (typeof o.topFillColor === 'string') r.setTopFillColor?.(o.topFillColor);\n if (typeof o.topFillOpacity === 'number') r.setTopFillOpacity?.(o.topFillOpacity);\n if (typeof o.sideFillColor === 'string') r.setSideFillColor?.(o.sideFillColor);\n if (typeof o.sideFillOpacity === 'number') r.setSideFillOpacity?.(o.sideFillOpacity);\n if (typeof o.radius === 'number' && ov.type === 'circle') r.setRadius?.(o.radius);\n if (o.bounds && (ov.type === 'rectangle' || ov.type === 'groundOverlay')) r.setBounds?.(toRawBounds(rawSDK, o.bounds as Bounds));\n if (o.controlPoints && ov.type === 'bezierCurve') r.setControlPoints?.(toRawPointGroups(rawSDK, o.controlPoints as Point[][]));\n if (typeof o.altitude === 'number' && ov.type === 'prism') r.setAltitude?.(o.altitude);\n // GroundOverlay / GroundPoint 共有(按 type 收窄,避免命中其他同名属性)。\n // url 为 canvas 元素时没有对应 setter(SDK 的 setImage 只接受地址),\n // canvas 场景本来就应保持同一元素、靠 isReDraw + drawHook 每帧重采集内容,所以只处理字符串。\n // setImage 是 @since 4.0;v3 上为 undefined,此时靠 imageURL → setImageURL 生效。\n if (ov.type === 'groundOverlay' || ov.type === 'groundPoint') {\n if (typeof o.url === 'string') r.setImage?.(o.url);\n if (typeof o.imageURL === 'string') r.setImageURL?.(o.imageURL);\n else if (typeof o.url === 'string') r.setImageURL?.(o.url); // v3 fallback\n if (typeof o.displayOnMinLevel === 'number') r.setDisplayOnMinLevel?.(o.displayOnMinLevel);\n if (typeof o.displayOnMaxLevel === 'number') r.setDisplayOnMaxLevel?.(o.displayOnMaxLevel);\n }\n // GroundPoint 专属 setter:size/scale。anchor 是 Size(与 Marker 的 number 枚举不同)。\n if (ov.type === 'groundPoint') {\n if (o.size && typeof o.size === 'object') r.setSize?.(toRawSize(rawSDK, o.size as Size));\n }\n // GroundPoint / Symbol 共有:scale\n if (typeof o.scale === 'number' && (ov.type === 'groundPoint' || ov.type === 'symbol')) r.setScale?.(o.scale);\n // Symbol 专属:path 是 SVG path 字符串或符号常量(非 Point[]),走 setPath 而非 setOverlayPath\n if (ov.type === 'symbol' && o.path !== undefined) r.setPath?.(o.path);\n // Icon 专属 setter:url→setImageUrl, size→setSize, imageOffset/imageSize/infoWindowAnchor→各自 setter,\n // printImageUrl→setPrintImageUrl(@removed 4.0), srcset→setImageSrcset(@since 4.0 @hide)\n if (ov.type === 'icon') {\n if (typeof o.url === 'string') r.setImageUrl?.(o.url);\n if (o.size && typeof o.size === 'object') r.setSize?.(toRawSize(rawSDK, o.size as Size));\n if (o.imageOffset && typeof o.imageOffset === 'object') r.setImageOffset?.(toRawSize(rawSDK, o.imageOffset as Size));\n if (o.imageSize && typeof o.imageSize === 'object') r.setImageSize?.(toRawSize(rawSDK, o.imageSize as Size));\n if (o.infoWindowAnchor && typeof o.infoWindowAnchor === 'object') r.setInfoWindowAnchor?.(toRawSize(rawSDK, o.infoWindowAnchor as Size));\n if (typeof o.printImageUrl === 'string') r.setPrintImageUrl?.(o.printImageUrl);\n if (o.srcset) r.setImageSrcset?.(o.srcset);\n }\n // PointCollection 专属:SDK 没有 setColor/setShape/setSize,只有 setStyles(opts) 批量设置。\n // shape/color/size 任一变化时收集当前值整体传给 setStyles。\n if (ov.type === 'pointCollection') {\n const styles: Record<string, unknown> = {};\n if (o.shape !== undefined) styles.shape = o.shape;\n if (typeof o.color === 'string') styles.color = o.color;\n if (o.size !== undefined) styles.size = o.size;\n if (Object.keys(styles).length > 0) r.setStyles?.(styles);\n }\n // rotation=0 在 v4 下安全,v3 下会导致命中区域塌缩(但影响较小,允许设置以支持重置)\n if (typeof o.rotation === 'number') r.setRotation?.(o.rotation);\n if (typeof o.title === 'string') r.setTitle?.(o.title);\n if (typeof o.content === 'string') r.setContent?.(o.content);\n // Hotspot 专属:setText / setUserData(@removed 4.0,仅 v3)\n if (ov.type === 'hotspot') {\n if (typeof o.text === 'string') r.setText?.(o.text);\n if (o.userData !== undefined) r.setUserData?.(o.userData);\n }\n // CustomOverlay 专属(@since 4.0):setPoint / setRotationOrigin / setProperties\n if (ov.type === 'customOverlay') {\n if (o.point) r.setPoint?.(toRawPoint(rawSDK, o.point as Point));\n if (typeof o.rotationInit === 'number') r.setRotationOrigin?.(o.rotationInit);\n if (o.properties !== undefined) r.setProperties?.(o.properties);\n }\n // Marker3D 专属 setter(shape/size 无 setter,走 ctorOnlyProps 重建)\n if (ov.type === 'marker3d') {\n if (typeof o.height === 'number') r.setHeight?.(o.height);\n if (typeof o.fillColor === 'string') r.setFillColor?.(o.fillColor);\n if (typeof o.fillOpacity === 'number') r.setFillOpacity?.(o.fillOpacity);\n }\n // Label 专属\n if (o.styles && typeof o.styles === 'object') r.setStyles?.(o.styles);\n if (typeof o.opacity === 'number') {\n if (ov.type === 'marker' && typeof r.setOptions === 'function') r.setOptions({ opacity: o.opacity });\n else r.setOpacity?.(o.opacity);\n }\n if (o.icon !== undefined) r.setIcon?.(toRawIcon(rawSDK, o.icon));\n // Marker/Label 的 anchor 是 ControlAnchor 枚举(number);GroundPoint/Symbol/Icon 的 anchor 是 Size\n if (typeof o.anchor === 'number') r.setAnchor?.(o.anchor);\n else if (o.anchor && typeof o.anchor === 'object' && (ov.type === 'groundPoint' || ov.type === 'symbol' || ov.type === 'icon')) r.setAnchor?.(toRawSize(rawSDK, o.anchor as Size));\n // SDK Marker 默认不可拖拽,必须主动调 enable/disable 控制。\n // undefined 时不干预(用 SDK 默认行为,即不可拖拽)。\n if (o.enableDragging === true) r.enableDragging?.();\n else if (o.enableDragging === false) r.disableDragging?.();\n if (o.enableMassClear === true) r.enableMassClear?.();\n else if (o.enableMassClear === false) r.disableMassClear?.();\n if (typeof o.zIndex === 'number') r.setZIndex?.(o.zIndex);\n if (o.offset) r.setOffset?.(toRawSize(rawSDK, o.offset));\n // Marker v4+ 专属 setter\n if (typeof o.color === 'string' && ov.type === 'marker') r.setColor?.(o.color);\n if (typeof o.rank === 'number' && ov.type === 'marker') { r.setRank?.(o.rank); overlayToCM.get(r)?.schedule(); }\n if (typeof o.rotationOrigin === 'number' && ov.type === 'marker') r.setRotationOrigin?.(o.rotationOrigin);\n } catch { /* ignore */ }\n },\n\n // ─────────────── 27b. Overlay 默认值快照 / 还原 ───────────────\n // prop 从有值变回 undefined 时,框架需要「SDK 默认值」才能真正复原。SDK 没有 unset 语义,\n // 唯一可靠来源是实例自己的 getter:挂载后先读一份,之后按需写回。\n snapshotOverlayOptions: (ov, keys) => {\n const out: Record<string, unknown> = {};\n const r = rawOf(ov);\n if (!r) return out;\n for (const k of keys) {\n const { get, set } = optionAccessor(k);\n // setter 不存在就不必记 —— 记了也写不回去,只会让上层误判为「已还原」\n if (typeof r[get] !== 'function' || typeof r[set] !== 'function') continue;\n try {\n const v = r[get]();\n if (v !== undefined && v !== null) out[k] = v;\n } catch { /* getter 抛错等同于读不到 */ }\n }\n return out;\n },\n restoreOverlayOptions: (ov, snapshot) => {\n const failed: string[] = [];\n const r = rawOf(ov);\n for (const [k, v] of Object.entries(snapshot)) {\n const { set } = optionAccessor(k);\n if (!r || typeof r[set] !== 'function') { failed.push(k); continue; }\n // 快照里存的已经是 SDK 原始对象,不能再过 toRawXxx 转换\n try { r[set](v); } catch { failed.push(k); }\n }\n return failed;\n },\n\n // ─────────────── 27c. Overlay 可见性 / PlaceDetail ───────────────\n showOverlay: (ov) => {\n const raw = rawOf(ov);\n const s = collisionState.get(raw);\n if (s) { s.userVisible = true; if (s.hidden) return; }\n try { raw.show?.(); } catch { /* ignore */ }\n const c = raw?.getContainer?.() ?? raw?._container;\n if (c) c.style.display = '';\n },\n hideOverlay: (ov) => {\n const raw = rawOf(ov);\n const s = collisionState.get(raw);\n if (s) s.userVisible = false;\n try { raw.hide?.(); } catch { /* ignore */ }\n const c = raw?.getContainer?.() ?? raw?._container;\n if (c) c.style.display = 'none';\n },\n openPlaceDetail: (marker, pd) => callRaw('Marker.openPlaceDetail', () => rawOf(marker).openPlaceDetail?.(rawOf(pd))),\n closePlaceDetail: (marker) => { try { rawOf(marker).closePlaceDetail?.(); } catch { /* ignore */ } },\n\n // ─────────────── 28. Control 工厂 ───────────────\n createNavigationControl: (o) => createControlFactory('NavigationControl', () => new rawSDK.NavigationControl(toRawControlOptions(rawSDK, o)), 'navigation'),\n createNavigationControl3D: (o) => createControlFactory('NavigationControl3D', () => new rawSDK.NavigationControl3D(toRawControlOptions(rawSDK, o)), 'navigation3D'),\n createScaleControl: (o) => createControlFactory('ScaleControl', () => new rawSDK.ScaleControl(toRawControlOptions(rawSDK, o)), 'scale'),\n createOverviewMapControl: (o) => createControlFactory('OverviewMapControl', () => new rawSDK.OverviewMapControl(toRawControlOptions(rawSDK, o)), 'overview'),\n createMapTypeControl: (o) => createControlFactory('MapTypeControl', () => new rawSDK.MapTypeControl(toRawControlOptions(rawSDK, o)), 'mapType'),\n createCopyrightControl: (o) => createControlFactory('CopyrightControl', () => { const c = new rawSDK.CopyrightControl(toRawControlOptions(rawSDK, o)); applyCopyrights(rawSDK, c, (o as any)?.copyrights); return c; }, 'copyright'),\n createGeolocationControl: (o) => createControlFactory('GeolocationControl', () => new rawSDK.GeolocationControl(toRawControlOptions(rawSDK, o)), 'geolocation'),\n createPanoramaControl: () => createControlFactory('PanoramaControl', () => new rawSDK.PanoramaControl(), 'panorama'),\n createZoomControl: (o) => createControlFactory('ZoomControl', () => new rawSDK.ZoomControl(toRawControlOptions(rawSDK, o)), 'zoom'),\n createCityListControl: (o) => createControlFactory('CityListControl', () => new rawSDK.CityListControl(toRawControlOptions(rawSDK, o)), 'cityList'),\n createLocationControl: (o) => createControlFactory('GeolocationControl', () => new rawSDK.GeolocationControl(toRawControlOptions(rawSDK, o)), 'geolocation'),\n createLogoControl: (o) => createControlFactory('LogoControl', () => new rawSDK.LogoControl(toRawControlOptions(rawSDK, o)), 'logo'),\n createControl: (o) => createControlFactory('Control', () => { const c = new rawSDK.Control(); Object.assign(c, toRawControlOptions(rawSDK, o)); return c; }, 'custom'),\n createCustomControl: (domCreate, o) => createControlFactory('Control', () => {\n // 动态继承 BMap.Control,重写 initialize:SDK 在 map.addControl() 时通过内部\n // _i() 调用它——_i() 会先执行 initialize() 拿到 DOM 并赋给 this._container,\n // *之后* 才用 `this._opts = this._opts || {printable:false}` 兜底初始化 _opts,\n // 再调用 _setPosition()(内部即 this.setAnchor(this._opts.anchor))。\n //\n // 所以 anchor/offset 不能在 initialize() 内部调用 setAnchor/setOffset——此刻\n // _opts 还是 undefined,setAnchor 内部访问 this._opts.offset 会直接抛错。\n // 必须把 _opts 的初始化提前到 initialize() 里、_i() 兜底赋值之前,这样 _i()\n // 自带的 _setPosition() 会用到我们预置的 anchor,再显式补一次 setOffset\n // (_setPosition 只处理 anchor,不处理 offset)。\n //\n // defaultAnchor/defaultOffset 必须显式设置:Control.d.ts 明确要求\"自定义控件时\n // 需提供此属性\",原生 setAnchor 内部用 `this._opts.offset || this.defaultOffset`\n // 兜底——不传 offset 时若 defaultOffset 也是 undefined,会读 undefined.width 报错。\n const opts = toRawControlOptions(rawSDK, o);\n class CustomControlImpl extends rawSDK.Control {\n defaultAnchor = 0; // BMAP_ANCHOR_TOP_LEFT\n defaultOffset = new rawSDK.Size(0, 0);\n initialize(map: BMap.Map) {\n const div = domCreate();\n map.getContainer().appendChild(div);\n this._opts = { printable: false, anchor: opts.anchor };\n if (opts.offset !== undefined) this.setOffset(opts.offset);\n return div;\n }\n }\n const c = new CustomControlImpl();\n return c;\n }, 'custom'),\n\n // ─────────────── 29. Layer 工厂 ───────────────\n createTileLayer: (o) => createLayerFactory('TileLayer', () => new rawSDK.TileLayer(o), 'tile'),\n createNormalLayer: (o) => createLayerFactory('NormalLayer', () => new rawSDK.NormalLayer(o), 'normal'),\n createGeoJSONLayer: (o) => {\n const opts = o as Record<string, unknown>;\n const layerName = (opts?.layerName as string) || 'react-bmap-geojson';\n return createLayerFactory('GeoJSONLayer', () => new rawSDK.GeoJSONLayer(layerName, opts), 'geojson');\n },\n createDistrictLayer: (o) => createLayerFactory('DistrictLayer', () => new rawSDK.DistrictLayer(o), 'district'),\n createTrafficLayer: (o) => createLayerFactory('TrafficLayer', () => new rawSDK.TrafficLayer(o), 'traffic'),\n createCustomLayer: (o) => createLayerFactory('CustomLayer', () => new rawSDK.CustomLayer(o), 'custom'),\n createCanvasLayer: (o) => createLayerFactory('CanvasLayer', () => new rawSDK.CanvasLayer(o), 'canvas'),\n\n // 高级图层(4.0+)\n createRasterTileLayer: (o) => createLayerFactory('RasterTileLayer', () => new rawSDK.RasterTileLayer(o), 'tile'),\n createWMSLayer: (o) => createLayerFactory('WMSLayer', () => new rawSDK.WMSLayer(o), 'tile'),\n createWMTSLayer: (o) => createLayerFactory('WMTSLayer', () => new rawSDK.WMTSLayer(o), 'tile'),\n createXYZLayer: (o) => createLayerFactory('XYZLayer', () => new rawSDK.XYZLayer(o), 'tile'),\n createMVTLayer: (o) => createLayerFactory('MVTLayer', () => new rawSDK.MVTLayer(o), 'tile'),\n createFeatureLayer: (o) => createLayerFactory('FeatureLayer', () => new rawSDK.FeatureLayer(o), 'custom'),\n createFillLayer: (o) => createLayerFactory('FillLayer', () => new rawSDK.FillLayer(o), 'custom'),\n createDOMLayer: (o) => createLayerFactory('DOMLayer', () => {\n // DOMLayer 构造函数签名: (createDOM: Function, opts?: DOMLayerOptions)\n const createDOM = (o as any)?.createDOM;\n if (!createDOM) throw new Error('DOMLayer requires createDOM function');\n const { createDOM: _cd, ...opts } = o as any;\n return new rawSDK.DOMLayer(createDOM, opts);\n }, 'custom'),\n createPointIconLayer: (o) => createLayerFactory('PointIconLayer', () => new rawSDK.PointIconLayer(o), 'custom'),\n createPointShapeLayer: (o) => createLayerFactory('PointShapeLayer', () => new rawSDK.PointShapeLayer(o), 'custom'),\n createPanoramaCoverageLayer: (o) => createLayerFactory('PanoramaCoverageLayer', () => new rawSDK.PanoramaCoverageLayer(o), 'custom'),\n createLineLayer: (o) => createLayerFactory('LineLayer', () => new rawSDK.LineLayer(o), 'custom'),\n createPixelLayer: (o) => createLayerFactory('PixelLayer', () => new rawSDK.PixelLayer(o), 'custom'),\n createBaiduLayer: (o) => createLayerFactory('BaiduLayer', () => new rawSDK.BaiduLayer(o), 'custom'),\n createThreeLayer: (o) => createLayerFactory('ThreeLayer', () => new rawSDK.ThreeLayer(o), 'custom'),\n\n // ─────────────── 30. ContextMenu ───────────────\n createContextMenu: (o) => createOverlayFactory('ContextMenu', () => new rawSDK.ContextMenu(o), 'contextMenu'),\n createMenuItem: (text, cb, o) => createOverlayFactory('MenuItem', () => new rawSDK.MenuItem(text, cb, o), 'menuItem'),\n addMenuItem: (menu, item, idx) => { try { rawOf(menu).addItem?.(rawOf(item), idx); } catch { /* ignore */ } },\n removeMenuItem: (menu, item) => { try { rawOf(menu).removeItem?.(rawOf(item)); } catch { /* ignore */ } },\n\n // ─────────────── 31. Panorama ───────────────\n createPanorama: (container, o) => {\n if (!capabilities.has('Panorama')) { reportUnsupported('Panorama', version, behavior); return null; }\n try { return mapHandle(new rawSDK.Panorama(container, o)); }\n catch (e) { reportCallFailure('Panorama', version, behavior, e); return null; }\n },\n createPanoramaLabel: (o) => {\n const opts = o as Record<string, unknown>;\n const content = (opts?.content as string) || '';\n const labelOpts: Record<string, unknown> = {};\n if (opts?.position) labelOpts.position = toRawPoint(rawSDK, opts.position as Point);\n if (typeof opts?.altitude === 'number') labelOpts.altitude = opts.altitude;\n if (typeof opts?.displayDistance === 'boolean') labelOpts.displayDistance = opts.displayDistance;\n if (opts?.customStyle) labelOpts.customStyle = opts.customStyle;\n return createOverlayFactory('PanoramaLabel', () => new rawSDK.PanoramaLabel(content, labelOpts), 'panoramaLabel');\n },\n destroyPanorama: (handle) => { try { rawOf(handle).destroy?.(); } catch { /* ignore */ } },\n\n // ─────────────── 32. 服务工厂 ───────────────\n createLocalSearch: (loc, o) => createServiceFactory('LocalSearch', () => new rawSDK.LocalSearch(unwrapHandle(loc), o)),\n createGeocoder: () => createServiceFactory('Geocoder', () => new rawSDK.Geocoder()),\n createDrivingRoute: (o) => createServiceFactory('DrivingRoute', () => new rawSDK.DrivingRoute((o as any)?.location, o)),\n createWalkingRoute: (o) => createServiceFactory('WalkingRoute', () => new rawSDK.WalkingRoute((o as any)?.location, o)),\n createRidingRoute: (o) => createServiceFactory('RidingRoute', () => new rawSDK.RidingRoute((o as any)?.location, o)),\n createTransitRoute: (o) => createServiceFactory('TransitRoute', () => new rawSDK.TransitRoute((o as any)?.location, o)),\n createBusLineSearch: (o) => createServiceFactory('BusLineSearch', () => new rawSDK.BusLineSearch((o as any)?.location, o)),\n createAutocomplete: (o) => createServiceFactory('Autocomplete', () => new rawSDK.Autocomplete(o)),\n createBoundary: () => createServiceFactory('Boundary', () => new rawSDK.Boundary()),\n createGeolocation: (o) => createServiceFactory('Geolocation', () => new rawSDK.Geolocation(o)),\n createLocalCity: (o) => createServiceFactory('LocalCity', () => new rawSDK.LocalCity(o)),\n createPlaceDetail: (o) => createServiceFactory('PlaceDetail', () => {\n const container = (o as any)?.container ?? document.createElement('div');\n const rawMap = (o as any)?.map;\n const opts: Record<string, unknown> = { ...(o as Record<string, unknown>), map: rawMap };\n return new rawSDK.PlaceDetail(container, opts);\n }),\n createConvertor: () => createServiceFactory('Convertor', () => new rawSDK.Convertor()),\n createPanoramaService: () => createServiceFactory('PanoramaService', () => new rawSDK.PanoramaService()),\n createTruckRoute: (o) => createServiceFactory('TruckRoute', () => {\n if (!rawSDK.TruckRoute) throw new Error('TruckRoute not exposed in runtime SDK');\n return new rawSDK.TruckRoute((o as any)?.location, o);\n }),\n\n searchService(service, query, callbacks) {\n const raw = rawOf(service);\n if (!raw) return () => {};\n let cancelled = false;\n const safeCb = <T,>(fn?: (data: T) => void) => (data: T) => { if (!cancelled) fn?.(data); };\n if (typeof raw.setSearchCompleteCallback === 'function') raw.setSearchCompleteCallback(safeCb(callbacks.onSuccess));\n else if (typeof raw.setSearchComplete === 'function') raw.setSearchComplete(safeCb(callbacks.onSuccess));\n try { raw.search?.(query); } catch (err) { (safeCb(callbacks.onError as any))(err as Error); }\n return () => { cancelled = true; };\n },\n getServiceResults(service) {\n const raw = rawOf(service);\n if (!raw || typeof raw.getResults !== 'function') return null;\n return raw.getResults();\n },\n\n // ─────────────── 33. 事件 ───────────────\n addEventListener(target, type, handler) {\n const raw = rawOf(target);\n raw.addEventListener?.(type, handler);\n return () => raw.removeEventListener?.(type, handler);\n },\n removeEventListener(target, type, handler) {\n rawOf(target).removeEventListener?.(type, handler);\n },\n };\n}\n\nfunction inferOverlayType(raw: any): string {\n return (raw?.constructor?.name ?? 'unknown').toLowerCase();\n}\n","/**\n * 全局 BMap SDK 访问入口。\n *\n * SDK 脚本由 jsapi-loader 注入到全局(v3 为 `BMap`,v4 的 `BMapGL` 出于兼容\n * 也会挂 `BMap` 别名)。这里集中收敛对全局对象的类型断言,\n * 避免在各 hook / 组件里散落 `(globalThis as any).BMap`。\n *\n * 构造器签名直接取自官方类型包 `@baidumap/jsapi-v4-types` 的全局 `BMap` 命名空间,\n * 所以 `new SDK.Point(...)` 得到的是真正的 `BMap.Point`,而不是 `unknown`。\n */\n\n/**\n * 官方类型包尚未声明、但本库运行时确实会用到的构造器。\n *\n * 这里只补「官方缺、我们用」的部分 —— 官方补齐后应当从此处删掉,\n * 而不是让手写声明和官方声明长期并存。\n */\ninterface BMapSDKExtras {\n /** v4 的地图遮罩层,官方类型包未声明;见 components/Overlay/MapMask.tsx */\n readonly MapMask: new (points: BMap.Point[], opts?: Record<string, unknown>) => unknown;\n /** v4 的简易信息窗,官方类型包未声明;见 components/Overlay/SimpleInfoWindow.tsx */\n readonly SimpleInfoWindow: new (\n content: string | HTMLElement,\n opts?: Record<string, unknown>,\n ) => unknown;\n}\n\n/**\n * 运行时全局 SDK 对象的类型。\n *\n * - `typeof BMap`:官方命名空间里的全部构造器与常量,带完整参数/返回值签名\n * - `BMapSDKExtras`:补齐官方尚未声明的成员\n * - 索引签名:v3/v4 之间成员存在差异,未知成员以 `unknown` 兜底,由调用方自行断言\n *\n * 交集类型下,已声明的成员优先于索引签名解析,因此 `SDK.Point` 仍是精确类型。\n */\nexport type BMapSDK = typeof BMap & BMapSDKExtras & { readonly [key: string]: unknown };\n\n/** globalThis 上的 `BMap` 由官方类型声明为必选,这里统一收敛成可选形态的一次断言。 */\nconst globalScope = globalThis as unknown as { BMap?: BMapSDK };\n\n/**\n * 获取全局 BMap SDK 对象;若脚本尚未注入则抛出清晰错误。\n * 适用于随后直接访问 `SDK.Point` 等构造器的调用方 —— 相比原先返回\n * undefined 后触发的 `Cannot read properties of undefined`,这里给出可读的失败原因。\n */\nexport function getSDK(): BMapSDK {\n const sdk = globalScope.BMap;\n if (!sdk) {\n throw new Error('[react-bmap] BMap SDK 尚未加载,请确认地图脚本已由 jsapi-loader 注入完成。');\n }\n return sdk;\n}\n\n/**\n * 获取全局 BMap SDK 对象;未注入时返回 undefined。\n * 供可优雅降级的调用方使用(如运行时常量回退、组件在 SDK 缺失时静默跳过)。\n */\nexport function tryGetSDK(): BMapSDK | undefined {\n return globalScope.BMap;\n}\n","import type { UnsupportedBehavior } from '../types';\nimport type { OverlayHandle } from '../types';\nimport type { BMapDriver } from './types';\nimport type { Point } from '../types';\nimport { CAPABILITY_MATRIX } from './capabilityMatrix';\nimport { createV4Driver } from './v4Driver';\nimport { reportCallFailure, reportUnsupported, unsupportedValue } from './unsupported';\nimport { getSDK } from '../utils/sdk';\n\n/**\n * v3 Driver — 3.0 适配。\n * - 复用 v4 driver 的通用骨架\n * - 3.0-only 方法真实实现\n * - 4.0-only 方法走 unsupported\n * - capabilities 用 v3 矩阵(与 v4 区分)\n */\nexport function createV3Driver(rawSDK: any, opts: { unsupportedBehavior: UnsupportedBehavior }): BMapDriver {\n const behavior = opts.unsupportedBehavior;\n const version = '3.0' as const;\n\n // version 传给 base:v4Driver 内部日志文案要说 \"JSAPI 3.0\",否则 v3 会话里全打成 4.0\n const base = createV4Driver(rawSDK, { ...opts, version });\n\n const v3Only: Partial<BMapDriver> = {\n // 3.0-only Map 命令真实实现\n enableMapClick: (map) => { (map.raw as any).enableMapClick?.(); },\n disableMapClick: (map) => { (map.raw as any).disableMapClick?.(); },\n enable3DBuilding: (map) => { try { (map.raw as any).enable3DBuilding?.(); } catch { /* BuildingLayer may not be defined */ } },\n disable3DBuilding: (map) => { try { (map.raw as any).disable3DBuilding?.(); } catch { /* BuildingLayer may not be defined */ } },\n setPanorama: (map, pano) => { try { if (pano) (map.raw as any).setPanorama?.(pano); } catch { /* ignore */ } },\n getPanorama: (map) => (map.raw as any).getPanorama?.() ?? null,\n setCurrentCity: (map, city) => { (map.raw as any).setCurrentCity?.(city); },\n highResolutionEnabled: (map) => (map.raw as any).highResolutionEnabled?.() ?? false,\n addHotspot: (map, h) => { try { if (h?.raw) (map.raw as any).addHotspot?.(h.raw); } catch { /* ignore */ } },\n removeHotspot: (map, h) => { (map.raw as any).removeHotspot?.(h.raw); },\n clearHotspots: (map) => { (map.raw as any).clearHotspots?.(); },\n\n // v3 的 setMapType 直接调用原生方法。\n // 3.0 的 map.mapType 存的是 MapType 实例,内部用 === 比较(this.mapType === mapType),\n // 不是字符串比较;react-bmap 的 BMAP_NORMAL_MAP/BMAP_SATELLITE_MAP/BMAP_HYBRID_MAP\n // 常量统一导出字符串(供 4.0/GL 使用,见 v4Driver 的 normalizeMapTypeRequest 逻辑),\n // 3.0 收到字符串会跟内部 MapType 实例永远不相等,视觉上\"看起来生效但内部状态错了\"。\n // 这里把三个约定字符串换成 3.0 SDK 挂在全局 window 上的真实 MapType 实例(反查\n // jsapi-core-3-0/src/scripts/bmap/exports.js:147-152 的 exportSymbol(window, {...})\n // 确认挂载位置是 window 顶层,不是 window.BMap 上)。\n setMapType: (map, t) => {\n const raw = map.raw as any;\n if (typeof window !== 'undefined') {\n const w = window as any;\n if (t === 'B_NORMAL_MAP') t = w.BMAP_NORMAL_MAP ?? t;\n else if (t === 'B_SATELLITE_MAP') t = w.BMAP_SATELLITE_MAP ?? t;\n else if (t === 'B_STREET_MAP') t = w.BMAP_HYBRID_MAP ?? t;\n }\n raw.setMapType?.(t);\n },\n\n // 3.0 的自定义控件:不复用 v4Driver 的 ES6 class extends 实现——3.0 的 Control\n // 用 baidu.lang.inherits(subClass, superClass) 构建原型链(反查\n // jsapi-core-3-0/lib/tangram.js:1282-1299 确认,只是把 superClass.prototype 塞进\n // 一个空函数的 prototype 再 new 出来,subClass.prototype 上的自身属性逐个拷贝过去,\n // 不走标准的 constructor 调用链),跟 ES6 class 语义不完全兼容,直接 extends 容易在\n // 字段初始化时序上出问题。这里改用 Object.create 手动搭原型链,贴近 3.0 自身写法:\n // new 一个空构造函数、prototype 指向 Control.prototype,再显式调用 Control.call(inst)\n // 跑一遍构造函数体(对照 Control.js:15-42,设置 _map/_container/_type 等字段)。\n createCustomControl: (domCreate, o) => {\n try {\n // 不依赖 v4Driver 内部私有的 toRawControlOptions(其逻辑覆盖 4.0-only 字段,\n // 3.0 自定义控件只需要 anchor/offset),自己取这两个字段。\n const raw = (o ?? {}) as Record<string, unknown>;\n const anchor = raw.anchor;\n const offsetRaw = raw.offset as { width: number; height: number } | undefined;\n const ControlCtor = rawSDK.Control as new () => any;\n const SizeCtor = rawSDK.Size as new (w: number, h: number) => unknown;\n const offset = offsetRaw ? new SizeCtor(offsetRaw.width, offsetRaw.height) : undefined;\n\n const proto = Object.create(ControlCtor.prototype);\n proto.initialize = function (map: any) {\n const container = map?.container ?? map?.getContainer?.();\n if (!container) return undefined;\n const div = domCreate();\n container.appendChild(div);\n // 必须先赋 _container、再调用 setAnchor()/setOffset() 让 SDK 自身方法完成\n // 校验 + DOM 定位;手动摸 this._opts 内部结构会导致 anchor 值不生效\n // (_setPosition 最终读到的值不对,实测确认过)。\n this._container = div;\n this.setAnchor(anchor);\n if (offset !== undefined) this.setOffset(offset);\n return div;\n };\n // defaultAnchor/defaultOffset:3.0 的 setAnchor/setOffset 内部用\n // `this._opts.offset || this[\"defaultOffset\"]` 兜底,不设置的话在没传\n // offset 时会读 undefined.width 报错(对照 Control.js:150/157)。\n proto.defaultAnchor = 0; // BMAP_ANCHOR_TOP_LEFT\n proto.defaultOffset = new SizeCtor(0, 0);\n\n const instance = Object.create(proto);\n ControlCtor.call(instance);\n return { __brand: 'ControlHandle' as const, raw: instance, type: 'custom' };\n } catch (e) {\n reportCallFailure('Control', version, behavior, e);\n return null;\n }\n },\n\n // Hotspot 是 v3-only,v4Driver 的 createOverlayFactory 闭包捕获了 v4 能力矩阵\n // (Hotspot 不在 v4 矩阵中),所以必须在这里直接创建,绕过能力检查\n createHotspot: (p, o) => {\n try {\n const raw = o as Record<string, unknown>;\n const ctorOpts: Record<string, unknown> = {};\n if (typeof raw?.text === 'string') ctorOpts.text = raw.text;\n if (Array.isArray(raw?.offsets)) ctorOpts.offsets = raw.offsets;\n if (raw?.userData !== undefined) ctorOpts.userData = raw.userData;\n if (typeof raw?.minZoom === 'number') ctorOpts.minZoom = raw.minZoom;\n if (typeof raw?.maxZoom === 'number') ctorOpts.maxZoom = raw.maxZoom;\n const hasOpts = Object.keys(ctorOpts).length > 0;\n const point = new rawSDK.Point((p as Point).lng, (p as Point).lat);\n const inst = hasOpts ? new rawSDK.Hotspot(point, ctorOpts) : new rawSDK.Hotspot(point);\n return { __brand: 'OverlayHandle', raw: inst, type: 'hotspot' } as OverlayHandle;\n } catch (e) { reportCallFailure('Hotspot', version, behavior, e); return null; }\n },\n\n // PointCollection 同理:@removed 4.0,在 v4 矩阵中不存在,闭包检查会 block\n createPointCollection: (p, o) => {\n try {\n const raw = o as Record<string, unknown>;\n const ctorOpts: Record<string, unknown> = {};\n if (raw?.shape !== undefined) ctorOpts.shape = raw.shape;\n if (typeof raw?.color === 'string') ctorOpts.color = raw.color;\n if (typeof raw?.size === 'number') ctorOpts.size = raw.size;\n const hasOpts = Object.keys(ctorOpts).length > 0;\n const points = (p as Point[]).map(pt => new rawSDK.Point(pt.lng, pt.lat));\n const inst = hasOpts ? new rawSDK.PointCollection(points, ctorOpts) : new rawSDK.PointCollection(points);\n return { __brand: 'OverlayHandle', raw: inst, type: 'pointCollection' } as OverlayHandle;\n } catch (e) { reportCallFailure('PointCollection', version, behavior, e); return null; }\n },\n\n // 3.0 的 setMapStyle 和 setMapStyleV2 均可用\n setMapStyle: (map, options) => { (map.raw as any).setMapStyle?.(options); },\n setMapStyleV2: (map, options) => { (map.raw as any).setMapStyleV2?.(options); },\n\n // 3.0 坐标转换\n lnglatToMercator: (map, lng, lat) => {\n try {\n const MP = rawSDK?.MercatorProjection;\n if (MP) {\n const proj = new MP();\n if (typeof proj.lngLatToMercator === 'function') {\n const r = proj.lngLatToMercator(new rawSDK.Point(lng, lat));\n if (r) return [r.lng ?? r.x, r.lat ?? r.y] as [number, number];\n }\n }\n const m = map.raw as any;\n if (typeof m.lnglatToMercator === 'function') {\n const r = m.lnglatToMercator(lng, lat);\n if (r) return [r.lng ?? r.x, r.lat ?? r.y] as [number, number];\n }\n } catch { /* ignore */ }\n return [NaN, NaN] as [number, number];\n },\n mercatorToLnglat: (map, x, y) => {\n try {\n const MP = rawSDK?.MercatorProjection;\n if (MP) {\n const proj = new MP();\n if (typeof proj.mercatorToLngLat === 'function') {\n const r = proj.mercatorToLngLat({ x, y });\n if (r) return [r.lng ?? r.x, r.lat ?? r.y] as [number, number];\n }\n }\n const m = map.raw as any;\n if (typeof m.mercatorToLnglat === 'function') {\n const r = m.mercatorToLnglat(x, y);\n if (r) return [r.lng ?? r.x, r.lat ?? r.y] as [number, number];\n }\n } catch { /* ignore */ }\n return [NaN, NaN] as [number, number];\n },\n\n // 3.0 信息窗口通过 map.openInfoWindow\n openInfoWindow: (target, iw, point) => {\n const t = (target as any).raw;\n if (typeof t.openInfoWindow === 'function') {\n const SDK = getSDK();\n const pt = point && new SDK.Point(point.lng, point.lat);\n t.openInfoWindow((iw as any).raw, pt);\n }\n },\n\n // 4.0+ 全部走 unsupported(命令 noop,getter 返回兜底)\n flyTo: () => reportUnsupported('Map.flyTo', version, behavior),\n setHeading: () => reportUnsupported('Map.setHeading', version, behavior),\n getHeading: () => unsupportedValue('Map.getHeading', version, behavior, NaN),\n setTilt: () => reportUnsupported('Map.setTilt', version, behavior),\n getTilt: () => unsupportedValue('Map.getTilt', version, behavior, NaN),\n getCurrentMaxTilt: () => unsupportedValue('Map.getCurrentMaxTilt', version, behavior, NaN),\n startViewAnimation: () => unsupportedValue('Map.startViewAnimation', version, behavior, 0),\n pauseViewAnimation: () => reportUnsupported('Map.pauseViewAnimation', version, behavior),\n continueViewAnimation: () => reportUnsupported('Map.continueViewAnimation', version, behavior),\n cancelViewAnimation: () => reportUnsupported('Map.cancelViewAnimation', version, behavior),\n setDisplayOptions: () => reportUnsupported('Map.setDisplayOptions', version, behavior),\n setOptions: () => reportUnsupported('Map.setOptions', version, behavior),\n restrictBounds: () => reportUnsupported('Map.restrictBounds', version, behavior),\n enableRotate: () => reportUnsupported('Map.enableRotate', version, behavior),\n disableRotate: () => reportUnsupported('Map.disableRotate', version, behavior),\n enableRotateGestures: () => reportUnsupported('Map.enableRotateGestures', version, behavior),\n disableRotateGestures: () => reportUnsupported('Map.disableRotateGestures', version, behavior),\n enableTilt: () => reportUnsupported('Map.enableTilt', version, behavior),\n disableTilt: () => reportUnsupported('Map.disableTilt', version, behavior),\n enableTiltGestures: () => reportUnsupported('Map.enableTiltGestures', version, behavior),\n disableTiltGestures: () => reportUnsupported('Map.disableTiltGestures', version, behavior),\n enableResizeOnCenter: () => reportUnsupported('Map.enableResizeOnCenter', version, behavior),\n disableResizeOnCenter: () => reportUnsupported('Map.disableResizeOnCenter', version, behavior),\n // 3.0 没有独立的 enableIconInfoWindow API,但 enableMapClick 内部会异步加载\n // mapclick 模块(对照 jsapi-core-3-0/src/scripts/bmap/services/Mapclick/\n // Mapclick_Impl.js:441-475),点击底图标注时本身就会创建 InfoWindow 并弹出,\n // 所以转发到 enableMapClick/disableMapClick 后效果与 4.0 基本等价(点击可点、\n // 自动弹窗),不是能力降级。\n enableIconInfoWindow: (map) => { (map.raw as any).enableMapClick?.(); },\n disableIconInfoWindow: (map) => { (map.raw as any).disableMapClick?.(); },\n setTheme: () => reportUnsupported('Map.setTheme', version, behavior),\n getMapTypeId: () => unsupportedValue('Map.getMapTypeId', version, behavior, ''),\n getMapCoordType: () => unsupportedValue('Map.getMapCoordType', version, behavior, ''),\n getMapStyleId: () => unsupportedValue('Map.getMapStyleId', version, behavior, ''),\n getAreaStyleId: () => unsupportedValue('Map.getAreaStyleId', version, behavior, ''),\n getRenderType: () => unsupportedValue('Map.getRenderType', version, behavior, ''),\n isCanvasMap: () => unsupportedValue('Map.isCanvasMap', version, behavior, false),\n getContainerSize: (map) => (map.raw as any).getContainerSize?.() ?? (map.raw as any).getSize(),\n getZoomUnits: () => unsupportedValue('Map.getZoomUnits', version, behavior, NaN),\n isLoaded: (map) => (typeof (map.raw as any).isLoaded === 'function' ? (map.raw as any).isLoaded() : true),\n getCoordType: (map) => (typeof (map.raw as any).getCoordType === 'function' ? (map.raw as any).getCoordType() : ''),\n getProjection: (map) => (map.raw as any).getProjection?.() ?? null,\n getSolarInfo: () => unsupportedValue('Map.getSolarInfo', version, behavior, null),\n getTileId: () => unsupportedValue('Map.getTileId', version, behavior, ''),\n getPoiByUid: () => reportUnsupported('Map.getPoiByUid', version, behavior),\n setLock: () => reportUnsupported('Map.setLock', version, behavior),\n setPrivateRegions: () => reportUnsupported('Map.setPrivateRegions', version, behavior),\n getPrivateRegions: () => unsupportedValue('Map.getPrivateRegions', version, behavior, []),\n setPrivateStatus: () => reportUnsupported('Map.setPrivateStatus', version, behavior),\n getPrivateStatus: () => unsupportedValue('Map.getPrivateStatus', version, behavior, false),\n setCustomArea: () => reportUnsupported('Map.setCustomArea', version, behavior),\n addFocusMask: () => reportUnsupported('Map.addFocusMask', version, behavior),\n removeFocusMask: () => reportUnsupported('Map.removeFocusMask', version, behavior),\n clearFocusMasks: () => reportUnsupported('Map.clearFocusMasks', version, behavior),\n addCustomHtmlLayer: () => reportUnsupported('Map.addCustomHtmlLayer', version, behavior),\n removeCustomHtmlLayer: () => reportUnsupported('Map.removeCustomHtmlLayer', version, behavior),\n addParkingSpot: () => reportUnsupported('Map.addParkingSpot', version, behavior),\n removeParkingSpot: () => reportUnsupported('Map.removeParkingSpot', version, behavior),\n isSupportEarth: () => unsupportedValue('Map.isSupportEarth', version, behavior, false),\n getEarth: () => unsupportedValue('Map.getEarth', version, behavior, null),\n showEarthBoundary: () => reportUnsupported('Map.showEarthBoundary', version, behavior),\n hideEarthBoundary: () => reportUnsupported('Map.hideEarthBoundary', version, behavior),\n setEarthMaxZoom: () => reportUnsupported('Map.setEarthMaxZoom', version, behavior),\n setEarthMinZoom: () => reportUnsupported('Map.setEarthMinZoom', version, behavior),\n showIndoor: () => reportUnsupported('Map.showIndoor', version, behavior),\n setIndoor: () => reportUnsupported('Map.setIndoor', version, behavior),\n getIndoorInfo: () => unsupportedValue('Map.getIndoorInfo', version, behavior, null),\n showStreetLayer: () => reportUnsupported('Map.showStreetLayer', version, behavior),\n hideStreetLayer: () => reportUnsupported('Map.hideStreetLayer', version, behavior),\n isStreetLayerShow: () => unsupportedValue('Map.isStreetLayerShow', version, behavior, false),\n showVectorStreetLayer: () => reportUnsupported('Map.showVectorStreetLayer', version, behavior),\n hideVectorStreetLayer: () => reportUnsupported('Map.hideVectorStreetLayer', version, behavior),\n getLanguage: () => unsupportedValue('Map.getLanguage', version, behavior, ''),\n changeLanguage: () => reportUnsupported('Map.changeLanguage', version, behavior),\n enablePreferredLanguage: () => reportUnsupported('Map.enablePreferredLanguage', version, behavior),\n disablePreferredLanguage: () => reportUnsupported('Map.disablePreferredLanguage', version, behavior),\n addSpots: () => unsupportedValue('Map.addSpots', version, behavior, ''),\n getSpots: () => unsupportedValue('Map.getSpots', version, behavior, []),\n removeSpots: () => reportUnsupported('Map.removeSpots', version, behavior),\n clearSpots: () => reportUnsupported('Map.clearSpots', version, behavior),\n resetSpotStatus: () => reportUnsupported('Map.resetSpotStatus', version, behavior),\n hightlightSpotByUid: () => reportUnsupported('Map.hightlightSpotByUid', version, behavior),\n addAreaSpot: () => unsupportedValue('Map.addAreaSpot', version, behavior, ''),\n getAreaSpot: () => unsupportedValue('Map.getAreaSpot', version, behavior, []),\n removeAreaSpot: () => reportUnsupported('Map.removeAreaSpot', version, behavior),\n clearAreaSpots: () => reportUnsupported('Map.clearAreaSpots', version, behavior),\n clearLabels: () => reportUnsupported('Map.clearLabels', version, behavior),\n addMapLabels: () => unsupportedValue('Map.addMapLabels', version, behavior, []),\n removeMapLabels: () => reportUnsupported('Map.removeMapLabels', version, behavior),\n getIconByClickPosition: () => unsupportedValue('Map.getIconByClickPosition', version, behavior, null),\n setBounds: () => reportUnsupported('Map.setBounds', version, behavior),\n getScreenshot: () => unsupportedValue('Map.getScreenshot', version, behavior, ''),\n setCopyrightOffset: () => reportUnsupported('Map.setCopyrightOffset', version, behavior),\n setOverlayMoveCursor: () => reportUnsupported('Map.setOverlayMoveCursor', version, behavior),\n addNormalLayer: () => reportUnsupported('Map.addNormalLayer', version, behavior),\n removeNormalLayer: () => reportUnsupported('Map.removeNormalLayer', version, behavior),\n addGeoJSONLayer: () => reportUnsupported('Map.addGeoJSONLayer', version, behavior),\n removeGeoJSONLayer: () => reportUnsupported('Map.removeGeoJSONLayer', version, behavior),\n addDistrictLayer: () => reportUnsupported('Map.addDistrictLayer', version, behavior),\n removeDistrictLayer: () => reportUnsupported('Map.removeDistrictLayer', version, behavior),\n setTrafficOn: () => reportUnsupported('Map.setTrafficOn', version, behavior),\n setTrafficOff: () => reportUnsupported('Map.setTrafficOff', version, behavior),\n addLayer: (map, l) => {\n const raw = (l as any).raw;\n const kind = (l as any).kind;\n // 瓦片类图层走 addTileLayer;CanvasLayer/CustomLayer 等走 addOverlay\n if (kind === 'tile' || typeof raw?.getTilesUrl === 'function') {\n (map.raw as any).addTileLayer?.(raw);\n } else {\n (map.raw as any).addOverlay?.(raw);\n }\n },\n removeLayer: (map, l) => {\n const raw = (l as any).raw;\n const kind = (l as any).kind;\n if (kind === 'tile' || typeof raw?.getTilesUrl === 'function') {\n (map.raw as any).removeTileLayer?.(raw);\n } else {\n (map.raw as any).removeOverlay?.(raw);\n }\n },\n showOverlayContainer: () => reportUnsupported('Map.showOverlayContainer', version, behavior),\n hideOverlayContainer: () => reportUnsupported('Map.hideOverlayContainer', version, behavior),\n\n // 4.0+ 服务在 v3 不支持(工厂返回 isNull: true)\n createPlaceDetail: () => ({ __brand: 'ServiceHandle' as const, raw: null, isNull: true }),\n\n // 4.0+ 类不存在 → null\n createNavigationControl3D: () => { reportUnsupported('NavigationControl3D', version, behavior); return null; },\n createZoomControl: () => { reportUnsupported('ZoomControl', version, behavior); return null; },\n createLogoControl: () => { reportUnsupported('LogoControl', version, behavior); return null; },\n createRectangle: () => { reportUnsupported('Rectangle', version, behavior); return null; },\n createBezierCurve: () => { reportUnsupported('BezierCurve', version, behavior); return null; },\n createPrism: () => { reportUnsupported('Prism', version, behavior); return null; },\n createGroundPoint: () => { reportUnsupported('GroundPoint', version, behavior); return null; },\n createCustomOverlay: () => { reportUnsupported('CustomOverlay', version, behavior); return null; },\n createMarker3D: () => { reportUnsupported('Marker3D', version, behavior); return null; },\n openSimpleInfoWindow: () => reportUnsupported('Map.openSimpleInfoWindow', version, behavior),\n closeSimpleInfoWindow: () => reportUnsupported('Map.closeSimpleInfoWindow', version, behavior),\n createNormalLayer: () => { reportUnsupported('NormalLayer', version, behavior); return null; },\n createGeoJSONLayer: () => { reportUnsupported('GeoJSONLayer', version, behavior); return null; },\n createDistrictLayer: () => { reportUnsupported('DistrictLayer', version, behavior); return null; },\n // 4.0+ 高级图层在 v3 不支持\n createRasterTileLayer: () => { reportUnsupported('RasterTileLayer', version, behavior); return null; },\n createWMSLayer: () => { reportUnsupported('WMSLayer', version, behavior); return null; },\n createWMTSLayer: () => { reportUnsupported('WMTSLayer', version, behavior); return null; },\n createXYZLayer: () => { reportUnsupported('XYZLayer', version, behavior); return null; },\n createMVTLayer: () => { reportUnsupported('MVTLayer', version, behavior); return null; },\n createFeatureLayer: () => { reportUnsupported('FeatureLayer', version, behavior); return null; },\n createFillLayer: () => { reportUnsupported('FillLayer', version, behavior); return null; },\n createDOMLayer: () => { reportUnsupported('DOMLayer', version, behavior); return null; },\n createPointIconLayer: () => { reportUnsupported('PointIconLayer', version, behavior); return null; },\n createPointShapeLayer: () => { reportUnsupported('PointShapeLayer', version, behavior); return null; },\n // PanoramaCoverageLayer:v3 SDK 也导出该类(publish.js:81),走 base 的真实实现\n // v3-only 图层在 v3 直接创建(v4 capability 闭包不包含这些类)\n createCustomLayer: (o) => {\n try { return { __brand: 'LayerHandle' as const, raw: new rawSDK.CustomLayer(o), kind: 'custom' } as any; }\n catch (e) { reportCallFailure('CustomLayer', version, behavior, e); return null; }\n },\n createCanvasLayer: (o) => {\n try { return { __brand: 'LayerHandle' as const, raw: new rawSDK.CanvasLayer(o), kind: 'canvas' } as any; }\n catch (e) { reportCallFailure('CanvasLayer', version, behavior, e); return null; }\n },\n };\n\n return {\n ...base,\n ...v3Only,\n version,\n capabilities: CAPABILITY_MATRIX['3.0'],\n };\n}\n","import type { BMapVersion, UnsupportedBehavior } from '../types';\nimport type { BMapDriver } from './types';\nimport { createV4Driver } from './v4Driver';\nimport { createV3Driver } from './v3Driver';\n\n/**\n * 根据 version 选择 driver:\n * - '3.0':使用 v3Driver\n * - 其它任何值('4.0' / '4.1' / '5.0' / ...):使用 v4Driver(按 4.0 baseline 处理)\n *\n * jsapi-loader 始终按用户传入的 version 加载真实 SDK,与 driver 选择无关。\n * 未显式支持的版本统一按 4.0 处理(DESIGN.md「框架内没定义 4.0 后的版本,按 4.0 版本处理」)。\n */\nexport function createDriver(\n version: BMapVersion,\n rawSDK: unknown,\n opts: { unsupportedBehavior: UnsupportedBehavior },\n): BMapDriver {\n if (version === '3.0') {\n return createV3Driver(rawSDK as any, opts);\n }\n // '4.0' 及以后的所有版本统一走 v4Driver\n return createV4Driver(rawSDK as any, opts);\n}\n\nexport { createV4Driver, createV3Driver };\nexport type { BMapDriver } from './types';\n","/** 稳定 hash,做 loader 缓存 key */\nexport function stableHash(value: unknown): string {\n if (value === null || typeof value !== 'object') return String(value);\n if (Array.isArray(value)) return `[${value.map(stableHash).join(',')}]`;\n const keys = Object.keys(value as Record<string, unknown>).sort();\n return `{${keys.map(k => `${k}:${stableHash((value as Record<string, unknown>)[k])}`).join(',')}}`;\n}\n","import type { BMapVersion, LoadKeyComponents } from '../types';\nimport { stableHash } from './stableHash';\n\ninterface RegistryEntry {\n promise: Promise<unknown>;\n loadKey: string;\n components: LoadKeyComponents;\n}\n\nconst globalRegistry: Map<string, RegistryEntry> = new Map();\n\nexport function buildLoadKey(c: LoadKeyComponents): string {\n return stableHash({\n v: c.version,\n ak: c.ak,\n host: c.serviceHost ?? '',\n lang: c.language ?? '',\n plugins: (c.plugins ?? []).slice().sort(),\n });\n}\n\nexport function getExisting(loadKey: string): RegistryEntry | undefined {\n return globalRegistry.get(loadKey);\n}\n\nexport function register(loadKey: string, components: LoadKeyComponents, promise: Promise<unknown>): void {\n globalRegistry.set(loadKey, { promise, loadKey, components });\n promise.catch(() => globalRegistry.delete(loadKey));\n}\n\nexport function getAllEntries(): RegistryEntry[] {\n return Array.from(globalRegistry.values());\n}\n\nexport function detectConflict(loadKey: string, requested: LoadKeyComponents): LoadKeyComponents | null {\n // 同页面只能加载一个版本/AK 组合\n for (const entry of globalRegistry.values()) {\n if (entry.loadKey !== loadKey) return entry.components;\n }\n void requested;\n return null;\n}\n\nexport type { BMapVersion, LoadKeyComponents };\n","import type { BMapVersion } from '../types';\nimport { buildLoadKey, getExisting, register, detectConflict, getAllEntries } from './registry';\nimport type { LoadKeyComponents } from '../types';\n\nexport interface LoaderResult {\n rawSDK: unknown;\n version: BMapVersion;\n loadKey: string;\n}\n\n/**\n * 加载 JSAPI 的统一入口。\n *\n * - 通过 @baidumap/jsapi-loader 加载。\n * - 缓存以 loadKey 去重,不重复注入脚本。\n * - 冲突(不同 loadKey)触发 onLoadConflict,返回已加载的 entry。\n * - **不修改 window.BMap / BMapGL 原型、不做命名空间别名**。\n */\nexport async function loadJSAPI(components: LoadKeyComponents, opts: {\n protocol?: 'http' | 'https';\n timeout?: number;\n globalConfig?: Record<string, unknown>;\n onLoadConflict?: (current: LoadKeyComponents, requested: LoadKeyComponents) => void;\n}): Promise<LoaderResult> {\n const loadKey = buildLoadKey(components);\n const existing = getExisting(loadKey);\n if (existing) {\n const raw = await existing.promise;\n return { rawSDK: raw, version: components.version, loadKey };\n }\n\n const conflict = detectConflict(loadKey, components);\n if (conflict) {\n opts.onLoadConflict?.(conflict, components);\n // 不强行覆盖已加载的 SDK,返回已存在的\n for (const entry of getAllEntries()) {\n if (entry.loadKey !== loadKey) {\n const raw = await entry.promise;\n return { rawSDK: raw, version: entry.components.version, loadKey: entry.loadKey };\n }\n }\n }\n\n const promise = doLoad(components, opts);\n register(loadKey, components, promise);\n const rawSDK = await promise;\n return { rawSDK, version: components.version, loadKey };\n}\n\nasync function doLoad(components: LoadKeyComponents, opts: {\n protocol?: 'http' | 'https';\n timeout?: number;\n globalConfig?: Record<string, unknown>;\n}): Promise<unknown> {\n // @baidumap/jsapi-loader 默认 export 含 load/reset/getStatus\n const mod: any = await import('@baidumap/jsapi-loader');\n const Loader = mod.default ?? mod;\n\n // loader.load 返回对应的命名空间对象(3.0/4.0/未来版本 → window.BMap)\n // 注意:jsapi-loader 自身类型只声明了 '3.0' | 'gl' | '4.0',但实际接受任意字符串。\n // 这里把用户传入的 version 原样透传(包括未来的 '4.1' / '5.0' 等)。\n return Loader.load({\n ak: components.ak,\n version: components.version as '3.0' | 'gl' | '4.0',\n ...(components.serviceHost ? { serviceHost: components.serviceHost } : {}),\n ...(opts.protocol ? { protocol: opts.protocol } : {}),\n ...(opts.timeout ? { timeout: opts.timeout } : {}),\n ...(opts.globalConfig ? { globalConfig: opts.globalConfig } : {}),\n });\n}\n","/**\n * BMapProvider —— 加载 JSAPI、创建 driver,并通过 provide 下发。\n * 对应 react-bmap 的 provider/BMapProvider.tsx。\n *\n * 设计要点:\n * - loadKey 含 version/ak/serviceHost/language/plugins,由 loader 去重缓存。\n * - generation token 防超时后到达的脚本覆盖。\n * - 状态用 shallowRef(driver 内含 SDK 实例,不能深代理)。\n * - 加载中渲染 fallback 插槽,失败渲染 error 插槽。\n */\nimport { defineComponent, h, onBeforeUnmount, onMounted, provide, shallowRef, type PropType } from 'vue';\nimport type { BMapVersion, LoadKeyComponents, UnsupportedBehavior } from '../types';\nimport { BMAP_KEY, type BMapContextValue } from '../context';\nimport { createDriver } from '../drivers/createDriver';\nimport { loadJSAPI } from '../loader';\n\nexport const BMapProvider = defineComponent({\n name: 'BMapProvider',\n props: {\n ak: { type: String, required: true },\n version: { type: String as PropType<BMapVersion>, default: '4.0' },\n protocol: { type: String as PropType<'http' | 'https'>, default: undefined },\n serviceHost: { type: String, default: undefined },\n language: { type: String, default: undefined },\n plugins: { type: Array as PropType<string[]>, default: undefined },\n timeout: { type: Number, default: undefined },\n globalConfig: { type: Object as PropType<Record<string, unknown>>, default: undefined },\n unsupportedBehavior: { type: String as PropType<UnsupportedBehavior>, default: 'warn' },\n onError: { type: Function as PropType<(err: Error) => void>, default: undefined },\n onLoadConflict: {\n type: Function as PropType<(current: LoadKeyComponents, requested: LoadKeyComponents) => void>,\n default: undefined,\n },\n },\n setup(props, { slots }) {\n const state = shallowRef<BMapContextValue>({\n status: 'loading',\n driver: null,\n version: props.version,\n error: null,\n });\n provide(BMAP_KEY, state);\n\n let generation = 0;\n let cancelled = false;\n\n onMounted(() => {\n if (typeof window === 'undefined') return; // SSR\n const my = ++generation;\n const components: LoadKeyComponents = {\n version: props.version,\n ak: props.ak,\n serviceHost: props.serviceHost,\n language: props.language,\n plugins: props.plugins,\n };\n loadJSAPI(components, {\n protocol: props.protocol,\n timeout: props.timeout,\n globalConfig: props.globalConfig,\n onLoadConflict: (current, requested) => props.onLoadConflict?.(current, requested),\n })\n .then(({ rawSDK, version: real }) => {\n if (cancelled || my !== generation) return;\n const driver = createDriver(real, rawSDK, { unsupportedBehavior: props.unsupportedBehavior });\n state.value = { status: 'ready', driver, version: real, error: null };\n })\n .catch((err: unknown) => {\n if (cancelled || my !== generation) return;\n const error = err instanceof Error ? err : new Error(String(err));\n state.value = { ...state.value, status: 'error', error };\n if (props.onError) props.onError(error);\n else if (typeof console !== 'undefined') {\n console.error(\n '[vue-bmap] 地图脚本加载失败,<BMapProvider> 的子树不会渲染。' +\n '请检查 ak 是否有效、是否配置了域名白名单、网络能否访问百度地图服务。',\n error,\n );\n }\n });\n });\n\n onBeforeUnmount(() => {\n cancelled = true;\n generation++;\n });\n\n return () => {\n const s = state.value;\n if (s.status === 'loading') return slots.fallback ? slots.fallback() : null;\n if (s.status === 'error') return slots.error ? slots.error({ error: s.error }) : null;\n return slots.default ? slots.default() : null;\n };\n },\n});\n\nexport type BMapProviderProps = InstanceType<typeof BMapProvider>['$props'];\n","/**\n * 全量 BMAP_* 常量 — 从 bmap-jsapi-dts/src/const/*.d.ts 转录。\n */\n\n// ─── ControlAnchor ───\nexport const BMAP_ANCHOR_TOP_LEFT = 0;\nexport const BMAP_ANCHOR_TOP_RIGHT = 1;\nexport const BMAP_ANCHOR_BOTTOM_LEFT = 2;\nexport const BMAP_ANCHOR_BOTTOM_RIGHT = 3;\nexport const BMAP_ANCHOR_TOP_CENTER = 4;\nexport const BMAP_ANCHOR_BOTTOM_CENTER = 5;\nexport const BMAP_ANCHOR_LEFT_CENTER = 6;\nexport const BMAP_ANCHOR_RIGHT_CENTER = 7;\nexport const BMAP_ANCHOR_CENTER = 8;\nexport type ControlAnchor = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;\n\n// ─── MapTypeId ───\nexport const BMAP_NORMAL_MAP = 'B_NORMAL_MAP';\nexport const BMAP_SATELLITE_MAP = 'B_SATELLITE_MAP';\n// 注意:混合图内部并非独立类型,SDK 源码里 BMAP_HYBRID_MAP_ID = 'B_STREET_MAP'\n// (反查 jsapi-webgl-1-0/src/scripts/BMap/Map.js:522)。normalizeMapTypeRequest()\n// 在 4.0 兼容模式下会把 'B_STREET_MAP' 转换成「卫星图 + showStreetLayer: true」\n// 两个信号;纯 GL 模式(apiVersionIsGL() === true)下不转换,直接透传。\nexport const BMAP_HYBRID_MAP = 'B_STREET_MAP';\nexport const BMAP_EARTH_MAP = 'B_EARTH_MAP';\nexport type MapTypeId = string;\n\n// ─── NavigationControlType ───\nexport const BMAP_NAVIGATION_CONTROL_LARGE = 0;\nexport const BMAP_NAVIGATION_CONTROL_SMALL = 1;\nexport const BMAP_NAVIGATION_CONTROL_PAN = 2;\nexport const BMAP_NAVIGATION_CONTROL_ZOOM = 3;\nexport type NavigationControlType = 0 | 1 | 2 | 3;\n\n// ─── MapTypeControlType ───\nexport const BMAP_MAPTYPE_CONTROL_HORIZONTAL = 0;\nexport const BMAP_MAPTYPE_CONTROL_DROPDOWN = 1;\nexport const BMAP_MAPTYPE_CONTROL_MAP = 2;\nexport type MapTypeControlType = 0 | 1 | 2;\n\n// ─── Animation ───\nexport const BMAP_ANIMATION_DROP = 1;\nexport const BMAP_ANIMATION_BOUNCE = 2;\nexport type MarkerAnimation = 1 | 2;\n\n// ─── StatusCodes ───\nexport const BMAP_STATUS_SUCCESS = 0;\nexport const BMAP_STATUS_CITY_LIST = 1;\nexport const BMAP_STATUS_UNKNOWN_LOCATION = 2;\nexport const BMAP_STATUS_UNKNOWN_ROUTE = 3;\nexport const BMAP_STATUS_INVALID_KEY = 4;\nexport const BMAP_STATUS_INVALID_REQUEST = 5;\nexport const BMAP_STATUS_PERMISSION_DENIED = 6;\nexport const BMAP_STATUS_SERVICE_UNAVAILABLE = 7;\nexport const BMAP_STATUS_TIMEOUT = 8;\nexport type ServiceStatus = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;\n\n// ─── DrivingPolicy ───\nexport const BMAP_DRIVING_POLICY_DEFAULT = 0;\nexport const BMAP_DRIVING_POLICY_DESTANCE = 2;\nexport const BMAP_DRIVING_POLICY_AVOID_HIGHWAYS = 3;\nexport const BMAP_DRIVING_POLICY_FIRST_HIGHWAYS = 4;\nexport const BMAP_DRIVING_POLICY_AVOID_CONGESTION = 5;\nexport const BMAP_DRIVING_POLICY_AVOID_PAY = 6;\nexport const BMAP_DRIVING_POLICY_HIGHWAYS_AVOID_CONGESTION = 7;\nexport const BMAP_DRIVING_POLICY_AVOID_HIGHWAYS_CONGESTION = 8;\nexport const BMAP_DRIVING_POLICY_AVOID_CONGESTION_PAY = 9;\nexport const BMAP_DRIVING_POLICY_AVOID_HIGHWAYS_CONGESTION_PAY = 10;\nexport const BMAP_DRIVING_POLICY_AVOID_HIGHWAYS_PAY = 11;\nexport const BMAP_DRIVING_POLICY_DISTANCE_PRIORITY = 12;\nexport const BMAP_DRIVING_POLICY_TIME_PRIORITY = 13;\nexport type DrivingPolicy = 0 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13;\n\n// ─── TransitPolicy ───\nexport const BMAP_TRANSIT_POLICY_RECOMMEND = 0;\nexport const BMAP_TRANSIT_POLICY_LEAST_TRANSFER = 1;\nexport const BMAP_TRANSIT_POLICY_LEAST_WALKING = 2;\nexport const BMAP_TRANSIT_POLICY_AVOID_SUBWAYS = 3;\nexport const BMAP_TRANSIT_POLICY_LEAST_TIME = 4;\nexport const BMAP_TRANSIT_POLICY_FIRST_SUBWAYS = 5;\nexport type TransitPolicy = 0 | 1 | 2 | 3 | 4 | 5;\n\n// ─── TransitType ───\nexport const BMAP_TRANSIT_TYPE_IN_CITY = 0;\nexport const BMAP_TRANSIT_TYPE_CROSS_CITY = 1;\nexport type TransitType = 0 | 1;\n\n// ─── TransitVehicleType ───\nexport const BMAP_TRANSIT_TYPE_POLICY_TRAIN = 0;\nexport const BMAP_TRANSIT_TYPE_POLICY_AIRPLANE = 1;\nexport const BMAP_TRANSIT_TYPE_POLICY_COACH = 2;\nexport type TransitVehicleType = 0 | 1 | 2;\n\n// ─── TransitPlanType ───\nexport const BMAP_TRANSIT_PLAN_TYPE_ROUTE = 0;\nexport const BMAP_TRANSIT_PLAN_TYPE_LINE = 1;\nexport type TransitPlanType = 0 | 1;\n\n// ─── IntercityPolicy ───\nexport const BMAP_INTERCITY_POLICY_LEAST_TIME = 0;\nexport const BMAP_INTERCITY_POLICY_EARLY_START = 1;\nexport const BMAP_INTERCITY_POLICY_CHEAP_PRICE = 2;\nexport type IntercityPolicy = 0 | 1 | 2;\n\n// ─── Language ───\nexport const BMAP_LANGUAGE_ZH = 'zh';\nexport const BMAP_LANGUAGE_EN = 'en';\nexport const BMAP_LANGUAGE_ZH_TW = 'zh-TW';\nexport const BMAP_LANGUAGE_ES = 'es';\nexport const BMAP_LANGUAGE_PT = 'pt';\nexport const BMAP_LANGUAGE_FR = 'fr';\nexport const BMAP_LANGUAGE_DE = 'de';\nexport const BMAP_LANGUAGE_TH = 'th';\nexport const BMAP_LANGUAGE_JA = 'ja';\nexport const BMAP_LANGUAGE_KO = 'ko';\nexport const BMAP_LANGUAGE_TR = 'tr';\nexport const BMAP_LANGUAGE_IT = 'it';\nexport const BMAP_LANGUAGE_RU = 'ru';\nexport const BMAP_LANGUAGE_MS = 'ms';\nexport const BMAP_LANGUAGE_VI = 'vi';\nexport const BMAP_LANGUAGE_ID = 'id';\nexport type Language = string;\n\n// ─── LengthUnit ───\nexport const BMAP_UNIT_METRIC = 'metric';\nexport const BMAP_UNIT_IMPERIAL = 'us';\nexport type LengthUnit = 'metric' | 'us';\n\n// ─── CoordType ───\nexport const BMAP_COORD_MERCATOR = 'BMAP_COORD_MERCATOR';\nexport const BMAP_COORD_GCJ02 = 'BMAP_COORD_GCJ02';\nexport const BMAP_COORD_BD09 = 'BMAP_COORD_BD09';\nexport const BMAP_COORD_GCJ02MERCATOR = 'BMAP_COORD_GCJ02MERCATOR';\nexport const BMAP_COORD_WGS84 = 'BMAP_COORD_WGS84';\nexport const BMAP_COORD_EPSG3857 = 'BMAP_COORD_EPSG3857';\nexport type CoordType = string;\n\n// ─── SymbolShapeType ───\nexport const BMap_Symbol_SHAPE_CIRCLE = 1;\nexport const BMap_Symbol_SHAPE_RECTANGLE = 2;\nexport const BMap_Symbol_SHAPE_RHOMBUS = 3;\nexport const BMap_Symbol_SHAPE_STAR = 4;\nexport const BMap_Symbol_SHAPE_BACKWARD_CLOSED_ARROW = 5;\nexport const BMap_Symbol_SHAPE_FORWARD_CLOSED_ARROW = 6;\nexport const BMap_Symbol_SHAPE_BACKWARD_OPEN_ARROW = 7;\nexport const BMap_Symbol_SHAPE_FORWARD_OPEN_ARROW = 8;\nexport const BMap_Symbol_SHAPE_POINT = 9;\nexport const BMap_Symbol_SHAPE_PLANE = 10;\nexport const BMap_Symbol_SHAPE_CAMERA = 11;\nexport const BMap_Symbol_SHAPE_WARNING = 12;\nexport const BMap_Symbol_SHAPE_SMILE = 13;\nexport const BMap_Symbol_SHAPE_CLOCK = 14;\nexport type SymbolShapeType = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14;\n\n// ─── ShapeType (PointCollection) ───\nexport const BMAP_POINT_SHAPE_STAR = 1;\nexport const BMAP_POINT_SHAPE_WATERDROP = 2;\nexport const BMAP_POINT_SHAPE_CIRCLE = 3;\nexport const BMAP_POINT_SHAPE_SQUARE = 4;\nexport const BMAP_POINT_SHAPE_RHOMBUS = 5;\nexport type ShapeType = 1 | 2 | 3 | 4 | 5;\n\n// ─── PointShapeLayer ShapeType(4.0+;对应 SDK PointShapeLayer.ShapeType)───\n// 用于 PointShapeLayer 的 style.shapeType(注意与上面 PointCollection 的 BMAP_POINT_SHAPE_* 取值不同)\nexport const BMAP_POINT_SHAPE_LAYER_CIRCLE = 0;\nexport const BMAP_POINT_SHAPE_LAYER_SQUARE = 1;\nexport const BMAP_POINT_SHAPE_LAYER_TRIANGLE = 2;\nexport const BMAP_POINT_SHAPE_LAYER_DIAMOND = 3;\nexport const BMAP_POINT_SHAPE_LAYER_CROSS = 4;\nexport const BMAP_POINT_SHAPE_LAYER_ARROW = 5;\nexport const BMAP_POINT_SHAPE_LAYER_ARROW_TAIL = 6;\nexport const BMAP_POINT_SHAPE_LAYER_STAR = 7;\nexport const BMAP_POINT_SHAPE_LAYER_WATERDROP = 9;\nexport type PointShapeLayerShapeType = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9;\n\n// ─── SizeType (PointCollection) ───\nexport const BMAP_POINT_SIZE_TINY = 1;\nexport const BMAP_POINT_SIZE_SMALLER = 2;\nexport const BMAP_POINT_SIZE_SMALL = 3;\nexport const BMAP_POINT_SIZE_NORMAL = 4;\nexport const BMAP_POINT_SIZE_BIG = 5;\nexport const BMAP_POINT_SIZE_BIGGER = 6;\nexport const BMAP_POINT_SIZE_HUGE = 7;\nexport type SizeType = 1 | 2 | 3 | 4 | 5 | 6 | 7;\n\n// ─── Marker3DShapeType ───\nexport const BMAP_SHAPE_CIRCLE = 1;\nexport const BMAP_SHAPE_RECT = 2;\nexport type Marker3DShapeType = 1 | 2;\n\n// ─── HighlightModes ───\nexport const BMAP_HIGHLIGHT_STEP = 1;\nexport const BMAP_HIGHLIGHT_ROUTE = 2;\nexport type HighlightMode = 1 | 2;\n\n// ─── POIType ───\nexport const BMAP_POI_TYPE_NORMAL = 0;\nexport const BMAP_POI_TYPE_BUSSTOP = 1;\nexport const BMAP_POI_TYPE_BUSLINE = 2;\nexport const BMAP_POI_TYPE_SUBSTOP = 3;\nexport const BMAP_POI_TYPE_SUBLINE = 4;\nexport type POIType = 0 | 1 | 2 | 3 | 4;\n\n// ─── Mode ───\nexport const BMAP_MODE_DRIVING = 'driving';\nexport const BMAP_MODE_TRANSIT = 'transit';\nexport const BMAP_MODE_WALKING = 'walking';\nexport const BMAP_MODE_NAVIGATION = 'navigation';\nexport type Mode = 'driving' | 'transit' | 'walking' | 'navigation';\n\n// ─── RouteStatus ───\nexport const BMAP_ROUTE_STATUS_NORMAL = 0;\nexport const BMAP_ROUTE_STATUS_EMPTY = 1;\nexport const BMAP_ROUTE_STATUS_ADDRESS = 2;\nexport type RouteStatus = 0 | 1 | 2;\n\n// ─── RouteType ───\nexport const BMAP_ROUTE_TYPE_WALKING = 2;\nexport const BMAP_ROUTE_TYPE_DRIVING = 3;\nexport const BMAP_ROUTE_TYPE_RIDING = 6;\nexport type RouteType = 2 | 3 | 6;\n\n// ─── TrafficStatus ───\nexport const BMAP_TRAFFICE_STATUS_NONE = 0;\nexport const BMAP_TRAFFICE_STATUS_NORMAL = 1;\nexport const BMAP_TRAFFICE_STATUS_SLOW = 2;\nexport const BMAP_TRAFFICE_STATUS_JAM = 3;\nexport type TrafficStatus = 0 | 1 | 2 | 3;\n\n// ─── PointDensityType ───\nexport const BMAP_POINT_DENSITY_HIGH = 200;\nexport const BMAP_POINT_DENSITY_MEDIUM = 100;\nexport const BMAP_POINT_DENSITY_LOW = 50;\nexport type PointDensityType = 200 | 100 | 50;\n\n// ─── ContextMenuIcon ───\nexport const BMAP_CONTEXT_MENU_ICON_ZOOMIN: string = 'BMAP_CONTEXT_MENU_ICON_ZOOMIN';\nexport const BMAP_CONTEXT_MENU_ICON_ZOOMOUT: string = 'BMAP_CONTEXT_MENU_ICON_ZOOMOUT';\nexport type ContextMenuIcon = string;\n\n// ─── LineType ───\nexport const BMAP_LINE_TYPE_BUS = 0;\nexport const BMAP_LINE_TYPE_SUBWAY = 1;\nexport const BMAP_LINE_TYPE_FERRY = 2;\nexport const BMAP_LINE_TYPE_TRAIN = 3;\nexport const BMAP_LINE_TYPE_AIRPLANE = 4;\nexport const BMAP_LINE_TYPE_COACH = 5;\nexport type LineType = 0 | 1 | 2 | 3 | 4 | 5;\n\n// ─── Panorama POIType(4.0;Panorama.setPanoramaPOIType 用)───\nexport const BMAP_PANORAMA_POI_HOTEL = 'hotel';\nexport const BMAP_PANORAMA_POI_CATERING = 'catering';\nexport const BMAP_PANORAMA_POI_MOVIE = 'movie';\nexport const BMAP_PANORAMA_POI_TRANSIT = 'transit';\nexport const BMAP_PANORAMA_POI_INDOOR_SCENE = 'indoor_scene';\nexport const BMAP_PANORAMA_POI_NONE = 'none';\nexport type PanoramaPOIType = 'hotel' | 'catering' | 'movie' | 'transit' | 'indoor_scene' | 'none';\n\n// ─── Panorama SceneType(getSceneType 返回值)───\nexport const BMAP_PANORAMA_STREET_SCENE = 'street';\nexport const BMAP_PANORAMA_INDOOR_SCENE = 'inter';\nexport type PanoramaSceneType = 'street' | 'inter';\n","/**\n * 兼容层 —— 常量的唯一权威来源是 ../constants/index.ts。\n *\n * 这里只做两件事:\n * 1. re-export ../constants 的全部常量与类型(保持单一数据源,杜绝重复定义与取值冲突);\n * 2. 保留少量历史命名别名与 getSdkConstant 工具,避免破坏既有对外 API。\n *\n * ⚠️ 请勿在此重复定义 BMAP_* 常量:任何与 ../constants 同名的声明都会造成导出冲突/取值分叉。\n */\nimport { tryGetSDK } from '../utils/sdk';\nimport {\n BMAP_ANCHOR_LEFT_CENTER, BMAP_ANCHOR_RIGHT_CENTER,\n BMAP_LANGUAGE_ZH, BMAP_LANGUAGE_EN, BMAP_SHAPE_RECT,\n} from '../constants';\nimport type { MarkerAnimation } from '../constants';\n\nexport * from '../constants';\n\n// ─── 历史命名别名(指向 ../constants 的规范值,避免破坏旧用法) ───\n/** @deprecated 用 BMAP_ANCHOR_LEFT_CENTER */\nexport const BMAP_ANCHOR_MIDDLE_LEFT = BMAP_ANCHOR_LEFT_CENTER;\n/** @deprecated 用 BMAP_ANCHOR_RIGHT_CENTER */\nexport const BMAP_ANCHOR_MIDDLE_RIGHT = BMAP_ANCHOR_RIGHT_CENTER;\n/** @deprecated 用 BMAP_LANGUAGE_ZH */\nexport const BMAP_LANG_CN = BMAP_LANGUAGE_ZH;\n/** @deprecated 用 BMAP_LANGUAGE_EN */\nexport const BMAP_LANG_EN = BMAP_LANGUAGE_EN;\n/** @deprecated 用 BMAP_SHAPE_RECT */\nexport const BMAP_SHAPE_RECTANGLE = BMAP_SHAPE_RECT;\n/** @deprecated 用 MarkerAnimation */\nexport type Animation = MarkerAnimation;\n\n/**\n * 从 SDK 全局对象获取运行时常量(v3/v4 值可能不同),回退到静态值。\n */\nexport function getSdkConstant(name: string, fallback: number): number {\n const SDK = tryGetSDK();\n return (SDK?.[name] as number | undefined) ?? fallback;\n}\n","import type { BMapDriver } from '../../drivers/types';\nimport type {\n Bounds, ControlHandle, LayerHandle, MapHandle, OverlayHandle,\n Pixel, Point, Size,\n} from '../../types';\nimport type {\n DisplayOptions, MapPanes, MapStyleConfig, MapStyleV2Options,\n Projection, ViewAnimation, Viewport,\n} from '../../types/core';\n\n/**\n * MapRef — 命令式句柄,全量透传 driver 方法。\n *\n * 签名与 bmap-jsapi-dts 的 Map 类一致。\n * 不支持时由 driver 内部按 unsupportedBehavior 处理。\n */\nexport class MapRefImpl {\n constructor(private map: MapHandle, private driver: BMapDriver) {}\n\n // ─── 交互开关 ───\n enableDragging(): void { this.driver.enableDragging(this.map); }\n disableDragging(): void { this.driver.disableDragging(this.map); }\n enableInertialDragging(): void { this.driver.enableInertialDragging(this.map); }\n disableInertialDragging(): void { this.driver.disableInertialDragging(this.map); }\n enableScrollWheelZoom(): void { this.driver.enableScrollWheelZoom(this.map); }\n disableScrollWheelZoom(): void { this.driver.disableScrollWheelZoom(this.map); }\n enableContinuousZoom(): void { this.driver.enableContinuousZoom(this.map); }\n disableContinuousZoom(): void { this.driver.disableContinuousZoom(this.map); }\n enableResizeOnCenter(): void { this.driver.enableResizeOnCenter(this.map); }\n disableResizeOnCenter(): void { this.driver.disableResizeOnCenter(this.map); }\n enableDoubleClickZoom(): void { this.driver.enableDoubleClickZoom(this.map); }\n disableDoubleClickZoom(): void { this.driver.disableDoubleClickZoom(this.map); }\n enableKeyboard(): void { this.driver.enableKeyboard(this.map); }\n disableKeyboard(): void { this.driver.disableKeyboard(this.map); }\n enablePinchToZoom(): void { this.driver.enablePinchToZoom(this.map); }\n disablePinchToZoom(): void { this.driver.disablePinchToZoom(this.map); }\n enableRotate(): void { this.driver.enableRotate(this.map); }\n disableRotate(): void { this.driver.disableRotate(this.map); }\n enableRotateGestures(): void { this.driver.enableRotateGestures(this.map); }\n disableRotateGestures(): void { this.driver.disableRotateGestures(this.map); }\n enableTilt(): void { this.driver.enableTilt(this.map); }\n disableTilt(): void { this.driver.disableTilt(this.map); }\n enableTiltGestures(): void { this.driver.enableTiltGestures(this.map); }\n disableTiltGestures(): void { this.driver.disableTiltGestures(this.map); }\n enableAutoResize(): void { this.driver.enableAutoResize(this.map); }\n disableAutoResize(): void { this.driver.disableAutoResize(this.map); }\n\n // ─── 视角 ───\n setHeading(heading: number, options?: unknown): void { this.driver.setHeading(this.map, heading, options); }\n getHeading(): number { return this.driver.getHeading(this.map); }\n setTilt(tilt: number, options?: unknown): void { this.driver.setTilt(this.map, tilt, options); }\n getTilt(): number { return this.driver.getTilt(this.map); }\n getCurrentMaxTilt(): number { return this.driver.getCurrentMaxTilt(this.map); }\n\n // ─── 缩放级别 ───\n setMinZoom(zoom: number): void { this.driver.setMinZoom(this.map, zoom); }\n setMaxZoom(zoom: number): void { this.driver.setMaxZoom(this.map, zoom); }\n getMinZoom(): number { return this.driver.getMinZoom(this.map); }\n getMaxZoom(): number { return this.driver.getMaxZoom(this.map); }\n\n // ─── resize ───\n checkResize(): void { this.driver.checkResize(this.map); }\n resize(): void { this.driver.resize(this.map); }\n setSize(size: { width: number; height: number }): void { this.driver.setSize(this.map, size); }\n zoomTo(level: number, point?: Point): void { this.driver.zoomTo(this.map, level, point); }\n\n // ─── 显示配置 ───\n setDisplayOptions(options: DisplayOptions): void { this.driver.setDisplayOptions(this.map, options); }\n setOptions(options: unknown): void { this.driver.setOptions(this.map, options); }\n\n // ─── 容器信息 ───\n getSize(): Size { return this.driver.getSize(this.map); }\n getContainerSize(): Size { return this.driver.getContainerSize(this.map); }\n getZoomUnits(): number { return this.driver.getZoomUnits(this.map); }\n getContainer(): HTMLElement { return this.driver.getContainer(this.map); }\n\n // ─── 坐标转换 ───\n pixelToPoint(pixel: Pixel, options?: unknown): Point { return this.driver.pixelToPoint(this.map, pixel, options); }\n pointToPixel(point: Point, options?: unknown): Pixel { return this.driver.pointToPixel(this.map, point, options); }\n lnglatToMercator(lng: number, lat: number): [number, number] { return this.driver.lnglatToMercator(this.map, lng, lat); }\n mercatorToLnglat(mcLng: number, mcLat: number): [number, number] { return this.driver.mercatorToLnglat(this.map, mcLng, mcLat); }\n pointToOverlayPixel(point: Point, options?: unknown): Pixel { return this.driver.pointToOverlayPixel(this.map, point, options); }\n overlayPixelToPoint(pixel: Pixel, options?: unknown): Point { return this.driver.overlayPixelToPoint(this.map, pixel, options); }\n getDistance(start: Point, end: Point): number { return this.driver.getDistance(this.map, start, end); }\n\n // ─── 地图状态 ───\n isLoaded(): boolean { return this.driver.isLoaded(this.map); }\n getCoordType(): string { return this.driver.getCoordType(this.map); }\n getMapTypeId(): string { return this.driver.getMapTypeId(this.map); }\n getMapCoordType(): string { return this.driver.getMapCoordType(this.map); }\n getMapStyleId(): string { return this.driver.getMapStyleId(this.map); }\n getAreaStyleId(): string { return this.driver.getAreaStyleId(this.map); }\n getRenderType(): string { return this.driver.getRenderType(this.map); }\n isCanvasMap(): boolean { return this.driver.isCanvasMap(this.map); }\n getProjection(): Projection { return this.driver.getProjection(this.map) as Projection; }\n\n getSolarInfo(date: Date): unknown { return this.driver.getSolarInfo(this.map, date); }\n getTileId(point: Point, level: number): string { return this.driver.getTileId(this.map, point, level); }\n getPoiByUid(uid: string, callback: (poi: unknown) => void): void { this.driver.getPoiByUid(this.map, uid, callback); }\n getPanes(): MapPanes { return this.driver.getPanes(this.map) as MapPanes; }\n getInfoWindow(): OverlayHandle | null { return this.driver.getInfoWindow(this.map); }\n\n // ─── Spots / 标注 ───\n addSpots(spots: unknown[], options?: unknown): string { return this.driver.addSpots(this.map, spots, options); }\n getSpots(id: string): unknown[] { return this.driver.getSpots(this.map, id); }\n removeSpots(id: string): void { this.driver.removeSpots(this.map, id); }\n clearSpots(): void { this.driver.clearSpots(this.map); }\n resetSpotStatus(): void { this.driver.resetSpotStatus(this.map); }\n hightlightSpotByUid(uid: string, tilePosStr: string): void { this.driver.hightlightSpotByUid(this.map, uid, tilePosStr); }\n addAreaSpot(areaSpot: number[], options?: unknown): string { return this.driver.addAreaSpot(this.map, areaSpot, options); }\n getAreaSpot(id: string): number[] { return this.driver.getAreaSpot(this.map, id); }\n removeAreaSpot(id: string): void { this.driver.removeAreaSpot(this.map, id); }\n clearAreaSpots(): void { this.driver.clearAreaSpots(this.map); }\n clearLabels(): void { this.driver.clearLabels(this.map); }\n addMapLabels(labels: unknown[]): string[] { return this.driver.addMapLabels(this.map, labels); }\n removeMapLabels(labelUids: string[]): void { this.driver.removeMapLabels(this.map, labelUids); }\n getIconByClickPosition(clickPosition: Pixel): unknown | null { return this.driver.getIconByClickPosition(this.map, clickPosition); }\n setBounds(bounds: Bounds): void { this.driver.setBounds(this.map, bounds); }\n\n // ─── 视野控制 ───\n centerAndZoom(center: Point | string, zoom?: number, options?: unknown): void { this.driver.centerAndZoom(this.map, center, zoom, options); }\n panTo(center: Point, options?: unknown): void { this.driver.panTo(this.map, center, options); }\n panBy(x: number, y: number, options?: unknown): void { this.driver.panBy(this.map, x, y, options); }\n flyTo(center: Point, zoom: number, options?: unknown): void { this.driver.flyTo(this.map, center, zoom, options); }\n reset(): void { this.driver.reset(this.map); }\n setCenter(center: Point | string, options?: unknown): void { this.driver.setCenter(this.map, center, options); }\n getCenter(): Point { return this.driver.getCenter(this.map); }\n setViewport(view: Point[] | Bounds, viewportOptions?: unknown): void { this.driver.setViewport(this.map, view, viewportOptions); }\n getViewport(view: Point[] | Bounds, viewportOptions?: unknown): Viewport { return this.driver.getViewport(this.map, view, viewportOptions) as Viewport; }\n setZoom(zoom: number, options?: unknown): void { this.driver.setZoom(this.map, zoom, options); }\n getZoom(): number { return this.driver.getZoom(this.map); }\n zoomIn(zoomCenter?: Point): void { this.driver.zoomIn(this.map, zoomCenter); }\n zoomOut(zoomCenter?: Point): void { this.driver.zoomOut(this.map, zoomCenter); }\n getBounds(): Bounds { return this.driver.getBounds(this.map); }\n restrictBounds(bounds: Bounds | null): void { this.driver.restrictBounds(this.map, bounds); }\n\n // ─── 地图类型 ───\n setMapType(mapTypeId: string | number): void { this.driver.setMapType(this.map, mapTypeId); }\n getMapType(): string { return this.driver.getMapType(this.map); }\n\n // ─── 控件 / 右键菜单 ───\n addControl(control: ControlHandle): void { this.driver.addControl(this.map, control); }\n removeControl(control: ControlHandle): void { this.driver.removeControl(this.map, control); }\n addContextMenu(menu: OverlayHandle): void { this.driver.addContextMenu(this.map, menu); }\n removeContextMenu(menu: OverlayHandle): void { this.driver.removeContextMenu(this.map, menu); }\n\n // ─── 覆盖物 ───\n addOverlay(overlay: OverlayHandle): void { this.driver.addOverlay(this.map, overlay); }\n removeOverlay(overlay: OverlayHandle): void { this.driver.removeOverlay(this.map, overlay); }\n clearOverlays(): void { this.driver.clearOverlays(this.map); }\n getOverlays(): OverlayHandle[] { return this.driver.getOverlays(this.map); }\n\n // ─── 图层 ───\n addLayer(layer: LayerHandle): void { this.driver.addLayer(this.map, layer); }\n removeLayer(layer: LayerHandle): void { this.driver.removeLayer(this.map, layer); }\n addTileLayer(layer: LayerHandle): void { this.driver.addTileLayer(this.map, layer); }\n removeTileLayer(layer: LayerHandle): void { this.driver.removeTileLayer(this.map, layer); }\n getTileLayer(mapType: string): LayerHandle | null { return this.driver.getTileLayer(this.map, mapType); }\n addGeoJSONLayer(layer: LayerHandle): void { this.driver.addGeoJSONLayer(this.map, layer); }\n removeGeoJSONLayer(layer: LayerHandle): void { this.driver.removeGeoJSONLayer(this.map, layer); }\n addDistrictLayer(layer: LayerHandle): void { this.driver.addDistrictLayer(this.map, layer); }\n removeDistrictLayer(layer: LayerHandle): void { this.driver.removeDistrictLayer(this.map, layer); }\n addNormalLayer(layer: LayerHandle): void { this.driver.addNormalLayer(this.map, layer); }\n removeNormalLayer(layer: LayerHandle): void { this.driver.removeNormalLayer(this.map, layer); }\n setTrafficOn(): void { this.driver.setTrafficOn(this.map); }\n setTrafficOff(): void { this.driver.setTrafficOff(this.map); }\n showOverlayContainer(): void { this.driver.showOverlayContainer(this.map); }\n hideOverlayContainer(): void { this.driver.hideOverlayContainer(this.map); }\n\n // ─── 信息窗口 ───\n openInfoWindow(iw: OverlayHandle, point?: Point): void { this.driver.openInfoWindow(this.map, iw, point); }\n closeInfoWindow(): void { this.driver.closeInfoWindow(this.map); }\n\n // ─── 样式 / 主题 ───\n setMapStyle(config: MapStyleConfig): void { this.driver.setMapStyle(this.map, config); }\n setMapStyleV2(options: MapStyleV2Options): void { this.driver.setMapStyleV2(this.map, options); }\n setTheme(theme: string, customVars?: Record<string, string>): void { this.driver.setTheme(this.map, theme, customVars); }\n setCopyrightOffset(logo: unknown, cpy: unknown): void { this.driver.setCopyrightOffset(this.map, logo, cpy); }\n setDefaultCursor(cursor: string): void { this.driver.setDefaultCursor(this.map, cursor); }\n getDefaultCursor(): string { return this.driver.getDefaultCursor(this.map); }\n setDraggingCursor(cursor: string): void { this.driver.setDraggingCursor(this.map, cursor); }\n getDraggingCursor(): string { return this.driver.getDraggingCursor(this.map); }\n setOverlayMoveCursor(cursor: string): void { this.driver.setOverlayMoveCursor(this.map, cursor); }\n\n // ─── 视角动画 ───\n startViewAnimation(viewAnimation: ViewAnimation): number { return this.driver.startViewAnimation(this.map, viewAnimation); }\n pauseViewAnimation(viewAnimation?: ViewAnimation): void { this.driver.pauseViewAnimation(this.map, viewAnimation); }\n continueViewAnimation(viewAnimation?: ViewAnimation): void { this.driver.continueViewAnimation(this.map, viewAnimation); }\n cancelViewAnimation(viewAnimation?: ViewAnimation): void { this.driver.cancelViewAnimation(this.map, viewAnimation); }\n\n // ─── 截图 ───\n getScreenshot(): string { return this.driver.getScreenshot(this.map); }\n\n // ─── 地球模式 ───\n isSupportEarth(): boolean { return this.driver.isSupportEarth(this.map); }\n getEarth(): unknown { return this.driver.getEarth(this.map); }\n showEarthBoundary(): void { this.driver.showEarthBoundary(this.map); }\n hideEarthBoundary(): void { this.driver.hideEarthBoundary(this.map); }\n setEarthMaxZoom(zoom: number): void { this.driver.setEarthMaxZoom(this.map, zoom); }\n setEarthMinZoom(zoom: number): void { this.driver.setEarthMinZoom(this.map, zoom); }\n\n // ─── 室内 ───\n showIndoor(uid: string, floor: number): void { this.driver.showIndoor(this.map, uid, floor); }\n setIndoor(uid: string, floor: number): void { this.driver.setIndoor(this.map, uid, floor); }\n getIndoorInfo(): unknown | null { return this.driver.getIndoorInfo(this.map); }\n initIndoorLayer(opts?: unknown): unknown { return this.driver.initIndoorLayer(this.map, opts); }\n setNormalMapDisplay(display: boolean): void { this.driver.setNormalMapDisplay(this.map, display); }\n getVectorContainer(): unknown { return this.driver.getVectorContainer(this.map); }\n\n // ─── 街景图层 ───\n showStreetLayer(show: boolean): void { this.driver.showStreetLayer(this.map, show); }\n hideStreetLayer(): void { this.driver.hideStreetLayer(this.map); }\n isStreetLayerShow(): boolean { return this.driver.isStreetLayerShow(this.map); }\n showVectorStreetLayer(): void { this.driver.showVectorStreetLayer(this.map); }\n hideVectorStreetLayer(): void { this.driver.hideVectorStreetLayer(this.map); }\n\n // ─── 语言 ───\n getLanguage(): string { return this.driver.getLanguage(this.map); }\n changeLanguage(language: string): void { this.driver.changeLanguage(this.map, language); }\n enablePreferredLanguage(language: string): void { this.driver.enablePreferredLanguage(this.map, language); }\n disablePreferredLanguage(): void { this.driver.disablePreferredLanguage(this.map); }\n\n // ─── 私有 / 焦点遮罩 / 自定义 HTML 图层 ───\n setLock(lock: boolean): void { this.driver.setLock(this.map, lock); }\n setPrivateRegions(regions: unknown[]): void { this.driver.setPrivateRegions(this.map, regions); }\n getPrivateRegions(): unknown[] { return this.driver.getPrivateRegions(this.map); }\n setPrivateStatus(isOn: boolean): void { this.driver.setPrivateStatus(this.map, isOn); }\n getPrivateStatus(): boolean { return this.driver.getPrivateStatus(this.map); }\n setCustomArea(config: unknown): void { this.driver.setCustomArea(this.map, config); }\n addFocusMask(mask: unknown): void { this.driver.addFocusMask(this.map, mask); }\n removeFocusMask(mask: unknown): void { this.driver.removeFocusMask(this.map, mask); }\n clearFocusMasks(): void { this.driver.clearFocusMasks(this.map); }\n addCustomHtmlLayer(layer: unknown): void { this.driver.addCustomHtmlLayer(this.map, layer); }\n removeCustomHtmlLayer(layer: unknown): void { this.driver.removeCustomHtmlLayer(this.map, layer); }\n addParkingSpot(layer: unknown): void { this.driver.addParkingSpot(this.map, layer); }\n removeParkingSpot(parking: unknown): void { this.driver.removeParkingSpot(this.map, parking); }\n\n // ─── 3.0-only ───\n enableMapClick(): void { this.driver.enableMapClick(this.map); }\n disableMapClick(): void { this.driver.disableMapClick(this.map); }\n enable3DBuilding(): void { this.driver.enable3DBuilding(this.map); }\n disable3DBuilding(): void { this.driver.disable3DBuilding(this.map); }\n setPanorama(pano: unknown): void { this.driver.setPanorama(this.map, pano); }\n getPanorama(): unknown { return this.driver.getPanorama(this.map); }\n setCurrentCity(city: string): void { this.driver.setCurrentCity(this.map, city); }\n highResolutionEnabled(): boolean { return this.driver.highResolutionEnabled(this.map); }\n addHotspot(hotspot: OverlayHandle): void { this.driver.addHotspot(this.map, hotspot); }\n removeHotspot(hotspot: OverlayHandle): void { this.driver.removeHotspot(this.map, hotspot); }\n clearHotspots(): void { this.driver.clearHotspots(this.map); }\n\n // ─── 事件 ───\n addEventListener(type: string, handler: (raw: unknown) => void): () => void {\n return this.driver.addEventListener(this.map, type, handler);\n }\n removeEventListener(type: string, handler: (raw: unknown) => void): void {\n this.driver.removeEventListener(this.map, type, handler);\n }\n\n // ─── Map 维护 ───\n destroy(): void { this.driver.destroyMap(this.map); }\n}\n\nexport type MapRef = MapRefImpl;\n","/**\n * Map 容器组件 —— 对应 react-bmap 的 components/Map/Map.tsx。\n *\n * - onMounted 创建地图;等 tilesloaded(GL 首帧)再 provide map,避免 GL 纹理未就绪报错。\n * - 受控 center/zoom/heading/tilt:独立 watch + internalUpdate 抑制回环 + pointEquals。\n * - 命令式句柄通过 expose 暴露(MapRefImpl)。\n */\nimport {\n defineComponent, h, onBeforeUnmount, onMounted, provide, shallowRef, watch, type PropType,\n} from 'vue';\nimport { useBMapContext, MAP_KEY, type MapContextValue } from '../../context';\nimport type { MapHandle, Point, Bounds } from '../../types';\nimport type { DisplayOptions } from '../../types/core';\nimport { MapRefImpl } from './MapRef';\nimport { pointEquals } from '../../utils/pointEquals';\n\nconst EVENT_MAP: Record<string, string> = {\n onClick: 'click', onDblClick: 'dblclick', onRightClick: 'rightclick',\n onMouseMove: 'mousemove', onMouseDown: 'mousedown', onMouseUp: 'mouseup',\n onMouseOver: 'mouseover', onMouseOut: 'mouseout',\n onDragStart: 'dragstart', onDragging: 'dragging', onDragEnd: 'dragend',\n onMoveStart: 'movestart', onMoving: 'moving', onMoveEnd: 'moveend',\n onZoomStart: 'zoomstart', onZooming: 'zooming', onZoomEnd: 'zoomend',\n onResize: 'resize', onTilesLoaded: 'tilesloaded', onMapTypeChange: 'maptypechange',\n onTouchStart: 'touchstart', onTouchMove: 'touchmove', onTouchEnd: 'touchend',\n onLongPress: 'longpress',\n};\n\nconst TOGGLES = [\n 'enableDragging', 'enableInertialDragging', 'enableScrollWheelZoom', 'enableContinuousZoom',\n 'enableResizeOnCenter', 'enableDoubleClickZoom', 'enableKeyboard', 'enablePinchToZoom',\n 'enableRotate', 'enableRotateGestures', 'enableTilt', 'enableTiltGestures',\n 'enableAutoResize', 'enableIconInfoWindow',\n] as const;\n\nexport const Map = defineComponent({\n name: 'Map',\n inheritAttrs: false,\n props: {\n center: { type: Object as PropType<Point>, default: undefined },\n zoom: { type: Number, default: undefined },\n heading: { type: Number, default: undefined },\n tilt: { type: Number, default: undefined },\n defaultCenter: { type: Object as PropType<Point>, default: undefined },\n defaultZoom: { type: Number, default: undefined },\n defaultHeading: { type: Number, default: undefined },\n defaultTilt: { type: Number, default: undefined },\n options: { type: Object as PropType<Record<string, unknown>>, default: undefined },\n displayOptions: { type: Object as PropType<DisplayOptions>, default: undefined },\n mapStyle: { default: undefined },\n mapStyleV2: { default: undefined },\n minZoom: { type: Number, default: undefined },\n maxZoom: { type: Number, default: undefined },\n bounds: { type: Object as PropType<Bounds>, default: undefined },\n mapType: { type: [String, Number], default: undefined },\n defaultCursor: { type: String, default: undefined },\n draggingCursor: { type: String, default: undefined },\n theme: { type: String, default: undefined },\n enablePreferredLanguage: { type: [String, Boolean], default: undefined },\n enableDragging: { type: Boolean, default: undefined },\n enableInertialDragging: { type: Boolean, default: undefined },\n enableScrollWheelZoom: { type: Boolean, default: undefined },\n enableContinuousZoom: { type: Boolean, default: undefined },\n enableResizeOnCenter: { type: Boolean, default: undefined },\n enableDoubleClickZoom: { type: Boolean, default: undefined },\n enableKeyboard: { type: Boolean, default: undefined },\n enablePinchToZoom: { type: Boolean, default: undefined },\n enableRotate: { type: Boolean, default: undefined },\n enableRotateGestures: { type: Boolean, default: undefined },\n enableTilt: { type: Boolean, default: undefined },\n enableTiltGestures: { type: Boolean, default: undefined },\n enableAutoResize: { type: Boolean, default: undefined },\n enableIconInfoWindow: { type: Boolean, default: undefined },\n onReady: { type: Function as PropType<(map: MapHandle) => void>, default: undefined },\n onCenterChange: { type: Function as PropType<(p: Point) => void>, default: undefined },\n onZoomChange: { type: Function as PropType<(z: number) => void>, default: undefined },\n },\n setup(props: any, { slots, attrs, expose }) {\n const bmap = useBMapContext();\n const containerRef = shallowRef<HTMLElement | null>(null);\n const mapCtx = shallowRef<MapContextValue | null>(null);\n provide(MAP_KEY, mapCtx);\n\n let handle: MapHandle | null = null;\n let unsubs: Array<() => void> = [];\n let internalUpdate = false;\n\n const suppress = (fn: () => void) => {\n internalUpdate = true;\n try { fn(); } catch (e) { console.warn('[vue-bmap] map controlled sync failed', e); }\n requestAnimationFrame(() => { internalUpdate = false; });\n };\n\n const createMap = () => {\n const { driver, status } = bmap.value;\n if (status !== 'ready' || !driver || !containerRef.value || handle) return;\n\n const initial: Record<string, unknown> = { ...(props.options ?? {}) };\n Object.keys(initial).forEach((k) => initial[k] === undefined && delete initial[k]);\n const initialStyle = props.mapStyleV2 ?? props.mapStyle;\n if (initialStyle !== undefined) initial.style = initialStyle;\n\n handle = driver.createMap(containerRef.value, initial);\n\n const initCenter = props.defaultCenter ?? props.center;\n const initZoom = props.defaultZoom ?? props.zoom ?? 11;\n if (initCenter) {\n try { driver.centerAndZoom(handle, initCenter, initZoom, { noAnimation: true }); }\n catch (e) { console.warn('[vue-bmap] centerAndZoom failed', e); }\n }\n const initHeading = props.defaultHeading ?? props.heading;\n const initTilt = props.defaultTilt ?? props.tilt;\n if (initHeading != null) { try { driver.setHeading(handle, initHeading, { noAnimation: true }); } catch { /* ignore */ } }\n if (initTilt != null) { try { driver.setTilt(handle, initTilt, { noAnimation: true }); } catch { /* ignore */ } }\n if (props.mapType !== undefined) { try { driver.setMapType(handle, props.mapType); } catch { /* ignore */ } }\n if (props.displayOptions !== undefined) { try { driver.setDisplayOptions(handle, props.displayOptions); } catch { /* ignore */ } }\n\n let mapReady = false;\n const markReady = () => {\n if (mapReady || !handle) return;\n mapReady = true;\n mapCtx.value = { map: handle, driver };\n props.onReady?.(handle);\n };\n unsubs.push(driver.addEventListener(handle, 'tilesloaded', markReady));\n const fallbackId = setTimeout(markReady, 500);\n unsubs.push(() => clearTimeout(fallbackId));\n\n unsubs.push(driver.addEventListener(handle, 'moveend', () => {\n if (internalUpdate || !handle) return;\n props.onCenterChange?.(driver.getCenter(handle));\n }));\n unsubs.push(driver.addEventListener(handle, 'zoomend', () => {\n if (internalUpdate || !handle) return;\n props.onZoomChange?.(driver.getZoom(handle));\n }));\n\n // 用户事件回调(onClick 等)\n for (const [prop, evt] of Object.entries(EVENT_MAP)) {\n const fn = (props as any)[prop] ?? (attrs as any)[prop];\n if (typeof fn !== 'function') continue;\n unsubs.push(driver.addEventListener(handle, evt, (e: unknown) => {\n const live = (props as any)[prop] ?? (attrs as any)[prop];\n if (typeof live === 'function') live(e);\n }));\n }\n };\n\n const destroyMap = () => {\n unsubs.forEach((u) => u()); unsubs = [];\n const { driver } = bmap.value;\n if (handle && driver) { try { driver.destroyMap(handle); } catch { /* ignore */ } }\n handle = null;\n mapCtx.value = null;\n };\n\n onMounted(() => {\n createMap();\n watch(() => bmap.value.status, () => createMap());\n });\n onBeforeUnmount(destroyMap);\n\n const driverOf = () => bmap.value.driver;\n\n // 受控 center\n watch(() => [props.center?.lng, props.center?.lat], () => {\n const d = driverOf();\n if (!handle || !d || !props.center) return;\n if (!pointEquals(d.getCenter(handle), props.center)) suppress(() => d.setCenter(handle!, props.center));\n });\n // 受控 zoom\n watch(() => props.zoom, () => {\n const d = driverOf();\n if (!handle || !d || props.zoom == null) return;\n let cur: number | undefined;\n try { cur = d.getZoom(handle); } catch { /* ignore */ }\n if (cur !== undefined && cur !== props.zoom) suppress(() => d.setZoom(handle!, props.zoom));\n });\n // 受控 heading / tilt(v3 不支持时 driver 内部处理)\n watch(() => props.heading, () => {\n const d = driverOf();\n if (!handle || !d || props.heading == null) return;\n let cur: number | undefined;\n try { cur = d.getHeading(handle); } catch { return; }\n if (typeof cur === 'number' && !Number.isNaN(cur) && Math.abs(cur - props.heading) > 0.01) suppress(() => d.setHeading(handle!, props.heading));\n });\n watch(() => props.tilt, () => {\n const d = driverOf();\n if (!handle || !d || props.tilt == null) return;\n let cur: number | undefined;\n try { cur = d.getTilt(handle); } catch { return; }\n if (typeof cur === 'number' && !Number.isNaN(cur) && Math.abs(cur - props.tilt) > 0.01) suppress(() => d.setTilt(handle!, props.tilt));\n });\n\n // 交互开关\n for (const key of TOGGLES) {\n watch(() => props[key], (v) => {\n const d = driverOf();\n if (!handle || !d || v === undefined) return;\n const cap = key.slice(6); // 去掉 \"enable\"\n try { (d as any)[`${v ? 'enable' : 'disable'}${cap}`](handle); } catch { /* ignore */ }\n });\n }\n\n // 缩放范围 / 边界 / 类型 / 光标 / 主题 / 显示 / 样式\n watch(() => props.minZoom, (v) => { const d = driverOf(); if (handle && d && v !== undefined) try { d.setMinZoom(handle, v); } catch { /* ignore */ } });\n watch(() => props.maxZoom, (v) => { const d = driverOf(); if (handle && d && v !== undefined) try { d.setMaxZoom(handle, v); } catch { /* ignore */ } });\n watch(() => props.mapType, (v) => { const d = driverOf(); if (handle && d && v !== undefined) try { d.setMapType(handle, v); } catch { /* ignore */ } });\n watch(() => props.defaultCursor, (v) => { const d = driverOf(); if (handle && d && v !== undefined) try { d.setDefaultCursor(handle, v); } catch { /* ignore */ } });\n watch(() => props.draggingCursor, (v) => { const d = driverOf(); if (handle && d && v !== undefined) try { d.setDraggingCursor(handle, v); } catch { /* ignore */ } });\n watch(() => props.theme, (v) => { const d = driverOf(); if (handle && d && v !== undefined) try { d.setTheme(handle, v); } catch { /* ignore */ } });\n watch(() => props.displayOptions, (v) => { const d = driverOf(); if (handle && d && v !== undefined) try { d.setDisplayOptions(handle, v); } catch { /* ignore */ } }, { deep: true });\n watch(() => props.mapStyle, (v) => { const d = driverOf(); if (handle && d && v !== undefined) d.setMapStyle(handle, v); });\n watch(() => props.mapStyleV2, (v) => { const d = driverOf(); if (handle && d && v !== undefined) d.setMapStyleV2(handle, v); });\n\n expose({\n /** 命令式句柄:panTo/flyTo/setZoom/getBounds/pointToPixel/getScreenshot 等全量方法 */\n getMapRef: () => { const d = driverOf(); return handle && d ? new MapRefImpl(handle, d) : null; },\n });\n\n // 事件回调(onClick 等)已在 createMap 中绑定到地图实例,不能再作为原生监听器透传给容器 div\n const containerAttrs = () => {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(attrs)) {\n if (k in EVENT_MAP) continue;\n out[k] = v;\n }\n return out;\n };\n\n return () => h('div', { ...containerAttrs(), ref: containerRef }, mapCtx.value ? (slots.default ? slots.default() : []) : []);\n },\n});\n\nexport type MapProps = InstanceType<typeof Map>['$props'];\n\n\n\n","/**\n * 把对象/数组序列化为稳定字符串,作为 effect 依赖用。\n * 处理 path 等每次 render 新引用的对象,避免覆盖物/服务无意义重建。\n * 遇到 DOM 元素 / 函数 / handle 时返回类型标记,不递归进去。\n *\n * undefined 与 null 输出不同标记:组件里「没传这个 prop」和「显式传 null」\n * 会走不同的 SDK 代码路径,依赖比较必须能区分,否则两者互换时 effect 不重跑。\n * 真正的循环引用由 seen 集合兜底(普通对象也可能自引用,光挡 DOM 不够)。\n */\nexport function stableStringify(value: unknown): string {\n return serialize(value, new WeakSet());\n}\n\n// 给 SDK handle 分配稳定且可区分的 id:\n// stableStringify 不递归进 handle(内部是 SDK 实例,可能自引用/巨大),但不同 handle 实例\n// 必须序列化成不同字符串,否则句柄型 prop(Marker icon / IconSequence symbol / Polyline node 等)\n// 换成新 handle 时依赖比较判定“未变”,watch 不触发、更新丢失。\n// 以 handle 内部 raw(底层 SDK 对象)为 key:包裹同一 raw 的新 wrapper 视为相同,raw 变了才算变。\nconst handleIds = new WeakMap<object, number>();\nlet handleSeq = 0;\nfunction handleTag(value: object): string {\n const raw = (value as { raw?: unknown }).raw;\n const key = (raw && typeof raw === 'object') ? (raw as object) : value;\n let id = handleIds.get(key);\n if (id === undefined) {\n id = ++handleSeq;\n handleIds.set(key, id);\n }\n return `<handle#${id}>`;\n}\n\nfunction serialize(value: unknown, seen: WeakSet<object>): string {\n if (value === undefined) return 'undefined';\n if (value === null) return 'null';\n if (typeof value === 'function') return 'fn';\n if (typeof value !== 'object') return String(value);\n // DOM 元素 / 节点 — 不递归\n if (typeof HTMLElement !== 'undefined' && value instanceof HTMLElement) return '<HTMLElement>';\n if (typeof Node !== 'undefined' && value instanceof Node) return '<Node>';\n // 带品牌标记的 handle — 不递归,但按内部 raw 生成可区分的稳定 id\n if ('__brand' in (value as any)) return handleTag(value as object);\n if (seen.has(value as object)) return '<circular>';\n seen.add(value as object);\n // 只在「当前递归路径」上标记:同一个对象作为兄弟节点出现两次是合法的\n // (如 [point, point]),出栈后必须移除,否则会被误判成循环。\n let out: string;\n if (Array.isArray(value)) {\n out = `[${value.map(v => serialize(v, seen)).join(',')}]`;\n } else {\n const keys = Object.keys(value as Record<string, unknown>).sort();\n out = `{${keys.map(k => `${k}:${serialize((value as Record<string, unknown>)[k], seen)}`).join(',')}}`;\n }\n seen.delete(value as object);\n return out;\n}\n","/**\n * 通用组件工厂 —— 消除 Overlay / Control / Layer 组件的重复代码。\n * 对应 react-bmap 的 utils/createComponent.tsx,改用 Vue 3 Composition API 实现。\n *\n * 每个具体组件只需声明:工厂方法、position/path prop、options prop、ctorOnly prop、events。\n * 工厂内部统一处理:mounted→create→add、unmounted→remove、prop change→setter。\n *\n * 事件:以 Vue 惯用的 on* 回调 prop 暴露(`@click` 会编译成 onClick 传入),\n * 回调签名与 react-bmap 保持一致:(point, raw)。\n */\nimport {\n computed, defineComponent, inject, onUnmounted, provide,\n shallowRef, watch, type PropType,\n} from 'vue';\nimport { MAP_KEY, OVERLAY_TARGET_KEY, type OverlayTargetStore, type OverlayTargetType } from '../context';\nimport { stableStringify } from './stableStringify';\nimport { devWarn } from './debugWarn';\nimport type { BMapDriver } from '../drivers/types';\nimport type { ControlHandle, LayerHandle, OverlayHandle, Point } from '../types';\n\n// ─────────────── 配置类型(与 react-bmap 对齐,便于直接复制各组件配置) ───────────────\n\nexport interface OverlayComponentConfig<P> {\n factory: (driver: BMapDriver, props: P) => OverlayHandle | null;\n positionProp?: keyof P & string;\n pathProp?: keyof P & string;\n optionProps?: Array<keyof P & string>;\n ctorOnlyProps?: Array<keyof P & string>;\n supportsChildren?: boolean;\n childTargetType?: OverlayTargetType;\n attachToMarkerAsLabel?: boolean;\n events?: Array<{ sdk: string; prop: keyof P & string }>;\n displayName?: string;\n skipMount?: boolean;\n}\n\nexport interface ControlComponentConfig<P> {\n factory: (driver: BMapDriver, props: P) => ControlHandle | null;\n optionProps?: Array<keyof P & string>;\n ctorOnlyProps?: Array<keyof P & string>;\n events?: Array<{ sdk: string; prop: keyof P & string }>;\n displayName?: string;\n}\n\nexport interface LayerComponentConfig<P> {\n factory: (driver: BMapDriver, props: P) => LayerHandle | null;\n addMethod?: keyof BMapDriver;\n removeMethod?: keyof BMapDriver;\n events?: ReadonlyArray<{ sdk: string; prop: keyof P & string }>;\n displayName?: string;\n}\n\n// ─────────────── 工具 ───────────────\n\n/** 由配置推导 Vue props 声明:几何/选项/ctor prop 接受任意值,event prop 为 Function。 */\nfunction buildProps(\n keys: string[],\n events: Array<{ sdk: string; prop: string }> = [],\n extra: string[] = [],\n): Record<string, unknown> {\n const props: Record<string, unknown> = {};\n for (const k of [...keys, ...extra]) props[k] = { default: undefined };\n for (const e of events) props[e.prop] = { type: Function as PropType<(...a: unknown[]) => void>, default: undefined };\n return props;\n}\n\n// ─────────────── Overlay 组件工厂 ───────────────\n\nexport function createOverlayComponent<P extends Record<string, any>>(config: OverlayComponentConfig<P>) {\n const factoryKeys = [\n ...(config.positionProp ? [config.positionProp] : []),\n ...(config.pathProp ? [config.pathProp] : []),\n ...(config.optionProps ?? []),\n ...(config.ctorOnlyProps ?? []),\n ] as string[];\n\n return defineComponent({\n name: config.displayName || 'OverlayComponent',\n props: buildProps(factoryKeys, config.events as any, ['visible']) as any,\n setup(props: any, { slots }) {\n const mapCtx = inject(MAP_KEY, null);\n const target = inject(OVERLAY_TARGET_KEY, null);\n if (!mapCtx) throw new Error(`[vue-bmap] <${config.displayName}> 必须用在 <Map> 内部`);\n\n let handle: OverlayHandle | null = null;\n const store = shallowRef<OverlayHandle | null>(null);\n let unsubs: Array<() => void> = [];\n let optionBaseline: Record<string, unknown> = {};\n let appliedOptKeys: string[] = [];\n\n const collectFactoryProps = (): Record<string, unknown> => {\n const out: Record<string, unknown> = {};\n for (const k of factoryKeys) {\n const v = props[k];\n if (v !== undefined && v !== null) out[k] = v;\n }\n return out;\n };\n\n const bindEvents = () => {\n const ctx = mapCtx.value;\n if (!handle || !ctx || !config.events) return;\n for (const { sdk, prop } of config.events) {\n unsubs.push(ctx.driver.addEventListener(handle, sdk, (raw: any) => {\n const fn = props[prop];\n if (typeof fn === 'function') fn(raw?.point ?? raw?.latlng ?? raw?.latLng ?? raw, raw);\n }));\n }\n };\n const unbindEvents = () => { unsubs.forEach((u) => u()); unsubs = []; };\n\n const create = () => {\n const ctx = mapCtx.value;\n if (!ctx || !ctx.map) return;\n const { map, driver } = ctx;\n const factoryProps = collectFactoryProps();\n const h = config.factory(driver, factoryProps as P);\n if (!h) return;\n handle = h;\n store.value = h;\n\n const attachMarker = !!config.attachToMarkerAsLabel && target?.type === 'marker';\n if (!config.skipMount) {\n if ((h as any).type === 'hotspot') {\n driver.addHotspot?.(map, h);\n } else if (attachMarker) {\n const mk = target!.handle.value as OverlayHandle | null;\n if (mk) driver.setMarkerLabel(mk, h);\n } else if (target?.addOverlay) {\n target.addOverlay(h);\n } else {\n driver.addOverlay(map, h);\n }\n }\n\n // 初始 options + baseline 快照(供 prop 变回 undefined 时还原)\n if (config.optionProps) {\n const defaultableKeys = config.optionProps.filter((k) => factoryProps[k as string] === undefined);\n optionBaseline = defaultableKeys.length > 0\n ? driver.snapshotOverlayOptions(h, defaultableKeys as string[])\n : {};\n const initOpts: Record<string, unknown> = {};\n for (const k of config.optionProps) {\n const v = factoryProps[k as string];\n if (v !== undefined && v !== null) initOpts[k as string] = v;\n }\n appliedOptKeys = Object.keys(initOpts);\n if (appliedOptKeys.length > 0) driver.setOverlayOptions(h, initOpts);\n }\n if (props.visible === false) driver.hideOverlay(h);\n bindEvents();\n };\n\n const destroy = () => {\n if (!handle) return;\n const ctx = mapCtx.value;\n unbindEvents();\n if (!config.skipMount && ctx?.map) {\n const attachMarker = !!config.attachToMarkerAsLabel && target?.type === 'marker';\n try {\n if ((handle as any).type === 'hotspot') ctx.driver.removeHotspot?.(ctx.map, handle);\n else if (attachMarker) {\n const mk = target!.handle.value as OverlayHandle | null;\n if (mk) ctx.driver.removeMarkerLabel(mk, handle);\n } else if (target?.removeOverlay) target.removeOverlay(handle);\n else ctx.driver.removeOverlay(ctx.map, handle);\n } catch { /* ignore */ }\n }\n handle = null;\n store.value = null;\n };\n\n const recreate = () => { destroy(); create(); };\n\n // 就绪判定:map 可用;作为 Marker 子 Label 时还需等 marker handle 就绪\n const ready = computed(() => {\n const map = mapCtx.value?.map;\n if (!map) return false;\n if (config.attachToMarkerAsLabel && target?.type === 'marker') return !!target.handle.value;\n return true;\n });\n watch(ready, (r) => {\n if (r && !handle) create();\n else if (!r && handle) destroy();\n }, { immediate: true });\n\n // position 更新\n if (config.positionProp) {\n const key = config.positionProp as string;\n watch(() => stableStringify(props[key]), () => {\n const ctx = mapCtx.value;\n if (handle && ctx?.driver && props[key] != null) ctx.driver.setOverlayPosition(handle, props[key] as Point);\n });\n }\n // path 更新\n if (config.pathProp) {\n const key = config.pathProp as string;\n watch(() => stableStringify(props[key]), () => {\n const ctx = mapCtx.value;\n if (handle && ctx?.driver && props[key] != null) ctx.driver.setOverlayPath(handle, props[key] as Point[]);\n });\n }\n // options 更新(含 prop 变回 undefined 时的还原)\n if (config.optionProps) {\n const optKeys = config.optionProps as string[];\n const snapshot = () => optKeys.reduce<Record<string, unknown>>((acc, k) => {\n if (props[k] !== undefined) acc[k] = props[k];\n return acc;\n }, {});\n watch(() => stableStringify(snapshot()), () => {\n const ctx = mapCtx.value;\n if (!handle || !ctx?.driver) return;\n const snap = snapshot();\n const nextKeys = Object.keys(snap);\n const removed = appliedOptKeys.filter((k) => !nextKeys.includes(k));\n if (removed.length > 0) {\n const restorable: Record<string, unknown> = {};\n const unrestorable: string[] = [];\n for (const k of removed) {\n if (k in optionBaseline) restorable[k] = optionBaseline[k];\n else unrestorable.push(k);\n }\n if (Object.keys(restorable).length > 0) unrestorable.push(...ctx.driver.restoreOverlayOptions(handle, restorable));\n if (unrestorable.length > 0) devWarn(`${config.displayName ?? 'Overlay'} 的 ${unrestorable.join(' / ')} 由有值变 undefined,框架拿不到 SDK 默认值可还原`);\n }\n appliedOptKeys = nextKeys;\n if (nextKeys.length > 0) ctx.driver.setOverlayOptions(handle, snap);\n });\n }\n // ctorOnlyProps 变化 → 重建\n if (config.ctorOnlyProps) {\n const ctorKeys = config.ctorOnlyProps as string[];\n watch(() => stableStringify(ctorKeys.map((k) => props[k])), () => { if (handle) recreate(); });\n }\n // 可见性\n watch(() => props.visible, (v) => {\n const ctx = mapCtx.value;\n if (!handle || !ctx?.driver) return;\n if (v === false) ctx.driver.hideOverlay(handle);\n else ctx.driver.showOverlay(handle);\n });\n\n onUnmounted(destroy);\n\n if (config.supportsChildren) {\n const childStore: OverlayTargetStore = {\n type: config.childTargetType ?? 'overlay',\n handle: store as any,\n };\n provide(OVERLAY_TARGET_KEY, childStore);\n return () => (slots.default ? slots.default() : null);\n }\n return () => null;\n },\n });\n}\n\n// ─────────────── Control 组件工厂 ───────────────\n\nexport function createControlComponent<P extends Record<string, any>>(config: ControlComponentConfig<P>) {\n const factoryKeys = [...(config.optionProps ?? []), ...(config.ctorOnlyProps ?? [])] as string[];\n\n return defineComponent({\n name: config.displayName || 'ControlComponent',\n props: buildProps(factoryKeys, config.events as any, ['visible']) as any,\n setup(props: any, { slots }) {\n const mapCtx = inject(MAP_KEY, null);\n if (!mapCtx) throw new Error(`[vue-bmap] <${config.displayName}> 必须用在 <Map> 内部`);\n let handle: ControlHandle | null = null;\n let unsubs: Array<() => void> = [];\n\n const collect = (): Record<string, unknown> => {\n const out: Record<string, unknown> = {};\n for (const k of factoryKeys) { const v = props[k]; if (v !== undefined && v !== null) out[k] = v; }\n return out;\n };\n const create = () => {\n const ctx = mapCtx.value;\n if (!ctx || !ctx.map) return;\n const h = config.factory(ctx.driver, collect() as P);\n if (!h) return;\n handle = h;\n ctx.driver.addControl(ctx.map, h);\n if (props.visible === false) ctx.driver.hideControl(h);\n if (config.events) {\n for (const { sdk, prop } of config.events) {\n unsubs.push(ctx.driver.addEventListener(h, sdk, (raw: any) => {\n const fn = props[prop];\n if (typeof fn === 'function') fn(raw);\n }));\n }\n }\n };\n const destroy = () => {\n unsubs.forEach((u) => u()); unsubs = [];\n const ctx = mapCtx.value;\n if (handle && ctx?.map) { try { ctx.driver.removeControl(ctx.map, handle); } catch { /* ignore */ } }\n handle = null;\n };\n const recreate = () => { destroy(); create(); };\n\n watch(() => mapCtx.value?.map, (m) => { if (m && !handle) create(); else if (!m && handle) destroy(); }, { immediate: true });\n\n if (config.optionProps) {\n const optKeys = config.optionProps as string[];\n // option prop 在 null/有值间切换会重建(SDK 无「取消设置」语义)\n watch(() => stableStringify(optKeys.map((k) => props[k] == null)), () => { if (handle) recreate(); });\n watch(() => stableStringify(optKeys.reduce<Record<string, unknown>>((a, k) => { if (props[k] !== undefined) a[k] = props[k]; return a; }, {})), () => {\n const ctx = mapCtx.value;\n if (!handle || !ctx?.driver) return;\n // 构造函数已设置初始 options;此 watch 非 immediate,只在 prop 真正变化时触发,\n // 因此每次触发都应用(不能像 react 那样跳过首次——Vue 挂载时根本不会触发)。\n const snap = optKeys.reduce<Record<string, unknown>>((a, k) => { if (props[k] !== undefined) a[k] = props[k]; return a; }, {});\n if (Object.keys(snap).length > 0) ctx.driver.setControlOptions(handle, snap);\n });\n }\n if (config.ctorOnlyProps) {\n const ctorKeys = config.ctorOnlyProps as string[];\n watch(() => stableStringify(ctorKeys.map((k) => props[k])), () => { if (handle) recreate(); });\n }\n watch(() => props.visible, (v) => {\n const ctx = mapCtx.value;\n if (!handle || !ctx?.driver) return;\n if (v === false) ctx.driver.hideControl(handle);\n else ctx.driver.showControl(handle);\n });\n onUnmounted(destroy);\n return () => (slots.default ? slots.default() : null);\n },\n });\n}\n\n// ─────────────── Layer 组件工厂 ───────────────\n\nexport function createLayerComponent<P extends Record<string, any>>(config: LayerComponentConfig<P>) {\n return defineComponent({\n name: config.displayName || 'LayerComponent',\n // 图层没有 setter 抽象:所有 prop 都参与 layerKey,变化即重建。用 inheritAttrs:false + attrs 收集。\n inheritAttrs: false,\n setup(_props, { attrs, slots }) {\n const mapCtx = inject(MAP_KEY, null);\n if (!mapCtx) throw new Error(`[vue-bmap] <${config.displayName}> 必须用在 <Map> 内部`);\n let handle: LayerHandle | null = null;\n let unsubs: Array<() => void> = [];\n const add = (config.addMethod ?? 'addLayer') as string;\n const remove = (config.removeMethod ?? 'removeLayer') as string;\n\n const collect = (): Record<string, unknown> => {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(attrs)) {\n if (k.startsWith('on')) continue; // 事件监听交由 events 处理\n if (v !== undefined && v !== null) out[k] = v;\n }\n return out;\n };\n const create = () => {\n const ctx = mapCtx.value;\n if (!ctx || !ctx.map) return;\n const h = config.factory(ctx.driver, collect() as P);\n if (!h) return;\n handle = h;\n (ctx.driver as any)[add](ctx.map, h);\n if (config.events && h.raw) {\n for (const ev of config.events) {\n unsubs.push(ctx.driver.addEventListener(h, ev.sdk, (e: any) => {\n const fn = (attrs as any)[`on${ev.prop.charAt(0).toUpperCase()}${ev.prop.slice(1)}`] ?? (attrs as any)[ev.prop];\n if (typeof fn === 'function') fn(e);\n }));\n }\n }\n };\n const destroy = () => {\n unsubs.forEach((u) => u()); unsubs = [];\n const ctx = mapCtx.value;\n if (handle && ctx?.map) { try { (ctx.driver as any)[remove](ctx.map, handle); } catch { /* ignore */ } }\n handle = null;\n };\n\n const layerKey = computed(() => stableStringify(collect()));\n watch([() => mapCtx.value?.map, layerKey], () => { destroy(); create(); }, { immediate: true });\n onUnmounted(destroy);\n return () => (slots.default ? slots.default() : null);\n },\n });\n}\n\n\n\n\n","/**\n * InfoWindow —— 信息窗口组件。对应 react-bmap 的 Overlay/InfoWindow.tsx。\n *\n * 不走 addOverlay/removeOverlay,而是通过 openInfoWindow/closeInfoWindow 控制。\n * - 嵌套在 <Marker> 内:自动挂到 marker(marker.openInfoWindow)。\n * - 独立用(挂到 map):需传 position。\n */\nimport { defineComponent, inject, onUnmounted, watch, type PropType } from 'vue';\nimport { MAP_KEY, OVERLAY_TARGET_KEY } from '../../context';\nimport { stableStringify } from '../../utils/stableStringify';\nimport { getSDK } from '../../utils/sdk';\nimport type { OverlayHandle, Point } from '../../types';\n\nexport const InfoWindow = defineComponent({\n name: 'InfoWindow',\n props: {\n content: { type: [String, Object] as PropType<string | HTMLElement>, required: true },\n open: { type: Boolean, default: true },\n position: { type: Object as PropType<Point>, default: undefined },\n width: { type: Number, default: undefined },\n height: { type: Number, default: undefined },\n maxWidth: { type: Number, default: undefined },\n offset: { default: undefined },\n title: { type: String, default: undefined },\n enableAutoPan: { type: Boolean, default: undefined },\n enableCloseOnClick: { type: Boolean, default: undefined },\n enableMessage: { type: Boolean, default: undefined },\n message: { type: String, default: undefined },\n maxContent: { type: String, default: undefined },\n enableMaximize: { type: Boolean, default: undefined },\n enableSearchTool: { type: Boolean, default: undefined },\n onOpen: { type: Function as PropType<(raw: unknown) => void>, default: undefined },\n onClose: { type: Function as PropType<(raw: unknown) => void>, default: undefined },\n onClickClose: { type: Function as PropType<(raw: unknown) => void>, default: undefined },\n onMaximize: { type: Function as PropType<(raw: unknown) => void>, default: undefined },\n onRestore: { type: Function as PropType<(raw: unknown) => void>, default: undefined },\n onResize: { type: Function as PropType<(raw: unknown) => void>, default: undefined },\n },\n setup(props) {\n const mapCtx = inject(MAP_KEY, null);\n const target = inject(OVERLAY_TARGET_KEY, null);\n if (!mapCtx) throw new Error('[vue-bmap] <InfoWindow> 必须用在 <Map> 内部');\n\n let iw: OverlayHandle | null = null;\n let handlers: { event: string; fn: (e: unknown) => void }[] = [];\n\n const openTargetRaw = () => {\n const t = target?.handle.value as any;\n const tgt = t ?? mapCtx.value?.map;\n return tgt?.raw ?? tgt;\n };\n\n const create = () => {\n const ctx = mapCtx.value;\n if (!ctx?.driver) return;\n const raw = {\n width: props.width, height: props.height, maxWidth: props.maxWidth, offset: props.offset,\n title: props.title, enableAutoPan: props.enableAutoPan, enableCloseOnClick: props.enableCloseOnClick,\n enableMessage: props.enableMessage, message: props.message, maxContent: props.maxContent,\n enableMaximize: props.enableMaximize, enableSearchTool: props.enableSearchTool,\n };\n const opts: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(raw)) if (v !== undefined && v !== null) opts[k] = v;\n const h = ctx.driver.createInfoWindow(props.content, opts);\n if (!h) return;\n iw = h;\n const rawIW = (h as any).raw;\n const map: Array<[string, keyof typeof props]> = [\n ['open', 'onOpen'], ['close', 'onClose'], ['clickclose', 'onClickClose'],\n ['maximize', 'onMaximize'], ['restore', 'onRestore'], ['resize', 'onResize'],\n ];\n for (const [event, prop] of map) {\n const fn = (e: unknown) => { const cb = (props as any)[prop]; if (typeof cb === 'function') cb(e); };\n rawIW?.addEventListener?.(event, fn);\n handlers.push({ event, fn });\n }\n applyOpen();\n };\n\n const destroy = () => {\n const rawIW = (iw as any)?.raw;\n for (const { event, fn } of handlers) rawIW?.removeEventListener?.(event, fn);\n handlers = [];\n const tgt = openTargetRaw();\n if (tgt) { try { tgt.closeInfoWindow?.(); } catch { /* ignore */ } }\n iw = null;\n };\n\n const applyOpen = () => {\n const ctx = mapCtx.value;\n if (!ctx?.map || !iw) return;\n const rawTarget = openTargetRaw();\n const rawIW = (iw as any).raw;\n if (props.open) {\n try {\n if (props.position) {\n const SDK = getSDK();\n rawTarget?.openInfoWindow?.(rawIW, new SDK.Point(props.position.lng, props.position.lat));\n } else if (typeof rawTarget?.openInfoWindow === 'function') {\n rawTarget.openInfoWindow(rawIW);\n }\n } catch (e) { console.warn('[vue-bmap] InfoWindow open failed', e); }\n } else {\n try { rawTarget?.closeInfoWindow?.(); } catch { /* ignore */ } }\n };\n\n const ctorKey = () => stableStringify({\n maxWidth: props.maxWidth, offset: props.offset, enableCloseOnClick: props.enableCloseOnClick,\n enableMessage: props.enableMessage, message: props.message, enableSearchTool: props.enableSearchTool,\n });\n\n watch([() => mapCtx.value?.map, () => target?.handle.value, ctorKey], () => { destroy(); create(); }, { immediate: true });\n // setter 类属性\n watch(() => props.content, (v) => { const r = (iw as any)?.raw; if (r && v != null) r.setContent?.(v); });\n watch(() => props.title, (v) => { const r = (iw as any)?.raw; if (r && v != null) r.setTitle?.(v); });\n watch(() => props.width, (v) => { const r = (iw as any)?.raw; if (r && v != null) r.setWidth?.(v); });\n watch(() => props.height, (v) => { const r = (iw as any)?.raw; if (r && v != null) r.setHeight?.(v); });\n watch(() => props.maxContent, (v) => { const r = (iw as any)?.raw; if (r && v != null) r.setMaxContent?.(v); });\n watch([() => props.open, () => props.position?.lng, () => props.position?.lat], applyOpen);\n\n onUnmounted(destroy);\n return () => null;\n },\n});\n","/**\n * 全部 Overlay 组件 —— 使用 createOverlayComponent 工厂批量生成。\n * 配置与 react-bmap 对齐(工厂配置与框架无关)。\n */\nimport { createOverlayComponent } from '../../utils/createComponent';\nexport type {\n MarkerProps, LabelProps, PolylineProps, PolygonProps, CircleProps,\n RectangleProps, BezierCurveProps, PrismProps, GroundOverlayProps,\n GroundPointProps, PointCollectionProps, InfoWindowProps, SymbolProps,\n IconProps, IconSequenceProps, HotspotProps, CustomOverlayProps,\n Marker3DProps, Marker3DOptions, IconSequenceHandle,\n MarkerOptions, LabelOptions, PolylineOptions, PolygonOptions, CircleOptions,\n RectangleOptions, BezierCurveOptions, PrismOptions, GroundOverlayOptions,\n GroundPointOptions, PointCollectionOptions, InfoWindowOptions, SymbolOptions,\n IconOptions, HotspotOptions, CustomOverlayOptions,\n OverlayReactProps, PlainIcon, SymbolIcon,\n} from './types';\nimport type {\n MarkerProps, LabelProps, PolylineProps, PolygonProps, CircleProps,\n RectangleProps, BezierCurveProps, PrismProps, GroundOverlayProps,\n GroundPointProps, PointCollectionProps, SymbolProps,\n IconProps, IconSequenceProps, HotspotProps, Marker3DProps,\n} from './types';\n\nconst OVERLAY_EVENTS = [\n { sdk: 'click', prop: 'onClick' }, { sdk: 'dblclick', prop: 'onDoubleClick' },\n { sdk: 'rightclick', prop: 'onRightClick' }, { sdk: 'rightdblclick', prop: 'onRightDoubleClick' },\n { sdk: 'mousedown', prop: 'onMouseDown' }, { sdk: 'mouseup', prop: 'onMouseUp' },\n { sdk: 'mouseover', prop: 'onMouseOver' }, { sdk: 'mouseout', prop: 'onMouseOut' },\n { sdk: 'mousemove', prop: 'onMouseMove' }, { sdk: 'remove', prop: 'onRemove' },\n { sdk: 'lineupdate', prop: 'onLineUpdate' }, { sdk: 'editstart', prop: 'onEditStart' },\n { sdk: 'editend', prop: 'onEditEnd' },\n { sdk: 'linevertexdragstart', prop: 'onLineVertexDragStart' },\n { sdk: 'linevertexdragging', prop: 'onLineVertexDragging' },\n { sdk: 'linevertexdragend', prop: 'onLineVertexDragEnd' },\n { sdk: 'linevertexdel', prop: 'onLineVertexDel' },\n] as any;\n\nexport const Marker = createOverlayComponent<MarkerProps>({\n displayName: 'Marker',\n factory: (d, p) => d.createMarker(p.position, p),\n positionProp: 'position',\n optionProps: ['offset', 'icon', 'enableMassClear', 'enableDragging', 'rotation', 'title', 'zIndex', 'opacity', 'color', 'rank', 'rotationOrigin'],\n ctorOnlyProps: ['enableClicking', 'raiseOnDrag', 'draggingCursor', 'shadow', 'baseZIndex', 'restrictDraggingArea', 'enableCollisionDetection', 'enableDraggingMap', 'anchor'],\n events: [\n { sdk: 'click', prop: 'onClick' }, { sdk: 'dblclick', prop: 'onDoubleClick' },\n { sdk: 'rightclick', prop: 'onRightClick' }, { sdk: 'dragstart', prop: 'onDragStart' },\n { sdk: 'dragging', prop: 'onDragging' }, { sdk: 'dragend', prop: 'onDragEnd' },\n { sdk: 'mouseover', prop: 'onMouseOver' }, { sdk: 'mouseout', prop: 'onMouseOut' },\n { sdk: 'mousedown', prop: 'onMouseDown' }, { sdk: 'mouseup', prop: 'onMouseUp' },\n { sdk: 'remove', prop: 'onRemove' },\n ],\n supportsChildren: true,\n childTargetType: 'marker',\n});\n\nexport const Label = createOverlayComponent<LabelProps>({\n displayName: 'Label',\n factory: (d, p) => d.createLabel(p.content, p),\n positionProp: 'position',\n optionProps: ['content', 'offset', 'enableMassClear', 'styles', 'opacity', 'title', 'zIndex'],\n ctorOnlyProps: ['enableClicking', 'width', 'anchor'],\n attachToMarkerAsLabel: true,\n events: [\n { sdk: 'click', prop: 'onClick' }, { sdk: 'dblclick', prop: 'onDoubleClick' },\n { sdk: 'rightclick', prop: 'onRightClick' }, { sdk: 'mouseover', prop: 'onMouseOver' },\n { sdk: 'mouseout', prop: 'onMouseOut' }, { sdk: 'mousedown', prop: 'onMouseDown' },\n { sdk: 'mouseup', prop: 'onMouseUp' }, { sdk: 'remove', prop: 'onRemove' },\n ],\n});\n\nexport const Polyline = createOverlayComponent<PolylineProps>({\n displayName: 'Polyline',\n factory: (d, p) => d.createPolyline(p.path, p),\n pathProp: 'path',\n optionProps: ['strokeColor', 'strokeWeight', 'strokeOpacity', 'strokeStyle', 'enableEditing', 'enableMassClear', 'zIndex'],\n ctorOnlyProps: ['enableClicking', 'strokeLineCap', 'strokeLineJoin', 'geodesic', 'linkRight', 'clip', 'coordType', 'icons', 'dashArray', 'strokeTexture', 'node', 'nodeT'],\n events: OVERLAY_EVENTS,\n});\n\nexport const Polygon = createOverlayComponent<PolygonProps>({\n displayName: 'Polygon',\n factory: (d, p) => d.createPolygon(p.path, p),\n pathProp: 'path',\n optionProps: ['strokeColor', 'fillColor', 'strokeWeight', 'strokeOpacity', 'fillOpacity', 'strokeStyle', 'enableEditing', 'enableMassClear', 'zIndex'],\n ctorOnlyProps: ['enableClicking', 'strokeLineCap', 'strokeLineJoin', 'linkRight', 'coordType', 'dashArray', 'node', 'nodeT'],\n events: OVERLAY_EVENTS,\n});\n\nexport const Circle = createOverlayComponent<CircleProps>({\n displayName: 'Circle',\n factory: (d, p) => d.createCircle(p.center, p.radius, p),\n positionProp: 'center',\n optionProps: ['radius', 'strokeColor', 'fillColor', 'strokeWeight', 'strokeOpacity', 'fillOpacity', 'strokeStyle', 'enableMassClear', 'zIndex'],\n ctorOnlyProps: ['enableEditing', 'enableClicking', 'coordType', 'dashArray', 'node', 'nodeT'],\n events: OVERLAY_EVENTS,\n});\n\nexport const Rectangle = createOverlayComponent<RectangleProps>({\n displayName: 'Rectangle',\n factory: (d, p) => d.createRectangle(p.bounds, p),\n optionProps: ['bounds', 'strokeColor', 'fillColor', 'strokeWeight', 'strokeOpacity', 'fillOpacity', 'strokeStyle', 'enableEditing', 'enableMassClear', 'zIndex'],\n ctorOnlyProps: ['enableClicking', 'linkRight', 'coordType', 'dashArray', 'node', 'nodeT'],\n events: OVERLAY_EVENTS,\n});\n\nexport const BezierCurve = createOverlayComponent<BezierCurveProps>({\n displayName: 'BezierCurve',\n factory: (d, p) => d.createBezierCurve(p.path, p.controlPoints, p),\n pathProp: 'path',\n optionProps: ['controlPoints', 'strokeColor', 'strokeWeight', 'strokeOpacity', 'strokeStyle', 'enableMassClear', 'zIndex'],\n ctorOnlyProps: ['enableClicking', 'enableEditing', 'dashArray', 'node', 'nodeT'],\n events: OVERLAY_EVENTS,\n});\n\nexport const Prism = createOverlayComponent<PrismProps>({\n displayName: 'Prism',\n factory: (d, p) => d.createPrism(p.path, p.altitude, p),\n pathProp: 'path',\n optionProps: ['altitude', 'topFillColor', 'topFillOpacity', 'sideFillColor', 'sideFillOpacity', 'enableMassClear', 'zIndex'],\n ctorOnlyProps: ['enableClicking'],\n events: OVERLAY_EVENTS,\n});\n\nexport const GroundOverlay = createOverlayComponent<GroundOverlayProps>({\n displayName: 'GroundOverlay',\n factory: (d, p) => d.createGroundOverlay(p.bounds, p),\n optionProps: ['bounds', 'opacity', 'url', 'imageURL', 'displayOnMinLevel', 'displayOnMaxLevel', 'enableMassClear', 'zIndex'],\n ctorOnlyProps: ['enableClicking', 'type', 'top', 'isReDraw', 'drawHook', 'stretch'],\n events: OVERLAY_EVENTS,\n});\n\nexport const GroundPoint = createOverlayComponent<GroundPointProps>({\n displayName: 'GroundPoint',\n factory: (d, p) => d.createGroundPoint(p.point, p),\n positionProp: 'point',\n optionProps: ['url', 'size', 'anchor', 'scale', 'rotation', 'offset', 'opacity', 'imageURL', 'displayOnMinLevel', 'displayOnMaxLevel', 'enableMassClear', 'zIndex'],\n ctorOnlyProps: ['level', 'enableClicking', 'type', 'top', 'isReDraw', 'drawHook'],\n events: OVERLAY_EVENTS,\n});\n\nexport const PointCollection = createOverlayComponent<PointCollectionProps>({\n displayName: 'PointCollection',\n factory: (d, p) => d.createPointCollection(p.points, p),\n pathProp: 'points',\n optionProps: ['shape', 'color', 'size', 'enableMassClear'],\n events: [\n { sdk: 'click', prop: 'onClick' }, { sdk: 'mouseover', prop: 'onMouseOver' },\n { sdk: 'mouseout', prop: 'onMouseOut' },\n ],\n});\n\n// ─── 值对象(skipMount,用作 Marker icon / Polyline icons) ───\nexport const Symbol = createOverlayComponent<SymbolProps>({\n displayName: 'Symbol',\n factory: (d, p) => d.createSymbol(p.path, p),\n optionProps: ['path', 'anchor', 'fillColor', 'fillOpacity', 'scale', 'rotation', 'strokeColor', 'strokeOpacity', 'strokeWeight'],\n skipMount: true,\n});\n\nexport const Icon = createOverlayComponent<IconProps>({\n displayName: 'Icon',\n factory: (d, p) => d.createIcon(p.url, p.size, p),\n optionProps: ['url', 'size', 'anchor', 'imageOffset', 'imageSize', 'infoWindowAnchor', 'printImageUrl', 'srcset'],\n skipMount: true,\n});\n\nexport const IconSequence = createOverlayComponent<IconSequenceProps>({\n displayName: 'IconSequence',\n factory: (d, p) => d.createIconSequence(p.symbol as any, p.offset, p.repeat, p.fixedRotation),\n ctorOnlyProps: ['symbol', 'offset', 'repeat', 'fixedRotation'],\n skipMount: true,\n});\n\nexport const Hotspot = createOverlayComponent<HotspotProps>({\n displayName: 'Hotspot',\n factory: (d, p) => d.createHotspot(p.position, p),\n positionProp: 'position',\n optionProps: ['text', 'userData'],\n ctorOnlyProps: ['offsets', 'minZoom', 'maxZoom'],\n});\n\nexport const Marker3D = createOverlayComponent<Marker3DProps>({\n displayName: 'Marker3D',\n factory: (d, p) => d.createMarker3D(p.position, p.height, p),\n positionProp: 'position',\n optionProps: ['height', 'fillColor', 'fillOpacity'],\n ctorOnlyProps: ['shape', 'size', 'enableMassClear'],\n events: [\n { sdk: 'click', prop: 'onClick' }, { sdk: 'dblclick', prop: 'onDoubleClick' },\n { sdk: 'rightclick', prop: 'onRightClick' }, { sdk: 'mouseover', prop: 'onMouseOver' },\n { sdk: 'mouseout', prop: 'onMouseOut' }, { sdk: 'mousedown', prop: 'onMouseDown' },\n { sdk: 'mouseup', prop: 'onMouseUp' },\n ],\n supportsChildren: true,\n});\n\n// ─── 信息窗口(独立 Vue 组件) ───\nexport { InfoWindow } from './InfoWindow';\n","/**\n * 全部 Control 组件 — 使用 createControlComponent 工厂批量生成。\n */\nimport { createControlComponent } from '../../utils/createComponent';\nimport type { Bounds, Size, OverlayHandle } from '../../types';\nimport type {\n ControlAnchor,\n LengthUnit,\n MapTypeControlType,\n NavigationControlType,\n} from '../../constants';\nimport type { PlainIcon } from '../Overlay/types';\n\ninterface ControlReactProps {\n /** 控制控件显示/隐藏。undefined 或 true = 显示,false = 隐藏 */\n visible?: boolean;\n}\n\nexport interface NavigationControlOptions {\n anchor?: ControlAnchor;\n offset?: Size;\n type?: NavigationControlType;\n showZoomInfo?: boolean;\n enableGeolocation?: boolean;\n}\n\nexport interface NavigationControl3DOptions {\n anchor?: ControlAnchor;\n offset?: Size;\n}\n\nexport interface ScaleControlOptions {\n anchor?: ControlAnchor;\n offset?: Size;\n /** 比例尺单位制,走 setUnit() */\n unit?: LengthUnit;\n}\n\nexport interface OverviewMapControlOptions {\n anchor?: ControlAnchor;\n offset?: Size;\n size?: Size;\n isOpen?: boolean;\n zoomInterval?: number;\n padding?: number;\n}\n\nexport interface MapTypeControlOptions {\n anchor?: ControlAnchor;\n offset?: Size;\n type?: MapTypeControlType;\n mapTypes?: unknown[];\n enableSwitch?: boolean;\n /** 是否显示路网层,走 showStreetLayer() */\n showStreetLayer?: boolean;\n}\n\nexport interface CopyrightItem {\n id: number;\n content?: string;\n bounds?: Bounds;\n}\n\nexport interface CopyrightControlOptions {\n anchor?: ControlAnchor;\n offset?: Size;\n /** 自定义版权信息,创建和更新时调用 addCopyright() */\n copyrights?: CopyrightItem[];\n}\n\nexport interface GeolocationControlOptions {\n anchor?: ControlAnchor;\n offset?: Size;\n showAddressBar?: boolean;\n enableAutoLocation?: boolean;\n locationIcon?: PlainIcon | OverlayHandle;\n watchPosition?: boolean;\n useCompass?: boolean;\n autoZoom?: boolean;\n autoViewport?: boolean;\n /** @since 4.0 定位前回调;返回 false 可阻止默认定位 */\n onLocationStart?: (onSuccess: Function, onFail: Function) => boolean | void;\n}\n\nexport interface PanoramaControlOptions {\n anchor?: ControlAnchor;\n offset?: Size;\n}\n\nexport interface ZoomControlOptions {\n anchor?: ControlAnchor;\n offset?: Size;\n}\n\nexport interface CityListControlOptions {\n anchor?: ControlAnchor;\n offset?: Size;\n expand?: boolean;\n /** @since 4.0 自定义触发元素 */\n trigger?: HTMLElement;\n onChangeBefore?: () => void;\n onChangeAfter?: () => void;\n onChangeSuccess?: (poi: { city: string; code: string | number }) => void;\n /** @since 4.0 */\n onOpen?: () => void;\n /** @since 4.0 */\n onClose?: () => void;\n canCheckSize?: boolean;\n}\n\nexport type LocationControlOptions = GeolocationControlOptions;\n\nexport interface LogoControlOptions {\n anchor?: ControlAnchor;\n offset?: Size;\n}\n\nexport interface NavigationControlProps extends NavigationControlOptions, ControlReactProps {}\nexport interface NavigationControl3DProps extends NavigationControl3DOptions, ControlReactProps {}\nexport interface ScaleControlProps extends ScaleControlOptions, ControlReactProps {}\nexport interface OverviewMapControlProps extends OverviewMapControlOptions, ControlReactProps {\n onViewChanged?: (raw: unknown) => void;\n onViewChanging?: (raw: unknown) => void;\n onResize?: (raw: unknown) => void;\n}\nexport interface MapTypeControlProps extends MapTypeControlOptions, ControlReactProps {}\nexport interface CopyrightControlProps extends CopyrightControlOptions, ControlReactProps {}\nexport interface GeolocationControlProps extends GeolocationControlOptions, ControlReactProps {\n onLocationSuccess?: (raw: unknown) => void;\n onLocationError?: (raw: unknown) => void;\n}\nexport interface PanoramaControlProps extends PanoramaControlOptions, ControlReactProps {}\nexport interface ZoomControlProps extends ZoomControlOptions, ControlReactProps {}\nexport interface CityListControlProps extends CityListControlOptions, ControlReactProps {}\nexport type LocationControlProps = GeolocationControlProps;\nexport interface LogoControlProps extends LogoControlOptions, ControlReactProps {}\n\nexport const NavigationControl = createControlComponent<NavigationControlProps>({\n displayName: 'NavigationControl',\n factory: (d, p) => d.createNavigationControl(p),\n optionProps: ['anchor', 'offset'],\n // type 走重建:BMapGL(4.0/WebGL) 的 NavigationControl 没有 setType(),\n // 只能通过重建控件让构造参数 type 生效(v3 有 setType,重建同样正确)。\n ctorOnlyProps: ['type', 'showZoomInfo', 'enableGeolocation'],\n});\n\nexport const NavigationControl3D = createControlComponent<NavigationControl3DProps>({\n displayName: 'NavigationControl3D',\n factory: (d, p) => d.createNavigationControl3D(p),\n optionProps: ['anchor', 'offset'],\n});\n\nexport const ScaleControl = createControlComponent<ScaleControlProps>({\n displayName: 'ScaleControl',\n factory: (d, p) => d.createScaleControl(p),\n optionProps: ['anchor', 'offset', 'unit'],\n});\n\nexport const OverviewMapControl = createControlComponent<OverviewMapControlProps>({\n displayName: 'OverviewMapControl',\n factory: (d, p) => d.createOverviewMapControl(p),\n optionProps: ['anchor', 'offset', 'size'],\n ctorOnlyProps: ['zoomInterval', 'padding', 'isOpen'],\n events: [\n { sdk: 'viewchanged', prop: 'onViewChanged' },\n { sdk: 'viewchanging', prop: 'onViewChanging' },\n { sdk: 'resize', prop: 'onResize' },\n ],\n});\n\nexport const MapTypeControl = createControlComponent<MapTypeControlProps>({\n displayName: 'MapTypeControl',\n factory: (d, p) => d.createMapTypeControl(p),\n optionProps: ['anchor', 'offset', 'showStreetLayer'],\n ctorOnlyProps: ['type', 'mapTypes', 'enableSwitch'],\n});\n\nexport const CopyrightControl = createControlComponent<CopyrightControlProps>({\n displayName: 'CopyrightControl',\n factory: (d, p) => d.createCopyrightControl(p),\n optionProps: ['anchor', 'offset', 'copyrights'],\n});\n\nexport const GeolocationControl = createControlComponent<GeolocationControlProps>({\n displayName: 'GeolocationControl',\n factory: (d, p) => d.createGeolocationControl(p),\n optionProps: [\n 'anchor', 'offset', 'enableAutoLocation', 'locationIcon',\n 'watchPosition', 'useCompass', 'autoZoom', 'autoViewport', 'onLocationStart',\n ],\n ctorOnlyProps: ['showAddressBar'],\n events: [\n { sdk: 'locationSuccess', prop: 'onLocationSuccess' },\n { sdk: 'locationError', prop: 'onLocationError' },\n ],\n});\n\nexport const PanoramaControl = createControlComponent<PanoramaControlProps>({\n displayName: 'PanoramaControl',\n factory: (d, p) => d.createPanoramaControl(p),\n optionProps: ['anchor', 'offset'],\n});\n\nexport const ZoomControl = createControlComponent<ZoomControlProps>({\n displayName: 'ZoomControl',\n factory: (d, p) => d.createZoomControl(p),\n optionProps: ['anchor', 'offset'],\n});\n\nexport const CityListControl = createControlComponent<CityListControlProps>({\n displayName: 'CityListControl',\n factory: (d, p) => d.createCityListControl(p),\n optionProps: ['anchor', 'offset'],\n ctorOnlyProps: ['expand', 'trigger', 'onChangeBefore', 'onChangeAfter', 'onChangeSuccess', 'canCheckSize'],\n events: [\n { sdk: 'onopen', prop: 'onOpen' },\n { sdk: 'onclose', prop: 'onClose' },\n ],\n});\n\nexport const LocationControl = GeolocationControl;\n\nexport const LogoControl = createControlComponent<LogoControlProps>({\n displayName: 'LogoControl',\n factory: (d, p) => d.createLogoControl(p),\n optionProps: ['anchor', 'offset'],\n});\n","/**\n * Layer 组件 —— 使用 createLayerComponent 工厂生成(P2 覆盖主要图层,手写型图层见后续阶段)。\n */\nimport { createLayerComponent } from '../../utils/createComponent';\nimport type { Point } from '../../types';\n\nexport interface TileLayerOptions {\n transparentPng?: boolean; tileUrlTemplate?: string; zIndex?: number; copyright?: unknown;\n boundary?: string | string[]; opacity?: number; showRegion?: string; retry?: boolean; retryTime?: number; cacheSize?: number;\n tileLoadFunction?: (tile: HTMLImageElement, url: string) => void;\n}\nexport interface NormalLayerOptions {\n visible?: boolean; opacity?: number; minZoom?: number; maxZoom?: number; zIndex?: number;\n enablePicked?: boolean; autoSelect?: boolean; popEvent?: boolean; isTop?: boolean; isLowText?: boolean;\n referCenter?: Point; pickWidth?: number; pickHeight?: number;\n}\nexport interface GeoJSONLayerOptions {\n dataSource?: unknown; reference?: string;\n markerStyle?: unknown; polylineStyle?: unknown; polygonStyle?: unknown;\n minZoom?: number; maxZoom?: number; level?: number; visible?: boolean;\n}\nexport interface DistrictLayerOptions {\n name?: string; adcode?: string; kind?: number; autoViewport?: boolean;\n strokeColor?: string; strokeWeight?: number; strokeOpacity?: number;\n fillColor?: string; fillOpacity?: number;\n}\nexport interface CustomLayerOptions { databoxId?: string; geotableId?: string; q?: string; tags?: string; filter?: string; pointDensity?: number; }\nexport interface CanvasLayerOptions { zIndex?: number; paneName?: string; update?: Function; }\nexport interface TrafficLayerOptions { predictDate?: unknown; }\n\nexport type TileLayerProps = TileLayerOptions;\nexport type NormalLayerProps = NormalLayerOptions;\nexport type GeoJSONLayerProps = GeoJSONLayerOptions;\nexport type DistrictLayerProps = DistrictLayerOptions;\nexport type CustomLayerProps = CustomLayerOptions;\nexport type CanvasLayerProps = CanvasLayerOptions;\nexport type TrafficLayerProps = TrafficLayerOptions;\n\nexport const TileLayer = createLayerComponent<TileLayerProps>({ displayName: 'TileLayer', factory: (d, p) => d.createTileLayer(p) });\nexport const NormalLayer = createLayerComponent<NormalLayerProps>({ displayName: 'NormalLayer', factory: (d, p) => d.createNormalLayer(p) });\nexport const GeoJSONLayer = createLayerComponent<GeoJSONLayerProps>({ displayName: 'GeoJSONLayer', factory: (d, p) => d.createGeoJSONLayer(p) });\nexport const DistrictLayer = createLayerComponent<DistrictLayerProps>({ displayName: 'DistrictLayer', factory: (d, p) => d.createDistrictLayer(p) });\nexport const CustomLayer = createLayerComponent<CustomLayerProps>({ displayName: 'CustomLayer', factory: (d, p) => d.createCustomLayer(p) });\nexport const CanvasLayer = createLayerComponent<CanvasLayerProps>({ displayName: 'CanvasLayer', factory: (d, p) => d.createCanvasLayer(p) });\nexport const TrafficLayer = createLayerComponent<TrafficLayerProps>({ displayName: 'TrafficLayer', factory: (d, p) => d.createTrafficLayer(p) });\n\n// ─── 高级瓦片图层(4.0+) ───\nexport interface RasterTileLayerOptions { url: string | ((x: number, y: number, z: number) => string); [k: string]: unknown; }\nexport interface WMSLayerOptions { url?: string; params?: Record<string, string>; [k: string]: unknown; }\nexport interface WMTSLayerOptions { url?: string; params?: Record<string, string>; [k: string]: unknown; }\nexport interface XYZLayerOptions { tileUrlTemplate?: string; [k: string]: unknown; }\nexport interface MVTLayerOptions { tileUrlTemplate?: string; [k: string]: unknown; }\nexport type RasterTileLayerProps = RasterTileLayerOptions;\nexport type WMSLayerProps = WMSLayerOptions;\nexport type WMTSLayerProps = WMTSLayerOptions;\nexport type XYZLayerProps = XYZLayerOptions;\nexport type MVTLayerProps = MVTLayerOptions;\n\nexport const RasterTileLayer = createLayerComponent<RasterTileLayerProps>({ displayName: 'RasterTileLayer', factory: (d, p) => d.createRasterTileLayer(p) });\nexport const WMSLayer = createLayerComponent<WMSLayerProps>({ displayName: 'WMSLayer', factory: (d, p) => d.createWMSLayer(p) });\nexport const WMTSLayer = createLayerComponent<WMTSLayerProps>({ displayName: 'WMTSLayer', factory: (d, p) => d.createWMTSLayer(p) });\nexport const XYZLayer = createLayerComponent<XYZLayerProps>({ displayName: 'XYZLayer', factory: (d, p) => d.createXYZLayer(p) });\nexport const MVTLayer = createLayerComponent<MVTLayerProps>({\n displayName: 'MVTLayer',\n factory: (d, p) => d.createMVTLayer(p),\n events: [\n { sdk: 'click', prop: 'onclick' }, { sdk: 'dblclick', prop: 'ondblclick' },\n { sdk: 'mousemove', prop: 'onmousemove' }, { sdk: 'mouseout', prop: 'onmouseout' },\n ],\n});\n","import { computed, type ComputedRef } from 'vue';\nimport { useMapContext } from '../context';\nimport type { MapHandle } from '../types';\n\n/**\n * 拿当前 <Map> 的 MapHandle(响应式,可能为 null)。\n * 地图首帧渲染完成前为 null;<Map> 内部子组件拿到时通常已就绪。\n */\nexport function useMap(): ComputedRef<MapHandle | null> {\n const ctx = useMapContext();\n return computed(() => ctx.value?.map ?? null);\n}\n","import { onScopeDispose, watch } from 'vue';\nimport { useMapContext } from '../context';\n\n/**\n * 订阅 Map 事件。handler 始终读最新引用;map 就绪后自动绑定,卸载时退订。\n */\nexport function useMapEvent(type: string, handler: (raw: unknown) => void): void {\n const ctx = useMapContext();\n let unsub: (() => void) | null = null;\n const bind = () => {\n unsub?.(); unsub = null;\n const c = ctx.value;\n if (!c?.map) return;\n unsub = c.driver.addEventListener(c.map, type, (raw) => handler(raw));\n };\n watch(() => ctx.value?.map, bind, { immediate: true });\n onScopeDispose(() => { unsub?.(); unsub = null; });\n}\n","import { watch } from 'vue';\nimport { useMapContext } from '../context';\nimport type { MapHandle } from '../types';\n\n/**\n * 哨兵 composable:在 `<Map>` **内部**使用,地图就绪后回调,把 MapHandle 上提到外层。\n *\n * 典型用途:service composable 挂在 `<Map>` 外层时,其 renderOptions.map 需要一个已就绪的 handle。\n * 与 `<Map @ready=\"...\">` 等价,区别是它写在子组件里而非挂在 `<Map>` 的事件上。\n *\n * @param onReady 地图就绪时回调(handle 非 null)。\n */\nexport function useMapReady(onReady: (map: MapHandle) => void): void {\n const ctx = useMapContext();\n watch(() => ctx.value?.map, (m) => { if (m) onReady(m); }, { immediate: true });\n}\n","import { computed, type ComputedRef } from 'vue';\nimport { useBMapContext } from '../context';\nimport type { BMapDriver } from '../drivers/types';\n\n/** 拿当前版本的 driver(响应式,未就绪时为 null)。做版本/能力分支或用 rawSDK 取原生命名空间。 */\nexport function useDriver(): ComputedRef<BMapDriver | null> {\n const bmap = useBMapContext();\n return computed(() => bmap.value.driver);\n}\n","import { computed, type ComputedRef } from 'vue';\nimport { useMapContext } from '../context';\nimport { MapRefImpl, type MapRef } from '../components/Map/MapRef';\n\n/**\n * 命令式操作地图的句柄(已转发 driver 全量方法,是日常首选)。\n * 响应式:map/driver 就绪后自动可用,未就绪时为 null。\n */\nexport function useMapRef(): ComputedRef<MapRef | null> {\n const ctx = useMapContext();\n return computed(() => {\n const c = ctx.value;\n return c?.map ? new MapRefImpl(c.map, c.driver) : null;\n });\n}\n","import { computed, type ComputedRef } from 'vue';\nimport { useBMapContext } from '../context';\nimport type { Capability } from '../types';\n\n/** 显式能力检测(driver 内部已自动处理;这里用于提前分支)。响应式集合。 */\nexport function useCapabilities(): ComputedRef<ReadonlySet<Capability>> {\n const bmap = useBMapContext();\n return computed(() => bmap.value.driver?.capabilities ?? new Set<Capability>());\n}\n","/**\n * useSymbol —— 创建 Symbol 值对象(非 Overlay),用作 Marker 的 icon。\n * path 变化时重建;其余选项走 setOverlayOptions 原地更新。返回响应式句柄(首帧为 null)。\n */\nimport { onScopeDispose, shallowRef, watch, type ShallowRef } from 'vue';\nimport { useBMapContext } from '../context';\nimport { stableStringify } from '../utils/stableStringify';\nimport type { OverlayHandle } from '../types';\nimport type { SymbolProps } from '../components/Overlay/types';\n\nconst OPT_KEYS = ['fillColor', 'fillOpacity', 'scale', 'rotation', 'strokeColor', 'strokeOpacity', 'strokeWeight', 'anchor'] as const;\n\nexport function useSymbol(props: SymbolProps): ShallowRef<OverlayHandle | null> {\n const bmap = useBMapContext();\n const handle = shallowRef<OverlayHandle | null>(null);\n let current: OverlayHandle | null = null;\n\n const pickOpts = () => OPT_KEYS.reduce<Record<string, unknown>>((acc, k) => {\n const v = (props as any)[k];\n if (v !== undefined && v !== null) acc[k] = v;\n return acc;\n }, {});\n\n // path 或 driver 变化 → 重建\n watch(\n () => [bmap.value.driver, stableStringify((props as any).path)] as const,\n () => {\n const d = bmap.value.driver;\n if (!d) return;\n current = d.createSymbol((props as any).path, props);\n handle.value = current;\n },\n { immediate: true },\n );\n\n // 其余选项 → setOverlayOptions\n watch(() => stableStringify(pickOpts()), () => {\n const d = bmap.value.driver;\n if (d && current) d.setOverlayOptions(current, pickOpts());\n });\n\n onScopeDispose(() => { current = null; handle.value = null; });\n return handle;\n}\n","/**\n * useIcon —— 创建 Icon 值对象(非 Overlay),用作 Marker 的 icon。\n * url 变化时重建;其余选项走 setOverlayOptions。返回响应式句柄(首帧为 null)。\n */\nimport { onScopeDispose, shallowRef, watch, type ShallowRef } from 'vue';\nimport { useBMapContext } from '../context';\nimport { stableStringify } from '../utils/stableStringify';\nimport type { OverlayHandle } from '../types';\nimport type { IconProps } from '../components/Overlay/types';\n\nconst OPT_KEYS = ['size', 'anchor', 'imageOffset', 'imageSize', 'infoWindowAnchor', 'printImageUrl', 'srcset'] as const;\n\nexport function useIcon(props: IconProps): ShallowRef<OverlayHandle | null> {\n const bmap = useBMapContext();\n const handle = shallowRef<OverlayHandle | null>(null);\n let current: OverlayHandle | null = null;\n\n const pickOpts = () => OPT_KEYS.reduce<Record<string, unknown>>((acc, k) => {\n const v = (props as any)[k];\n if (v !== undefined && v !== null) acc[k] = v;\n return acc;\n }, {});\n\n // url 或 driver 变化 → 重建\n watch(\n () => [bmap.value.driver, (props as any).url] as const,\n () => {\n const d = bmap.value.driver;\n if (!d) return;\n current = d.createIcon((props as any).url, (props as any).size, props);\n handle.value = current;\n },\n { immediate: true },\n );\n\n // 其余选项 → setOverlayOptions\n watch(() => stableStringify(pickOpts()), () => {\n const d = bmap.value.driver;\n if (d && current) d.setOverlayOptions(current, pickOpts());\n });\n\n onScopeDispose(() => { current = null; handle.value = null; });\n return handle;\n}\n","/**\n * 检索类服务共用的「回调兜底」工具(composable 版)。\n * 百度 JSAPI 部分失败场景不触发回调,会导致 loading 永久卡住;本工具给每次请求挂超时。\n */\nimport { onScopeDispose } from 'vue';\n\nexport const SERVICE_TIMEOUT_MS = 10000;\n\nexport function serviceTimeoutError(): Error {\n return new Error('[vue-bmap] 服务请求超时:SDK 回调未返回,可能是 AK 未开通该服务、请求被拒或网络异常');\n}\n\nexport interface ServiceTimeoutControl {\n arm: (onTimeout: () => void, ms?: number) => void;\n clear: () => void;\n}\n\nexport function useServiceTimeout(): ServiceTimeoutControl {\n let timer: ReturnType<typeof setTimeout> | null = null;\n const clear = () => { if (timer) { clearTimeout(timer); timer = null; } };\n const arm = (onTimeout: () => void, ms: number = SERVICE_TIMEOUT_MS) => {\n clear();\n timer = setTimeout(() => { timer = null; onTimeout(); }, ms);\n };\n onScopeDispose(clear);\n return { arm, clear };\n}\n","/**\n * useGeocoder —— 地理编码 composable。对应 react-bmap 的 useGeocoder。\n * getPoint(address) 地址转坐标 / getLocation(point) 坐标转地址(单发,requestId 防竞态)。\n */\nimport { onScopeDispose, ref, watch, type Ref } from 'vue';\nimport { useBMapContext } from '../context';\nimport { UnsupportedCapabilityError } from '../drivers/unsupported';\nimport { getSDK } from '../utils/sdk';\nimport { useServiceTimeout, serviceTimeoutError, SERVICE_TIMEOUT_MS } from './useServiceTimeout';\nimport type { Point } from '../types';\nimport type { GeocoderResult } from '../types/results';\n\nexport interface GeocoderHookResult {\n data: Ref<GeocoderResult | Point | undefined>;\n loading: Ref<boolean>;\n error: Ref<Error | null>;\n supported: Ref<boolean>;\n getPoint: (address: string, city?: string) => void;\n getLocation: (point: Point, options?: unknown) => void;\n getPoints: (addresses: string[], city?: string) => Promise<(Point | null)[]>;\n getLocations: (points: Point[], options?: unknown) => Promise<(GeocoderResult | null)[]>;\n setOptions: (options: Record<string, unknown>) => void;\n cancel: () => void;\n}\n\nexport function useGeocoder(): GeocoderHookResult {\n const bmap = useBMapContext();\n let raw: any = null;\n let requestId = 0;\n const { arm, clear } = useServiceTimeout();\n\n const data = ref<GeocoderResult | Point | undefined>(undefined);\n const loading = ref(false);\n const error = ref<Error | null>(null);\n const supported = ref(true);\n\n const init = () => {\n const driver = bmap.value.driver;\n if (!driver) return;\n const handle = driver.createGeocoder();\n if (handle.isNull) {\n supported.value = false;\n error.value = new UnsupportedCapabilityError('Geocoder', driver.version);\n return;\n }\n raw = handle.raw;\n supported.value = true;\n error.value = null;\n };\n watch(() => bmap.value.driver, init, { immediate: true });\n onScopeDispose(() => { raw = null; });\n\n const doAction = (fn: (r: any) => void) => {\n if (!raw) return;\n const my = requestId;\n loading.value = true; error.value = null;\n arm(() => { if (my === requestId) { loading.value = false; error.value = serviceTimeoutError(); } });\n try { fn(raw); }\n catch (e) { clear(); loading.value = false; error.value = e as Error; }\n };\n\n const getPoint = (address: string, city?: string) => {\n const my = ++requestId;\n doAction((r) => {\n const cb = (result: any) => { if (my !== requestId) return; clear(); data.value = result; loading.value = false; error.value = null; };\n if (city !== undefined) r.getPoint?.(address, cb, city); else r.getPoint?.(address, cb);\n });\n };\n const getLocation = (point: Point, options?: unknown) => {\n const my = ++requestId;\n doAction((r) => {\n const SDK = getSDK();\n const pt = new SDK.Point(point.lng, point.lat);\n const cb = (result: any) => { if (my !== requestId) return; clear(); data.value = result; loading.value = false; error.value = null; };\n if (options !== undefined) r.getLocation?.(pt, cb, options); else r.getLocation?.(pt, cb);\n });\n };\n const getPoints = (addresses: string[], city?: string) => Promise.all(addresses.map((address) => new Promise<Point | null>((resolve) => {\n if (!raw) return resolve(null);\n let done = false;\n const t = setTimeout(() => { if (!done) { done = true; resolve(null); } }, SERVICE_TIMEOUT_MS);\n const cb = (result: Point | null) => { if (done) return; done = true; clearTimeout(t); resolve(result ?? null); };\n if (city !== undefined) raw.getPoint?.(address, cb, city); else raw.getPoint?.(address, cb);\n })));\n const getLocations = (points: Point[], options?: unknown) => Promise.all(points.map((point) => new Promise<GeocoderResult | null>((resolve) => {\n if (!raw) return resolve(null);\n const SDK = getSDK();\n const pt = new SDK.Point(point.lng, point.lat);\n let done = false;\n const t = setTimeout(() => { if (!done) { done = true; resolve(null); } }, SERVICE_TIMEOUT_MS);\n const cb = (result: GeocoderResult | null) => { if (done) return; done = true; clearTimeout(t); resolve(result ?? null); };\n if (options !== undefined) raw.getLocation?.(pt, cb, options); else raw.getLocation?.(pt, cb);\n })));\n const setOptions = (options: Record<string, unknown>) => { raw?.setOptions?.(options); };\n const cancel = () => { requestId++; clear(); loading.value = false; };\n\n return { data, loading, error, supported, getPoint, getLocation, getPoints, getLocations, setOptions, cancel };\n}\n"],"names":["BMAP_KEY","MAP_KEY","OVERLAY_TARGET_KEY","useBMapContext","ctx","inject","useMapContextOptional","useMapContext","V4_MAP_VIEW","V4_LAYER_CLASS","V4_MAP_LAYER","V4_OVERLAY","V4_CONTROL","V4_SERVICE","V4_MISC","V4_MAP_UTIL","V3_MAP_ONLY","V3_OVERLAY_ONLY","COMMON","v3Set","v4Set","CAPABILITY_MATRIX","isHandle","value","unwrapHandle","debugWarn","context","cause","devWarn","message","env","_a","UnsupportedCapabilityError","capability","version","reportUnsupported","behavior","isMissingMember","e","reportCallFailure","error","unsupportedValue","fallback","tryOp","fn","pointEquals","a","b","eps","pointToPlain","p","r","mapHandle","raw","overlayHandle","type","controlHandle","layerHandle","kind","serviceHandle","isNull","rawOf","h","rawMap","m","isOverlayLikeLayer","l","LAYER_BRANDS","unwrapTileWrapper","collisionState","collisionManagers","overlayToCM","destroyedMaps","CollisionManager","mapRaw","__publicField","evalFn","moveFn","zoomFn","_b","rawMarker","entries","pos","px","_c","_d","THRESHOLD_SQ","s","i","j","dx","dy","container","_f","_e","_h","_g","toRawPoint","SDK","toRawIcon","icon","path","symOpts","sz","isV3","opts","off","inst","toRawSize","OPTION_ACCESSOR_ALIAS","optionAccessor","key","alias","cap","toRawPoints","toRawPointGroups","groups","g","isNestedPath","toRawPathOrPaths","applyEditNodeIcons","ctorOpts","toRawPixel","toRawBounds","toPlainPoint","toPlainBounds","sw","ne","swP","neP","toPlainSize","toPlainPixel","toRawControlOptions","options","out","v","applyCopyrights","control","copyrights","item","rawItem","HANDLED_OVERLAY_OPTION_KEYS","warnedOverlayOptionKeys","warnUnhandledOverlayOptions","o","k","seen","createV4Driver","rawSDK","capabilities","callRaw","getRaw","createOverlayFactory","ctor","createControlFactory","createLayerFactory","createServiceFactory","map","handle","layers","layer","c","t","z","size","level","point","lng","lat","x","y","date","uid","cb","iw","id","tilePosStr","u","zc","currentOpen","desired","target","menu","inferOverlayType","marker","label","cv","floor","display","cfg","rawCfg","hasOpts","strokeFields","f","ic","fields","rawPath","wantEditing","rafId","origRemove","cp","safeCp","pathLen","altitude","url","imgSize","sym","offset","repeat","fr","domCreate","height","ov","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","_y","_z","_A","_B","_C","_D","_E","styles","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_T","_U","_V","_W","_X","_Y","_Z","__","_$","_aa","_ba","_ca","_da","keys","get","set","snapshot","failed","pd","CustomControlImpl","div","layerName","createDOM","_cd","text","idx","content","labelOpts","loc","service","query","callbacks","cancelled","safeCb","data","err","handler","globalScope","getSDK","sdk","tryGetSDK","createV3Driver","pano","city","w","anchor","offsetRaw","ControlCtor","SizeCtor","proto","instance","points","pt","MP","proj","createDriver","stableHash","globalRegistry","buildLoadKey","getExisting","loadKey","register","components","promise","getAllEntries","detectConflict","requested","entry","loadJSAPI","existing","conflict","doLoad","mod","BMapProvider","defineComponent","props","slots","state","shallowRef","provide","generation","onMounted","my","current","real","driver","onBeforeUnmount","BMAP_ANCHOR_TOP_LEFT","BMAP_ANCHOR_TOP_RIGHT","BMAP_ANCHOR_BOTTOM_LEFT","BMAP_ANCHOR_BOTTOM_RIGHT","BMAP_ANCHOR_TOP_CENTER","BMAP_ANCHOR_BOTTOM_CENTER","BMAP_ANCHOR_LEFT_CENTER","BMAP_ANCHOR_RIGHT_CENTER","BMAP_ANCHOR_CENTER","BMAP_NORMAL_MAP","BMAP_SATELLITE_MAP","BMAP_HYBRID_MAP","BMAP_EARTH_MAP","BMAP_NAVIGATION_CONTROL_LARGE","BMAP_NAVIGATION_CONTROL_SMALL","BMAP_NAVIGATION_CONTROL_PAN","BMAP_NAVIGATION_CONTROL_ZOOM","BMAP_MAPTYPE_CONTROL_HORIZONTAL","BMAP_MAPTYPE_CONTROL_DROPDOWN","BMAP_MAPTYPE_CONTROL_MAP","BMAP_ANIMATION_DROP","BMAP_ANIMATION_BOUNCE","BMAP_STATUS_SUCCESS","BMAP_STATUS_CITY_LIST","BMAP_STATUS_UNKNOWN_LOCATION","BMAP_STATUS_UNKNOWN_ROUTE","BMAP_STATUS_INVALID_KEY","BMAP_STATUS_INVALID_REQUEST","BMAP_STATUS_PERMISSION_DENIED","BMAP_STATUS_SERVICE_UNAVAILABLE","BMAP_STATUS_TIMEOUT","BMAP_DRIVING_POLICY_DEFAULT","BMAP_DRIVING_POLICY_DESTANCE","BMAP_DRIVING_POLICY_AVOID_HIGHWAYS","BMAP_DRIVING_POLICY_FIRST_HIGHWAYS","BMAP_DRIVING_POLICY_AVOID_CONGESTION","BMAP_DRIVING_POLICY_AVOID_PAY","BMAP_DRIVING_POLICY_HIGHWAYS_AVOID_CONGESTION","BMAP_DRIVING_POLICY_AVOID_HIGHWAYS_CONGESTION","BMAP_DRIVING_POLICY_AVOID_CONGESTION_PAY","BMAP_DRIVING_POLICY_AVOID_HIGHWAYS_CONGESTION_PAY","BMAP_DRIVING_POLICY_AVOID_HIGHWAYS_PAY","BMAP_DRIVING_POLICY_DISTANCE_PRIORITY","BMAP_DRIVING_POLICY_TIME_PRIORITY","BMAP_TRANSIT_POLICY_RECOMMEND","BMAP_TRANSIT_POLICY_LEAST_TRANSFER","BMAP_TRANSIT_POLICY_LEAST_WALKING","BMAP_TRANSIT_POLICY_AVOID_SUBWAYS","BMAP_TRANSIT_POLICY_LEAST_TIME","BMAP_TRANSIT_POLICY_FIRST_SUBWAYS","BMAP_TRANSIT_TYPE_IN_CITY","BMAP_TRANSIT_TYPE_CROSS_CITY","BMAP_TRANSIT_TYPE_POLICY_TRAIN","BMAP_TRANSIT_TYPE_POLICY_AIRPLANE","BMAP_TRANSIT_TYPE_POLICY_COACH","BMAP_TRANSIT_PLAN_TYPE_ROUTE","BMAP_TRANSIT_PLAN_TYPE_LINE","BMAP_INTERCITY_POLICY_LEAST_TIME","BMAP_INTERCITY_POLICY_EARLY_START","BMAP_INTERCITY_POLICY_CHEAP_PRICE","BMAP_LANGUAGE_ZH","BMAP_LANGUAGE_EN","BMAP_LANGUAGE_ZH_TW","BMAP_LANGUAGE_ES","BMAP_LANGUAGE_PT","BMAP_LANGUAGE_FR","BMAP_LANGUAGE_DE","BMAP_LANGUAGE_TH","BMAP_LANGUAGE_JA","BMAP_LANGUAGE_KO","BMAP_LANGUAGE_TR","BMAP_LANGUAGE_IT","BMAP_LANGUAGE_RU","BMAP_LANGUAGE_MS","BMAP_LANGUAGE_VI","BMAP_LANGUAGE_ID","BMAP_UNIT_METRIC","BMAP_UNIT_IMPERIAL","BMAP_COORD_MERCATOR","BMAP_COORD_GCJ02","BMAP_COORD_BD09","BMAP_COORD_GCJ02MERCATOR","BMAP_COORD_WGS84","BMAP_COORD_EPSG3857","BMap_Symbol_SHAPE_CIRCLE","BMap_Symbol_SHAPE_RECTANGLE","BMap_Symbol_SHAPE_RHOMBUS","BMap_Symbol_SHAPE_STAR","BMap_Symbol_SHAPE_BACKWARD_CLOSED_ARROW","BMap_Symbol_SHAPE_FORWARD_CLOSED_ARROW","BMap_Symbol_SHAPE_BACKWARD_OPEN_ARROW","BMap_Symbol_SHAPE_FORWARD_OPEN_ARROW","BMap_Symbol_SHAPE_POINT","BMap_Symbol_SHAPE_PLANE","BMap_Symbol_SHAPE_CAMERA","BMap_Symbol_SHAPE_WARNING","BMap_Symbol_SHAPE_SMILE","BMap_Symbol_SHAPE_CLOCK","BMAP_POINT_SHAPE_STAR","BMAP_POINT_SHAPE_WATERDROP","BMAP_POINT_SHAPE_CIRCLE","BMAP_POINT_SHAPE_SQUARE","BMAP_POINT_SHAPE_RHOMBUS","BMAP_POINT_SHAPE_LAYER_CIRCLE","BMAP_POINT_SHAPE_LAYER_SQUARE","BMAP_POINT_SHAPE_LAYER_TRIANGLE","BMAP_POINT_SHAPE_LAYER_DIAMOND","BMAP_POINT_SHAPE_LAYER_CROSS","BMAP_POINT_SHAPE_LAYER_ARROW","BMAP_POINT_SHAPE_LAYER_ARROW_TAIL","BMAP_POINT_SHAPE_LAYER_STAR","BMAP_POINT_SHAPE_LAYER_WATERDROP","BMAP_POINT_SIZE_TINY","BMAP_POINT_SIZE_SMALLER","BMAP_POINT_SIZE_SMALL","BMAP_POINT_SIZE_NORMAL","BMAP_POINT_SIZE_BIG","BMAP_POINT_SIZE_BIGGER","BMAP_POINT_SIZE_HUGE","BMAP_SHAPE_CIRCLE","BMAP_SHAPE_RECT","BMAP_HIGHLIGHT_STEP","BMAP_HIGHLIGHT_ROUTE","BMAP_POI_TYPE_NORMAL","BMAP_POI_TYPE_BUSSTOP","BMAP_POI_TYPE_BUSLINE","BMAP_POI_TYPE_SUBSTOP","BMAP_POI_TYPE_SUBLINE","BMAP_MODE_DRIVING","BMAP_MODE_TRANSIT","BMAP_MODE_WALKING","BMAP_MODE_NAVIGATION","BMAP_ROUTE_STATUS_NORMAL","BMAP_ROUTE_STATUS_EMPTY","BMAP_ROUTE_STATUS_ADDRESS","BMAP_ROUTE_TYPE_WALKING","BMAP_ROUTE_TYPE_DRIVING","BMAP_ROUTE_TYPE_RIDING","BMAP_TRAFFICE_STATUS_NONE","BMAP_TRAFFICE_STATUS_NORMAL","BMAP_TRAFFICE_STATUS_SLOW","BMAP_TRAFFICE_STATUS_JAM","BMAP_POINT_DENSITY_HIGH","BMAP_POINT_DENSITY_MEDIUM","BMAP_POINT_DENSITY_LOW","BMAP_CONTEXT_MENU_ICON_ZOOMIN","BMAP_CONTEXT_MENU_ICON_ZOOMOUT","BMAP_LINE_TYPE_BUS","BMAP_LINE_TYPE_SUBWAY","BMAP_LINE_TYPE_FERRY","BMAP_LINE_TYPE_TRAIN","BMAP_LINE_TYPE_AIRPLANE","BMAP_LINE_TYPE_COACH","BMAP_PANORAMA_POI_HOTEL","BMAP_PANORAMA_POI_CATERING","BMAP_PANORAMA_POI_MOVIE","BMAP_PANORAMA_POI_TRANSIT","BMAP_PANORAMA_POI_INDOOR_SCENE","BMAP_PANORAMA_POI_NONE","BMAP_PANORAMA_STREET_SCENE","BMAP_PANORAMA_INDOOR_SCENE","BMAP_ANCHOR_MIDDLE_LEFT","BMAP_ANCHOR_MIDDLE_RIGHT","BMAP_LANG_CN","BMAP_LANG_EN","BMAP_SHAPE_RECTANGLE","getSdkConstant","name","MapRefImpl","heading","tilt","zoom","pixel","mcLng","mcLat","start","end","callback","spots","areaSpot","labels","labelUids","clickPosition","bounds","center","view","viewportOptions","zoomCenter","mapTypeId","overlay","mapType","config","theme","customVars","logo","cpy","cursor","viewAnimation","show","language","lock","regions","isOn","mask","parking","hotspot","EVENT_MAP","TOGGLES","Map","attrs","expose","bmap","containerRef","mapCtx","unsubs","internalUpdate","suppress","createMap","status","initial","initialStyle","initCenter","initZoom","initHeading","initTilt","mapReady","markReady","fallbackId","prop","evt","live","destroyMap","watch","driverOf","d","cur","containerAttrs","stableStringify","serialize","handleIds","handleSeq","handleTag","buildProps","events","extra","createOverlayComponent","factoryKeys","store","optionBaseline","appliedOptKeys","collectFactoryProps","bindEvents","unbindEvents","create","factoryProps","attachMarker","mk","defaultableKeys","initOpts","destroy","recreate","ready","computed","optKeys","acc","snap","nextKeys","removed","restorable","unrestorable","ctorKeys","onUnmounted","childStore","createControlComponent","collect","createLayerComponent","_props","add","remove","ev","layerKey","InfoWindow","handlers","openTargetRaw","tgt","rawIW","event","applyOpen","rawTarget","ctorKey","OVERLAY_EVENTS","Marker","Label","Polyline","Polygon","Circle","Rectangle","BezierCurve","Prism","GroundOverlay","GroundPoint","PointCollection","Symbol","Icon","IconSequence","Hotspot","Marker3D","NavigationControl","NavigationControl3D","ScaleControl","OverviewMapControl","MapTypeControl","CopyrightControl","GeolocationControl","PanoramaControl","ZoomControl","CityListControl","LocationControl","LogoControl","TileLayer","NormalLayer","GeoJSONLayer","DistrictLayer","CustomLayer","CanvasLayer","TrafficLayer","RasterTileLayer","WMSLayer","WMTSLayer","XYZLayer","MVTLayer","useMap","useMapEvent","unsub","bind","onScopeDispose","useMapReady","onReady","useDriver","useMapRef","useCapabilities","OPT_KEYS","useSymbol","pickOpts","useIcon","SERVICE_TIMEOUT_MS","serviceTimeoutError","useServiceTimeout","timer","clear","arm","onTimeout","ms","useGeocoder","requestId","ref","loading","supported","init","doAction","address","result","addresses","resolve","done"],"mappings":"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"}