@tarojs/components-react 4.2.1-beta.0 → 4.2.1-beta.1

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 (77) hide show
  1. package/dist/components/image/index.js +5 -3
  2. package/dist/components/image/index.js.map +1 -1
  3. package/dist/components/map/MapContext.js +628 -0
  4. package/dist/components/map/MapContext.js.map +1 -0
  5. package/dist/components/map/MapCustomCallout.js +91 -0
  6. package/dist/components/map/MapCustomCallout.js.map +1 -0
  7. package/dist/components/map/common.js +4 -0
  8. package/dist/components/map/common.js.map +1 -0
  9. package/dist/components/map/createMapContext.js +34 -0
  10. package/dist/components/map/createMapContext.js.map +1 -0
  11. package/dist/components/map/handler.js +50 -0
  12. package/dist/components/map/handler.js.map +1 -0
  13. package/dist/components/map/index.js +329 -0
  14. package/dist/components/map/index.js.map +1 -0
  15. package/dist/components/picker/index.js +76 -35
  16. package/dist/components/picker/index.js.map +1 -1
  17. package/dist/components/picker/picker-group.js +477 -127
  18. package/dist/components/picker/picker-group.js.map +1 -1
  19. package/dist/components/refresher/index.js +5 -5
  20. package/dist/components/refresher/index.js.map +1 -1
  21. package/dist/components/scroll-view/index.js +80 -36
  22. package/dist/components/scroll-view/index.js.map +1 -1
  23. package/dist/components/switch/index.js +125 -0
  24. package/dist/components/switch/index.js.map +1 -0
  25. package/dist/components/switch/style/index.scss.js +4 -0
  26. package/dist/components/switch/style/index.scss.js.map +1 -0
  27. package/dist/contexts/ScrollElementContext.js +6 -0
  28. package/dist/contexts/ScrollElementContext.js.map +1 -0
  29. package/dist/index.css +1 -1
  30. package/dist/index.js +6 -2
  31. package/dist/index.js.map +1 -1
  32. package/dist/original/components/image/index.js +5 -3
  33. package/dist/original/components/image/index.js.map +1 -1
  34. package/dist/original/components/image/style/index.scss +5 -1
  35. package/dist/original/components/map/MapContext.js +628 -0
  36. package/dist/original/components/map/MapContext.js.map +1 -0
  37. package/dist/original/components/map/MapCustomCallout.js +91 -0
  38. package/dist/original/components/map/MapCustomCallout.js.map +1 -0
  39. package/dist/original/components/map/common.js +4 -0
  40. package/dist/original/components/map/common.js.map +1 -0
  41. package/dist/original/components/map/createMapContext.js +34 -0
  42. package/dist/original/components/map/createMapContext.js.map +1 -0
  43. package/dist/original/components/map/handler.js +50 -0
  44. package/dist/original/components/map/handler.js.map +1 -0
  45. package/dist/original/components/map/index.js +329 -0
  46. package/dist/original/components/map/index.js.map +1 -0
  47. package/dist/original/components/picker/index.js +76 -35
  48. package/dist/original/components/picker/index.js.map +1 -1
  49. package/dist/original/components/picker/picker-group.js +477 -127
  50. package/dist/original/components/picker/picker-group.js.map +1 -1
  51. package/dist/original/components/picker/style/index.scss +9 -8
  52. package/dist/original/components/refresher/index.js +5 -5
  53. package/dist/original/components/refresher/index.js.map +1 -1
  54. package/dist/original/components/scroll-view/index.js +80 -36
  55. package/dist/original/components/scroll-view/index.js.map +1 -1
  56. package/dist/original/components/switch/index.js +125 -0
  57. package/dist/original/components/switch/index.js.map +1 -0
  58. package/dist/original/components/switch/style/index.scss +35 -0
  59. package/dist/original/contexts/ScrollElementContext.js +6 -0
  60. package/dist/original/contexts/ScrollElementContext.js.map +1 -0
  61. package/dist/original/index.js +6 -2
  62. package/dist/original/index.js.map +1 -1
  63. package/dist/solid/components/image/index.js +5 -3
  64. package/dist/solid/components/image/index.js.map +1 -1
  65. package/dist/solid/components/picker/index.js +82 -39
  66. package/dist/solid/components/picker/index.js.map +1 -1
  67. package/dist/solid/components/picker/picker-group.js +500 -151
  68. package/dist/solid/components/picker/picker-group.js.map +1 -1
  69. package/dist/solid/components/refresher/index.js +5 -5
  70. package/dist/solid/components/refresher/index.js.map +1 -1
  71. package/dist/solid/components/scroll-view/index.js +84 -40
  72. package/dist/solid/components/scroll-view/index.js.map +1 -1
  73. package/dist/solid/contexts/ScrollElementContext.js +6 -0
  74. package/dist/solid/contexts/ScrollElementContext.js.map +1 -0
  75. package/dist/solid/index.css +1 -1
  76. package/dist/solid/index.js +1 -1
  77. package/package.json +8 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapContext.js","sources":["../../../../src/components/map/MapContext.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport { logPrefix } from './common'\nimport { MethodHandler } from './handler'\n\nimport type { MapContext as TaroMapContext } from '@tarojs/taro'\n/**\n * 全局地图实例存储\n * key: Map 组件的 id\n * value: TMap.Map 实例\n */\nconst mapInstances = new Map<string, TMap.Map>()\n\n/**\n * 注册地图实例(同时创建 MapContextImpl 并挂载到 window)\n * @param id Map 组件的 id\n * @param instance 地图实例\n */\nexport function registerMapInstance(id: string, instance: TMap.Map): void {\n mapInstances.set(id, instance)\n console.log(logPrefix, '[MapContext] 注册地图实例:', id, instance)\n\n // ✅ 方案 F:创建 MapContextImpl 并挂载到 window\n if (typeof window !== 'undefined') {\n // 确保 window 对象存在\n if (!(window as any).__TARO_MAP_CONTEXTS__) {\n (window as any).__TARO_MAP_CONTEXTS__ = new Map()\n }\n\n // ✅ 在这里 new MapContextImpl(有 TMap 类型)\n const contextImpl = new MapContextImpl(instance)\n\n // ✅ 存储 MapContextImpl 实例(不是 TMap.Map 实例)\n ;(window as any).__TARO_MAP_CONTEXTS__.set(id, contextImpl)\n\n console.log(logPrefix, '[MapContext] 挂载 MapContextImpl 到 window:', id)\n }\n}\n\n/**\n * 注销地图实例(同时清理 window)\n * @param id Map 组件的 id\n */\nexport function unregisterMapInstance(id: string): void {\n mapInstances.delete(id)\n console.log(logPrefix, '[MapContext] 注销地图实例:', id)\n\n // ✅ 从 window 清理 MapContextImpl\n if (typeof window !== 'undefined') {\n (window as any).__TARO_MAP_CONTEXTS__?.delete(id)\n console.log(logPrefix, '[MapContext] 从 window 清理 MapContextImpl:', id)\n }\n}\n\n/**\n * 获取地图实例\n * @param id Map 组件的 id\n * @returns 地图实例,如果不存在则返回 undefined\n */\nexport function getMapInstance(id: string): TMap.Map | undefined {\n return mapInstances.get(id)\n}\n\n/**\n * MapContext 实现类\n * 将腾讯地图 API 适配到 Taro MapContext 接口\n */\nexport class MapContextImpl implements TaroMapContext {\n private map: TMap.Map | null\n\n constructor(map: TMap.Map | null) {\n this.map = map\n if (!map) {\n console.warn(logPrefix, '[MapContext] 地图实例为空,部分方法将不可用')\n }\n }\n\n /**\n * 缩放视野包含所有经纬度\n * @supported weapp, tt\n */\n includePoints(option: TaroMapContext.IncludePointsOption): Promise<TaroGeneral.CallbackResult> {\n const handle = new MethodHandler({\n name: 'includePoints',\n success: option?.success,\n fail: option?.fail,\n complete: option?.complete,\n })\n\n if (!this.map) {\n return handle.fail({ errMsg: '地图实例不存在' })\n }\n\n try {\n const { points, padding } = option\n console.log(logPrefix, '[MapContext.includePoints] 开始执行:', { points, padding })\n\n // 创建空的 LatLngBounds\n const bounds = new TMap.LatLngBounds()\n // 转换坐标格式: {latitude, longitude} -> TMap.LatLng 并扩展边界\n points.forEach((p) => {\n const latLng = new TMap.LatLng(p.latitude, p.longitude)\n bounds.extend(latLng)\n })\n console.log(logPrefix, '[MapContext.includePoints] LatLngBounds:', bounds, 'padding:', padding)\n\n // 转换 padding 格式: Taro [top, right, bottom, left] -> TMap {top, right, bottom, left}\n let paddingOption: number | { top: number, right: number, bottom: number, left: number } | undefined\n if (padding) {\n if (Array.isArray(padding)) {\n // padding 是数组格式 [top, right, bottom, left]\n paddingOption = {\n top: padding[0],\n right: padding[1],\n bottom: padding[2],\n left: padding[3],\n }\n } else {\n // padding 是数字格式,直接使用\n paddingOption = padding as number\n }\n }\n\n // 调用地图的 fitBounds 方法\n this.map.fitBounds(bounds, {\n padding: paddingOption,\n })\n\n console.log(logPrefix, '[MapContext.includePoints] 执行成功')\n\n return handle.success({})\n } catch (error: any) {\n console.error(logPrefix, '[MapContext.includePoints] 执行失败:', error)\n return handle.fail({ errMsg: error?.message || String(error) })\n }\n }\n\n /**\n * 获取当前地图中心的经纬度\n * @supported weapp, tt\n */\n getCenterLocation(option?: TaroMapContext.GetCenterLocationOption): Promise<TaroMapContext.GetCenterLocationSuccessCallbackResult> {\n const handle = new MethodHandler({\n name: 'getCenterLocation',\n success: option?.success,\n fail: option?.fail,\n complete: option?.complete,\n })\n\n if (!this.map) {\n return handle.fail({ errMsg: '地图实例不存在' })\n }\n\n try {\n // 调用腾讯地图 API: map.getCenter()\n const center = this.map.getCenter()\n console.log(logPrefix, '[MapContext.getCenterLocation] 执行成功:', center)\n\n return handle.success({\n latitude: center.lat,\n longitude: center.lng,\n })\n } catch (error: any) {\n console.error(logPrefix, '[MapContext.getCenterLocation] 执行失败:', error)\n return handle.fail({ errMsg: error?.message || String(error) })\n }\n }\n\n /**\n * 设置定位点图标\n * @supported weapp, tt\n */\n setLocMarkerIcon(_option: TaroMapContext.SetLocMarkerIconOption): Promise<TaroGeneral.CallbackResult> {\n console.warn(logPrefix, '[MapContext.setLocMarkerIcon] 暂未实现')\n return Promise.reject(new Error('setLocMarkerIcon: 暂未实现'))\n }\n\n /**\n * 将地图中心移置当前定位点\n * @supported weapp, tt\n */\n moveToLocation(option: TaroMapContext.MoveToLocationOption): Promise<TaroGeneral.CallbackResult> {\n const handle = new MethodHandler({\n name: 'moveToLocation',\n success: option?.success,\n fail: option?.fail,\n complete: option?.complete,\n })\n\n if (!this.map) {\n return handle.fail({ errMsg: '地图实例不存在' })\n }\n\n try {\n const { latitude, longitude } = option\n console.log(logPrefix, '[MapContext.moveToLocation] 开始执行:', { latitude, longitude })\n\n // 参数校验\n if (latitude === undefined || longitude === undefined) {\n return handle.fail({ errMsg: 'latitude 和 longitude 参数必须提供' })\n }\n\n // 调用腾讯地图 API: map.panTo()\n const latLng = new TMap.LatLng(latitude, longitude)\n this.map.panTo(latLng, {} as any)\n\n console.log(logPrefix, '[MapContext.moveToLocation] 执行成功')\n return handle.success({})\n } catch (error: any) {\n console.error(logPrefix, '[MapContext.moveToLocation] 执行失败:', error)\n return handle.fail({ errMsg: error?.message || String(error) })\n }\n }\n\n /**\n * 平移marker,带动画\n * @supported weapp, tt\n */\n translateMarker(_option: TaroMapContext.TranslateMarkerOption): Promise<TaroGeneral.CallbackResult> {\n console.warn(logPrefix, '[MapContext.translateMarker] 暂未实现')\n return Promise.reject(new Error('translateMarker: 暂未实现'))\n }\n\n /**\n * 沿指定路径移动 marker\n */\n moveAlong(_object: any): void {\n console.warn(logPrefix, '[MapContext.moveAlong] 暂未实现')\n throw new Error('moveAlong: 暂未实现')\n }\n\n /**\n * 获取当前地图的视野范围\n * @supported weapp, tt\n */\n getRegion(option?: TaroMapContext.GetRegionOption): Promise<TaroMapContext.GetRegionSuccessCallbackResult> {\n const handle = new MethodHandler({\n name: 'getRegion',\n success: option?.success,\n fail: option?.fail,\n complete: option?.complete,\n })\n\n if (!this.map) {\n return handle.fail({ errMsg: '地图实例不存在' })\n }\n\n try {\n // 调用腾讯地图 API: map.getBounds()\n const bounds = this.map.getBounds()\n console.log(logPrefix, '[MapContext.getRegion] 执行成功:', bounds)\n\n const sw = bounds.getSouthWest()\n const ne = bounds.getNorthEast()\n\n return handle.success({\n southwest: {\n latitude: sw.lat,\n longitude: sw.lng,\n },\n northeast: {\n latitude: ne.lat,\n longitude: ne.lng,\n },\n })\n } catch (error: any) {\n console.error(logPrefix, '[MapContext.getRegion] 执行失败:', error)\n return handle.fail({ errMsg: error?.message || String(error) })\n }\n }\n\n /**\n * 获取当前地图的旋转角\n * @supported weapp, tt\n */\n getRotate(option?: TaroMapContext.GetRotateOption): Promise<TaroMapContext.GetRotateSuccessCallbackResult> {\n const handle = new MethodHandler({\n name: 'getRotate',\n success: option?.success,\n fail: option?.fail,\n complete: option?.complete,\n })\n\n if (!this.map) {\n return handle.fail({ errMsg: '地图实例不存在' })\n }\n\n try {\n // 调用腾讯地图 API: map.getRotation()\n const rotate = this.map.getRotation()\n console.log(logPrefix, '[MapContext.getRotate] 执行成功:', rotate)\n\n return handle.success({\n rotate: rotate,\n })\n } catch (error: any) {\n console.error(logPrefix, '[MapContext.getRotate] 执行失败:', error)\n return handle.fail({ errMsg: error?.message || String(error) })\n }\n }\n\n /**\n * 获取当前地图的倾斜角\n * @supported weapp, tt\n */\n getSkew(option?: TaroMapContext.GetSkewOption): Promise<TaroMapContext.GetSkewSuccessCallbackResult> {\n const handle = new MethodHandler({\n name: 'getSkew',\n success: option?.success,\n fail: option?.fail,\n complete: option?.complete,\n })\n\n if (!this.map) {\n return handle.fail({ errMsg: '地图实例不存在' })\n }\n\n try {\n // 调用腾讯地图 API: map.getPitch()\n const skew = this.map.getPitch()\n console.log(logPrefix, '[MapContext.getSkew] 执行成功:', skew)\n\n return handle.success({\n skew: skew,\n })\n } catch (error: any) {\n console.error(logPrefix, '[MapContext.getSkew] 执行失败:', error)\n return handle.fail({ errMsg: error?.message || String(error) })\n }\n }\n\n /**\n * 获取当前地图的缩放级别\n * @supported weapp, tt\n */\n getScale(option?: TaroMapContext.GetScaleOption): Promise<TaroMapContext.GetScaleSuccessCallbackResult> {\n const handle = new MethodHandler({\n name: 'getScale',\n success: option?.success,\n fail: option?.fail,\n complete: option?.complete,\n })\n\n if (!this.map) {\n return handle.fail({ errMsg: '地图实例不存在' })\n }\n\n try {\n // 调用腾讯地图 API: map.getZoom()\n const scale = this.map.getZoom()\n console.log(logPrefix, '[MapContext.getScale] 执行成功:', scale)\n\n return handle.success({\n scale: scale,\n })\n } catch (error: any) {\n console.error(logPrefix, '[MapContext.getScale] 执行失败:', error)\n return handle.fail({ errMsg: error?.message || String(error) })\n }\n }\n\n /**\n * 设置地图中心点偏移\n * @supported weapp, tt\n */\n setCenterOffset(option: TaroMapContext.SetCenterOffsetOption): Promise<TaroGeneral.CallbackResult> {\n const handle = new MethodHandler({\n name: 'setCenterOffset',\n success: option?.success,\n fail: option?.fail,\n complete: option?.complete,\n })\n\n if (!this.map) {\n return handle.fail({ errMsg: '地图实例不存在' })\n }\n\n try {\n const { offset } = option\n console.log(logPrefix, '[MapContext.setCenterOffset] 开始执行:', { offset })\n\n // 转换 offset 格式: Taro [x, y] -> TMap {x, y}\n const offsetOption = {\n x: offset[0],\n y: offset[1],\n }\n\n // 调用腾讯地图 API: map.setOffset()\n this.map.setOffset(offsetOption)\n\n console.log(logPrefix, '[MapContext.setCenterOffset] 执行成功')\n return handle.success({})\n } catch (error: any) {\n console.error(logPrefix, '[MapContext.setCenterOffset] 执行失败:', error)\n return handle.fail({ errMsg: error?.message || String(error) })\n }\n }\n\n /**\n * 移除个性化图层\n * @supported weapp\n */\n removeCustomLayer(option: TaroMapContext.RemoveCustomLayerOption): Promise<TaroGeneral.CallbackResult> {\n console.warn(logPrefix, '[MapContext.removeCustomLayer] 暂未实现', option)\n return Promise.reject(new Error('removeCustomLayer: 暂未实现'))\n }\n\n /**\n * 添加个性化图层\n * @supported weapp\n */\n addCustomLayer(option: TaroMapContext.AddCustomLayerOption): Promise<TaroGeneral.CallbackResult> {\n console.warn(logPrefix, '[MapContext.addCustomLayer] 暂未实现', option)\n return Promise.reject(new Error('addCustomLayer: 暂未实现'))\n }\n\n /**\n * 创建自定义图片图层\n * @supported weapp, tt\n */\n addGroundOverlay(option: TaroMapContext.AddGroundLayerOption): Promise<TaroGeneral.CallbackResult> {\n console.warn(logPrefix, '[MapContext.addGroundOverlay] 暂未实现', option)\n return Promise.reject(new Error('addGroundOverlay: 暂未实现'))\n }\n\n /**\n * 添加可视化图层\n * @supported weapp\n */\n addVisualLayer(option: TaroMapContext.AddVisualLayerOption): Promise<TaroGeneral.CallbackResult> {\n console.warn(logPrefix, '[MapContext.addVisualLayer] 暂未实现', option)\n return Promise.reject(new Error('addVisualLayer: 暂未实现'))\n }\n\n /**\n * 移除可视化图层\n * @supported weapp\n */\n removeVisualLayer(option: TaroMapContext.RemoveVisualLayerOption): Promise<TaroGeneral.CallbackResult> {\n console.warn(logPrefix, '[MapContext.removeVisualLayer] 暂未实现', option)\n return Promise.reject(new Error('removeVisualLayer: 暂未实现'))\n }\n\n /**\n * 添加弧线\n * @supported weapp\n */\n addArc(option: TaroMapContext.AddArcOption): Promise<TaroGeneral.CallbackResult> {\n console.warn(logPrefix, '[MapContext.addArc] 暂未实现', option)\n return Promise.reject(new Error('addArc: 暂未实现'))\n }\n\n /**\n * 删除弧线\n * @supported weapp\n */\n removeArc(option: TaroMapContext.RemoveArcOption): Promise<TaroGeneral.CallbackResult> {\n console.warn(logPrefix, '[MapContext.removeArc] 暂未实现', option)\n return Promise.reject(new Error('removeArc: 暂未实现'))\n }\n\n /**\n * 限制地图的显示范围\n * @supported weapp\n */\n setBoundary(option: TaroMapContext.SetBoundaryOption): Promise<TaroGeneral.CallbackResult> {\n const handle = new MethodHandler({\n name: 'setBoundary',\n success: option?.success,\n fail: option?.fail,\n complete: option?.complete,\n })\n\n if (!this.map) {\n return handle.fail({ errMsg: '地图实例不存在' })\n }\n\n try {\n const { southwest, northeast } = option\n console.log(logPrefix, '[MapContext.setBoundary] 开始执行:', { southwest, northeast })\n\n // 转换坐标格式: {latitude, longitude} -> TMap.LatLng\n const sw = new TMap.LatLng(southwest.latitude, southwest.longitude)\n const ne = new TMap.LatLng(northeast.latitude, northeast.longitude)\n const bounds = new TMap.LatLngBounds(sw, ne)\n\n // 调用腾讯地图 API: map.setBoundary()\n this.map.setBoundary(bounds)\n\n console.log(logPrefix, '[MapContext.setBoundary] 执行成功')\n return handle.success({})\n } catch (error: any) {\n console.error(logPrefix, '[MapContext.setBoundary] 执行失败:', error)\n return handle.fail({ errMsg: error?.message || String(error) })\n }\n }\n\n /**\n * 更新自定义图片图层\n * @supported weapp, tt\n */\n updateGroundOverlay(option: TaroMapContext.UpdateGroundOverlayOption): Promise<TaroGeneral.CallbackResult> {\n console.warn(logPrefix, '[MapContext.updateGroundOverlay] 暂未实现', option)\n return Promise.reject(new Error('updateGroundOverlay: 暂未实现'))\n }\n\n /**\n * 移除自定义图片图层\n * @supported weapp, tt\n */\n removeGroundOverlay(option: TaroMapContext.RemoveGroundOverlayOption): Promise<TaroGeneral.CallbackResult> {\n console.warn(logPrefix, '[MapContext.removeGroundOverlay] 暂未实现', option)\n return Promise.reject(new Error('removeGroundOverlay: 暂未实现'))\n }\n\n /**\n * 获取经纬度对应的屏幕坐标\n * @supported weapp\n */\n toScreenLocation(option: TaroMapContext.ToScreenLocationOption): Promise<TaroGeneral.CallbackResult> {\n const handle = new MethodHandler({\n name: 'toScreenLocation',\n success: option?.success,\n fail: option?.fail,\n complete: option?.complete,\n })\n\n if (!this.map) {\n return handle.fail({ errMsg: '地图实例不存在' })\n }\n\n try {\n const { latitude, longitude } = option\n console.log(logPrefix, '[MapContext.toScreenLocation] 开始执行:', { latitude, longitude })\n\n // 转换坐标格式: {latitude, longitude} -> TMap.LatLng\n const latLng = new TMap.LatLng(latitude, longitude)\n\n // 调用腾讯地图 API: map.projectToContainer()\n const point = this.map.projectToContainer(latLng)\n\n console.log(logPrefix, '[MapContext.toScreenLocation] 执行成功:', point)\n return handle.success({\n x: point.x,\n y: point.y,\n })\n } catch (error: any) {\n console.error(logPrefix, '[MapContext.toScreenLocation] 执行失败:', error)\n return handle.fail({ errMsg: error?.message || String(error) })\n }\n }\n\n /**\n * 获取屏幕上的点对应的经纬度\n * @supported weapp\n */\n fromScreenLocation(option: TaroMapContext.FromScreenLocationOption): Promise<TaroGeneral.CallbackResult> {\n const handle = new MethodHandler({\n name: 'fromScreenLocation',\n success: option?.success,\n fail: option?.fail,\n complete: option?.complete,\n })\n\n if (!this.map) {\n return handle.fail({ errMsg: '地图实例不存在' })\n }\n\n try {\n const { x, y } = option\n console.log(logPrefix, '[MapContext.fromScreenLocation] 开始执行:', { x, y })\n\n // 转换坐标格式: {x, y} -> TMap.Point\n const point = new TMap.Point(x, y)\n\n // 调用腾讯地图 API: map.unprojectFromContainer()\n const latLng = this.map.unprojectFromContainer(point)\n\n console.log(logPrefix, '[MapContext.fromScreenLocation] 执行成功:', latLng)\n return handle.success({\n latitude: latLng.lat,\n longitude: latLng.lng,\n })\n } catch (error: any) {\n console.error(logPrefix, '[MapContext.fromScreenLocation] 执行失败:', error)\n return handle.fail({ errMsg: error?.message || String(error) })\n }\n }\n\n /**\n * 拉起地图APP选择导航\n * @supported weapp\n */\n openMapApp(option: TaroMapContext.OpenMapAppOption): Promise<TaroGeneral.CallbackResult> {\n console.warn(logPrefix, '[MapContext.openMapApp] 暂未实现', option)\n return Promise.reject(new Error('openMapApp: 暂未实现'))\n }\n\n /**\n * 添加 marker\n * @supported weapp\n */\n addMarkers(option: TaroMapContext.AddMarkersOption): Promise<TaroGeneral.CallbackResult> {\n console.warn(logPrefix, '[MapContext.addMarkers] 暂未实现', option)\n return Promise.reject(new Error('addMarkers: 暂未实现'))\n }\n\n /**\n * 移除 marker\n * @supported weapp\n */\n removeMarkers(option: TaroMapContext.RemoveMarkersOption): Promise<TaroGeneral.CallbackResult> {\n console.warn(logPrefix, '[MapContext.removeMarkers] 暂未实现', option)\n return Promise.reject(new Error('removeMarkers: 暂未实现'))\n }\n\n /**\n * 初始化点聚合的配置\n * @supported weapp\n */\n initMarkerCluster(option?: TaroMapContext.InitMarkerClusterOption): Promise<TaroGeneral.CallbackResult> {\n console.warn(logPrefix, '[MapContext.initMarkerCluster] 暂未实现', option)\n return Promise.reject(new Error('initMarkerCluster: 暂未实现'))\n }\n\n /**\n * 监听地图事件\n * @supported weapp\n */\n on(\n event: keyof TaroMapContext.MapEvent,\n callback: (res: TaroMapContext.MapEvent[keyof TaroMapContext.MapEvent]) => void\n ): void {\n console.warn(logPrefix, '[MapContext.on] 暂未实现', event, callback)\n throw new Error('on: 暂未实现')\n }\n}\n\nexport { MapContextImpl as MapContext }\n"],"names":["mapInstances","Map","registerMapInstance","id","instance","set","console","log","logPrefix","window","__TARO_MAP_CONTEXTS__","contextImpl","MapContextImpl","unregisterMapInstance","delete","_a","getMapInstance","get","constructor","map","warn","includePoints","option","handle","MethodHandler","name","success","fail","complete","errMsg","points","padding","bounds","TMap","LatLngBounds","forEach","p","latLng","LatLng","latitude","longitude","extend","paddingOption","Array","isArray","top","right","bottom","left","fitBounds","error","message","String","getCenterLocation","center","getCenter","lat","lng","setLocMarkerIcon","_option","Promise","reject","Error","moveToLocation","undefined","panTo","translateMarker","moveAlong","_object","getRegion","getBounds","sw","getSouthWest","ne","getNorthEast","southwest","northeast","getRotate","rotate","getRotation","getSkew","skew","getPitch","getScale","scale","getZoom","setCenterOffset","offset","offsetOption","x","y","setOffset","removeCustomLayer","addCustomLayer","addGroundOverlay","addVisualLayer","removeVisualLayer","addArc","removeArc","setBoundary","updateGroundOverlay","removeGroundOverlay","toScreenLocation","point","projectToContainer","fromScreenLocation","Point","unprojectFromContainer","openMapApp","addMarkers","removeMarkers","initMarkerCluster","on","event","callback"],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ import { View } from '@tarojs/components';
2
+ import { memo, useRef, useState, useCallback, useEffect } from 'react';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ const MapCustomCallout = /*#__PURE__*/memo(_ref => {
6
+ let {
7
+ map,
8
+ markerId,
9
+ position,
10
+ anchorX,
11
+ anchorY,
12
+ display = 'ALWAYS',
13
+ children,
14
+ onCalloutTap
15
+ } = _ref;
16
+ const calloutRef = useRef(null);
17
+ const [visible] = useState(display === 'ALWAYS');
18
+ /**
19
+ * 更新气泡位置
20
+ */
21
+ const updatePosition = useCallback(() => {
22
+ if (!map || !calloutRef.current) return;
23
+ try {
24
+ const latLng = new TMap.LatLng(position.lat, position.lng);
25
+ const containerPoint = map.projectToContainer(latLng);
26
+ if (!containerPoint) return;
27
+ const x = containerPoint.x + anchorX;
28
+ const y = containerPoint.y + anchorY;
29
+ // 直接设置 style
30
+ calloutRef.current.style.position = 'absolute';
31
+ calloutRef.current.style.left = '0px';
32
+ calloutRef.current.style.top = '0px';
33
+ calloutRef.current.style.transform = `translate(${x}px, ${y}px) translate(-50%, -100%)`;
34
+ calloutRef.current.style.pointerEvents = 'auto';
35
+ calloutRef.current.style.zIndex = '1000';
36
+ calloutRef.current.style.cursor = 'pointer';
37
+ } catch (_a) {
38
+ // 忽略位置更新错误
39
+ }
40
+ }, [map, position, anchorX, anchorY]);
41
+ /**
42
+ * 处理 touchend 事件
43
+ * 对齐小程序默认行为:点击气泡任意位置都触发 onCalloutTap
44
+ * 子元素可以通过 stopPropagation() 阻止事件冒泡,只处理自己的 onClick
45
+ */
46
+ const handleTouchEnd = useCallback(e => {
47
+ const target = e === null || e === void 0 ? void 0 : e.target;
48
+ if (!target) return;
49
+ // 派发 click 事件,让子元素自己的 onClick 处理
50
+ const clickEvent = new MouseEvent('click', {
51
+ bubbles: true,
52
+ cancelable: true,
53
+ view: window
54
+ });
55
+ target.dispatchEvent(clickEvent);
56
+ // 对齐小程序默认行为:点击气泡任意位置都触发 onCalloutTap
57
+ onCalloutTap === null || onCalloutTap === void 0 ? void 0 : onCalloutTap(markerId);
58
+ }, [markerId, onCalloutTap]);
59
+ /**
60
+ * 监听地图变化,实现自动跟随
61
+ */
62
+ useEffect(() => {
63
+ if (!map || !visible) return;
64
+ const events = ['bounds_changed', 'zoom_changed', 'drag', 'rotate'];
65
+ events.forEach(event => map.on(event, updatePosition));
66
+ requestAnimationFrame(() => {
67
+ updatePosition();
68
+ });
69
+ return () => {
70
+ events.forEach(event => map.off(event, updatePosition));
71
+ };
72
+ }, [map, updatePosition, visible]);
73
+ if (!visible) return null;
74
+ return /*#__PURE__*/jsx(View, {
75
+ ref: calloutRef,
76
+ onTouchEnd: handleTouchEnd,
77
+ style: {
78
+ position: 'absolute',
79
+ left: 0,
80
+ top: 0,
81
+ pointerEvents: 'auto',
82
+ zIndex: 1000,
83
+ cursor: 'pointer'
84
+ },
85
+ children: children
86
+ });
87
+ });
88
+ MapCustomCallout.displayName = 'MapCustomCallout';
89
+
90
+ export { MapCustomCallout as default };
91
+ //# sourceMappingURL=MapCustomCallout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapCustomCallout.js","sources":["../../../../src/components/map/MapCustomCallout.tsx"],"sourcesContent":["import { View } from '@tarojs/components'\nimport React, { memo, useCallback, useEffect, useRef, useState } from 'react'\n\nimport type MapTypes from 'tmap-gl-types'\n\ninterface MapCustomCalloutProps {\n map: MapTypes.Map | null\n markerId: number\n position: {\n lat: number\n lng: number\n }\n anchorX: number\n anchorY: number\n display?: 'ALWAYS' | 'BYCLICK'\n children: React.ReactNode\n onCalloutTap?: (markerId: number) => void\n}\n\nconst MapCustomCallout: React.FC<MapCustomCalloutProps> = memo(({\n map,\n markerId,\n position,\n anchorX,\n anchorY,\n display = 'ALWAYS',\n children,\n onCalloutTap,\n}) => {\n const calloutRef = useRef<HTMLDivElement>(null)\n const [visible] = useState(display === 'ALWAYS')\n\n /**\n * 更新气泡位置\n */\n const updatePosition = useCallback(() => {\n if (!map || !calloutRef.current) return\n\n try {\n const latLng = new TMap.LatLng(position.lat, position.lng)\n const containerPoint = map.projectToContainer(latLng)\n\n if (!containerPoint) return\n\n const x = containerPoint.x + anchorX\n const y = containerPoint.y + anchorY\n\n // 直接设置 style\n calloutRef.current.style.position = 'absolute'\n calloutRef.current.style.left = '0px'\n calloutRef.current.style.top = '0px'\n calloutRef.current.style.transform = `translate(${x}px, ${y}px) translate(-50%, -100%)`\n calloutRef.current.style.pointerEvents = 'auto'\n calloutRef.current.style.zIndex = '1000'\n calloutRef.current.style.cursor = 'pointer'\n } catch {\n // 忽略位置更新错误\n }\n }, [map, position, anchorX, anchorY])\n\n /**\n * 处理 touchend 事件\n * 对齐小程序默认行为:点击气泡任意位置都触发 onCalloutTap\n * 子元素可以通过 stopPropagation() 阻止事件冒泡,只处理自己的 onClick\n */\n const handleTouchEnd = useCallback((e: any) => {\n const target = e?.target\n if (!target) return\n\n // 派发 click 事件,让子元素自己的 onClick 处理\n const clickEvent = new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n view: window\n })\n target.dispatchEvent(clickEvent)\n\n // 对齐小程序默认行为:点击气泡任意位置都触发 onCalloutTap\n onCalloutTap?.(markerId)\n }, [markerId, onCalloutTap])\n\n /**\n * 监听地图变化,实现自动跟随\n */\n useEffect(() => {\n if (!map || !visible) return\n\n const events = ['bounds_changed', 'zoom_changed', 'drag', 'rotate'] as const\n events.forEach(event => map.on(event, updatePosition))\n\n requestAnimationFrame(() => {\n updatePosition()\n })\n\n return () => {\n events.forEach(event => map.off(event, updatePosition))\n }\n }, [map, updatePosition, visible])\n\n if (!visible) return null\n\n return (\n <View\n ref={calloutRef}\n onTouchEnd={handleTouchEnd}\n style={{\n position: 'absolute',\n left: 0,\n top: 0,\n pointerEvents: 'auto',\n zIndex: 1000,\n cursor: 'pointer',\n }}\n >\n {children}\n </View>\n )\n})\n\nMapCustomCallout.displayName = 'MapCustomCallout'\n\nexport default MapCustomCallout\n"],"names":["MapCustomCallout","memo","_ref","map","markerId","position","anchorX","anchorY","display","children","onCalloutTap","calloutRef","useRef","visible","useState","updatePosition","useCallback","current","latLng","TMap","LatLng","lat","lng","containerPoint","projectToContainer","x","y","style","left","top","transform","pointerEvents","zIndex","cursor","_a","handleTouchEnd","e","target","clickEvent","MouseEvent","bubbles","cancelable","view","window","dispatchEvent","useEffect","events","forEach","event","on","requestAnimationFrame","off","_jsx","View","ref","onTouchEnd","displayName"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ const logPrefix = '[Taro-H5-Map]';
2
+
3
+ export { logPrefix };
4
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sources":["../../../../src/components/map/common.ts"],"sourcesContent":["const logPrefix = '[Taro-H5-Map]'\n\nexport { logPrefix }\n"],"names":["logPrefix"],"mappings":"AAAMA,MAAAA,SAAS,GAAG;;;;"}
@@ -0,0 +1,34 @@
1
+ import { getMapInstance, MapContextImpl } from './MapContext.js';
2
+
3
+ /**
4
+ * 创建地图上下文 MapContext 对象
5
+ *
6
+ * @deprecated 请使用 Taro.createMapContext 代替
7
+ *
8
+ * 此导出仅用于向后兼容,将在未来版本中移除。
9
+ *
10
+ * 推荐用法:
11
+ * ```tsx
12
+ * import Taro from '@tarojs/taro'
13
+ *
14
+ * const mapCtx = Taro.createMapContext('mapId')
15
+ * ```
16
+ *
17
+ * @param mapId Map 组件的 id
18
+ * @param component 自定义组件实例(暂未使用)
19
+ * @returns MapContext 实例
20
+ */
21
+ function createMapContext(mapId, _component) {
22
+ // 获取地图实例
23
+ const mapInstance = getMapInstance(mapId);
24
+ if (!mapInstance) {
25
+ console.warn('[createMapContext] 找不到 id 为 "' + mapId + '" 的地图实例,' + '请确保:1) Map 组件已正确设置 id 属性;2) 地图已完成初始化');
26
+ // 返回一个空实现,避免运行时错误
27
+ return new MapContextImpl(null);
28
+ }
29
+ // 创建并返回 MapContextImpl 实例
30
+ return new MapContextImpl(mapInstance);
31
+ }
32
+
33
+ export { createMapContext };
34
+ //# sourceMappingURL=createMapContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMapContext.js","sources":["../../../../src/components/map/createMapContext.ts"],"sourcesContent":["import { getMapInstance, MapContextImpl } from './MapContext'\n\n/**\n * 创建地图上下文 MapContext 对象\n *\n * @deprecated 请使用 Taro.createMapContext 代替\n *\n * 此导出仅用于向后兼容,将在未来版本中移除。\n *\n * 推荐用法:\n * ```tsx\n * import Taro from '@tarojs/taro'\n *\n * const mapCtx = Taro.createMapContext('mapId')\n * ```\n *\n * @param mapId Map 组件的 id\n * @param component 自定义组件实例(暂未使用)\n * @returns MapContext 实例\n */\nexport function createMapContext(\n mapId: string,\n _component?: any\n): MapContextImpl {\n // 获取地图实例\n const mapInstance = getMapInstance(mapId)\n\n if (!mapInstance) {\n console.warn(\n '[createMapContext] 找不到 id 为 \"' + mapId + '\" 的地图实例,' +\n '请确保:1) Map 组件已正确设置 id 属性;2) 地图已完成初始化'\n )\n // 返回一个空实现,避免运行时错误\n return new MapContextImpl(null)\n }\n\n // 创建并返回 MapContextImpl 实例\n return new MapContextImpl(mapInstance)\n}\n"],"names":["createMapContext","mapId","_component","mapInstance","getMapInstance","console","warn","MapContextImpl"],"mappings":";;AAEA;;;;;;;;;;;;;;;;;AAiBG;AACa,SAAAA,gBAAgBA,CAC9BC,KAAa,EACbC,UAAgB,EAAA;AAEhB;AACA,EAAA,MAAMC,WAAW,GAAGC,cAAc,CAACH,KAAK,CAAC;EAEzC,IAAI,CAACE,WAAW,EAAE;IAChBE,OAAO,CAACC,IAAI,CACV,+BAA+B,GAAGL,KAAK,GAAG,UAAU,GACpD,sCAAsC,CACvC;AACD;AACA,IAAA,OAAO,IAAIM,cAAc,CAAC,IAAI,CAAC;AACjC;AAEA;AACA,EAAA,OAAO,IAAIA,cAAc,CAACJ,WAAW,CAAC;AACxC;;;;"}
@@ -0,0 +1,50 @@
1
+ import { isFunction } from '@tarojs/shared';
2
+
3
+ class MethodHandler {
4
+ constructor(_ref) {
5
+ let {
6
+ name,
7
+ success,
8
+ fail,
9
+ complete
10
+ } = _ref;
11
+ this.isHandlerError = false;
12
+ this.methodName = name;
13
+ this.__success = success;
14
+ this.__fail = fail;
15
+ this.__complete = complete;
16
+ this.isHandlerError = isFunction(this.__complete) || isFunction(this.__fail);
17
+ }
18
+ success() {
19
+ let res = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
20
+ let promise = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
21
+ if (!res.errMsg) {
22
+ res.errMsg = `${this.methodName}:ok`;
23
+ }
24
+ isFunction(this.__success) && this.__success(res);
25
+ isFunction(this.__complete) && this.__complete(res);
26
+ const {
27
+ resolve = Promise.resolve.bind(Promise)
28
+ } = promise;
29
+ return resolve(res);
30
+ }
31
+ fail() {
32
+ let res = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
33
+ let promise = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
34
+ if (!res.errMsg) {
35
+ res.errMsg = `${this.methodName}:fail`;
36
+ } else {
37
+ res.errMsg = `${this.methodName}:fail ${res.errMsg}`;
38
+ }
39
+ isFunction(this.__fail) && this.__fail(res);
40
+ isFunction(this.__complete) && this.__complete(res);
41
+ const {
42
+ resolve = Promise.resolve.bind(Promise),
43
+ reject = Promise.reject.bind(Promise)
44
+ } = promise;
45
+ return this.isHandlerError ? resolve(res) : reject(res);
46
+ }
47
+ }
48
+
49
+ export { MethodHandler };
50
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sources":["../../../../src/components/map/handler.ts"],"sourcesContent":["import { isFunction } from '@tarojs/shared'\n\ntype TCallback<T = Partial<TaroGeneral.CallbackResult>> = (res: T) => Promise<void> | void\ninterface IMethodParam<T = Partial<TaroGeneral.CallbackResult>> {\n name: string\n success?: TCallback<T & TaroGeneral.CallbackResult>\n fail?: TCallback\n complete?: TCallback\n}\ninterface IMockPromise {\n resolve?: typeof Promise.resolve | TFunc\n reject?: typeof Promise.reject | TFunc\n}\n\nexport class MethodHandler<T = Partial<TaroGeneral.CallbackResult>> {\n methodName: string\n\n protected __success?: TCallback<T>\n protected __fail?: TCallback\n protected __complete?: TCallback\n\n protected isHandlerError = false\n\n constructor ({ name, success, fail, complete }: IMethodParam<T>) {\n this.methodName = name\n this.__success = success\n this.__fail = fail\n this.__complete = complete\n\n this.isHandlerError = isFunction(this.__complete) || isFunction(this.__fail)\n }\n\n success<U = Record<string, unknown>> (res: Partial<T> & Partial<TaroGeneral.CallbackResult> = {}, promise: IMockPromise = {}): Promise<T & U & TaroGeneral.CallbackResult> {\n if (!res.errMsg) {\n res.errMsg = `${this.methodName}:ok`\n }\n isFunction(this.__success) && this.__success(res as T)\n isFunction(this.__complete) && this.__complete(res)\n\n const { resolve = Promise.resolve.bind(Promise) } = promise\n return resolve(res as Required<T & U & TaroGeneral.CallbackResult>)\n }\n\n fail<U = Record<string, unknown>> (res: Partial<T> & Partial<TaroGeneral.CallbackResult> = {}, promise: IMockPromise = {}): Promise<T & U & TaroGeneral.CallbackResult> {\n if (!res.errMsg) {\n res.errMsg = `${this.methodName}:fail`\n } else {\n res.errMsg = `${this.methodName}:fail ${res.errMsg}`\n }\n isFunction(this.__fail) && this.__fail(res)\n isFunction(this.__complete) && this.__complete(res)\n\n const {\n resolve = Promise.resolve.bind(Promise),\n reject = Promise.reject.bind(Promise)\n } = promise\n return this.isHandlerError\n ? resolve(res as Required<T & U & TaroGeneral.CallbackResult>)\n : reject(res)\n }\n}\n\ntype TFunc = (...args: any[]) => any\n"],"names":["MethodHandler","constructor","_ref","name","success","fail","complete","isHandlerError","methodName","__success","__fail","__complete","isFunction","res","arguments","length","undefined","promise","errMsg","resolve","Promise","bind","reject"],"mappings":";;MAcaA,aAAa,CAAA;EASxBC,WAAaA,CAAAC,IAAA,EAAkD;IAAA,IAAlD;MAAEC,IAAI;MAAEC,OAAO;MAAEC,IAAI;AAAEC,MAAAA;AAA2B,KAAA,GAAAJ,IAAA;IAFrD,IAAc,CAAAK,cAAA,GAAG,KAAK;IAG9B,IAAI,CAACC,UAAU,GAAGL,IAAI;IACtB,IAAI,CAACM,SAAS,GAAGL,OAAO;IACxB,IAAI,CAACM,MAAM,GAAGL,IAAI;IAClB,IAAI,CAACM,UAAU,GAAGL,QAAQ;AAE1B,IAAA,IAAI,CAACC,cAAc,GAAGK,UAAU,CAAC,IAAI,CAACD,UAAU,CAAC,IAAIC,UAAU,CAAC,IAAI,CAACF,MAAM,CAAC;AAC9E;AAEAN,EAAAA,OAAOA,GAAqH;AAAA,IAAA,IAAtFS,GAAA,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAwD,EAAE;AAAA,IAAA,IAAEG,8EAAwB,EAAE;AAC1H,IAAA,IAAI,CAACJ,GAAG,CAACK,MAAM,EAAE;AACfL,MAAAA,GAAG,CAACK,MAAM,GAAG,GAAG,IAAI,CAACV,UAAU,CAAK,GAAA,CAAA;AACtC;IACAI,UAAU,CAAC,IAAI,CAACH,SAAS,CAAC,IAAI,IAAI,CAACA,SAAS,CAACI,GAAQ,CAAC;IACtDD,UAAU,CAAC,IAAI,CAACD,UAAU,CAAC,IAAI,IAAI,CAACA,UAAU,CAACE,GAAG,CAAC;IAEnD,MAAM;AAAEM,MAAAA,OAAO,GAAGC,OAAO,CAACD,OAAO,CAACE,IAAI,CAACD,OAAO;AAAG,KAAA,GAAGH,OAAO;IAC3D,OAAOE,OAAO,CAACN,GAAmD,CAAC;AACrE;AAEAR,EAAAA,IAAIA,GAAqH;AAAA,IAAA,IAAtFQ,GAAA,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAwD,EAAE;AAAA,IAAA,IAAEG,8EAAwB,EAAE;AACvH,IAAA,IAAI,CAACJ,GAAG,CAACK,MAAM,EAAE;AACfL,MAAAA,GAAG,CAACK,MAAM,GAAG,GAAG,IAAI,CAACV,UAAU,CAAO,KAAA,CAAA;AACxC,KAAC,MAAM;MACLK,GAAG,CAACK,MAAM,GAAG,CAAG,EAAA,IAAI,CAACV,UAAU,CAASK,MAAAA,EAAAA,GAAG,CAACK,MAAM,CAAE,CAAA;AACtD;IACAN,UAAU,CAAC,IAAI,CAACF,MAAM,CAAC,IAAI,IAAI,CAACA,MAAM,CAACG,GAAG,CAAC;IAC3CD,UAAU,CAAC,IAAI,CAACD,UAAU,CAAC,IAAI,IAAI,CAACA,UAAU,CAACE,GAAG,CAAC;IAEnD,MAAM;MACJM,OAAO,GAAGC,OAAO,CAACD,OAAO,CAACE,IAAI,CAACD,OAAO,CAAC;AACvCE,MAAAA,MAAM,GAAGF,OAAO,CAACE,MAAM,CAACD,IAAI,CAACD,OAAO;AAAC,KACtC,GAAGH,OAAO;AACX,IAAA,OAAO,IAAI,CAACV,cAAc,GACtBY,OAAO,CAACN,GAAmD,CAAC,GAC5DS,MAAM,CAACT,GAAG,CAAC;AACjB;AACD;;;;"}
@@ -0,0 +1,329 @@
1
+ import React__default, { useState, useEffect, Children } from 'react';
2
+ import { TMap, MultiMarker, MultiPolyline } from 'tlbs-map-react';
3
+ import { createForwardRefComponent } from '../../utils/index.js';
4
+ import { logPrefix } from './common.js';
5
+ import { registerMapInstance, unregisterMapInstance } from './MapContext.js';
6
+ import MapCustomCallout from './MapCustomCallout.js';
7
+ import { jsxs, jsx } from 'react/jsx-runtime';
8
+ export { createMapContext } from './createMapContext.js';
9
+
10
+ /* eslint-disable no-console */
11
+ function Map(props) {
12
+ const {
13
+ forwardedRef,
14
+ id,
15
+ className,
16
+ style,
17
+ authKey,
18
+ libraries,
19
+ longitude,
20
+ latitude,
21
+ scale,
22
+ minScale,
23
+ maxScale,
24
+ enableRotate,
25
+ rotate,
26
+ skew,
27
+ markers,
28
+ polyline,
29
+ onTap,
30
+ onAuthSuccess,
31
+ onError
32
+ } = props;
33
+ // eslint-disable-next-line no-console
34
+ console.log(logPrefix, 'props', props);
35
+ /** ************************处理 style********************** */
36
+ const styleObj = typeof style === 'string' || style === undefined ? {} : style;
37
+ /** ************************处理 marker********************** */
38
+ const normalizedMarkers = markers !== null && markers !== void 0 ? markers : [];
39
+ const markerStyles = {};
40
+ const markerGeometries = [];
41
+ normalizedMarkers.forEach((m, index) => {
42
+ var _a;
43
+ const markerId = String((_a = m.id) !== null && _a !== void 0 ? _a : index);
44
+ const styleId = `marker-${markerId}`;
45
+ // Taro: iconPath (string);tlbs-map-react: styles 中指定图标
46
+ // Taro: width, height (number|string);tlbs-map-react: width, height
47
+ // Taro: rotate (number);tlbs-map-react: rotation
48
+ // Taro: alpha (number 0-1);tlbs-map-react: opacity (0-1)
49
+ // Taro: zIndex (number);tlbs-map-react: zIndex
50
+ // 解析宽高,支持数字和字符串(如 '20px')
51
+ const parseSize = size => {
52
+ if (typeof size === 'number') return size;
53
+ if (typeof size === 'string') {
54
+ const parsed = parseInt(size, 10);
55
+ return isNaN(parsed) ? 20 : parsed;
56
+ }
57
+ return 20; // 默认宽度
58
+ };
59
+ const markerWidth = parseSize(m.width);
60
+ const markerHeight = parseSize(m.height);
61
+ // 宽高为 0 时跳过渲染(隐藏 marker,仅保留气泡)
62
+ if (markerWidth === 0 || markerHeight === 0) {
63
+ return;
64
+ }
65
+ markerStyles[styleId] = Object.assign(Object.assign(Object.assign(Object.assign({
66
+ width: markerWidth,
67
+ height: markerHeight,
68
+ anchor: {
69
+ x: markerWidth / 2,
70
+ y: markerHeight
71
+ }
72
+ }, m.iconPath && {
73
+ src: m.iconPath
74
+ }), typeof m.rotate === 'number' && {
75
+ rotation: m.rotate
76
+ }), typeof m.alpha === 'number' && {
77
+ opacity: m.alpha
78
+ }), typeof m.zIndex === 'number' && {
79
+ zIndex: m.zIndex
80
+ });
81
+ markerGeometries.push({
82
+ id: markerId,
83
+ styleId,
84
+ position: {
85
+ lat: m.latitude,
86
+ lng: m.longitude
87
+ }
88
+ });
89
+ });
90
+ /** ************************处理 polyline********************** */
91
+ const normalizedPolylines = polyline !== null && polyline !== void 0 ? polyline : [];
92
+ const polylineStyles = {};
93
+ const polylineGeometries = [];
94
+ normalizedPolylines.forEach((line, lineIndex) => {
95
+ var _a;
96
+ if (!line.points || line.points.length === 0) return;
97
+ const styleId = `polyline-${lineIndex}`;
98
+ // Taro: color (hex);腾讯地图: color
99
+ // Taro: width (number);腾讯地图: width
100
+ // Taro: dottedLine (boolean);腾讯地图: dashArray ([10,10]虚线, [0,0]实线)
101
+ polylineStyles[styleId] = {
102
+ color: line.color || '#3777FF',
103
+ width: Math.round((_a = line.width) !== null && _a !== void 0 ? _a : 3),
104
+ // 取整,tlbs-map-react 要求 width 为整数
105
+ // 虚线:[10, 10] 表示10像素实线 + 10像素空白;实线:[0, 0]
106
+ dashArray: line.dottedLine ? [10, 10] : [0, 0]
107
+ };
108
+ // Taro: points 是 {latitude, longitude}[] 数组
109
+ // tlbs-map-react: geometries 需要路径点数组
110
+ polylineGeometries.push({
111
+ id: String(lineIndex),
112
+ styleId,
113
+ paths: line.points.map(point => ({
114
+ lat: point.latitude,
115
+ lng: point.longitude
116
+ }))
117
+ });
118
+ });
119
+ /** ************************适配options参数********************** */
120
+ const hasCenter = typeof latitude === 'number' && typeof longitude === 'number';
121
+ const mergedOptions = Object.assign(Object.assign(Object.assign(Object.assign({}, hasCenter ? {
122
+ center: {
123
+ lat: latitude,
124
+ lng: longitude
125
+ }
126
+ } : {}), {
127
+ zoom: scale !== null && scale !== void 0 ? scale : 13,
128
+ minZoom: minScale !== null && minScale !== void 0 ? minScale : 3,
129
+ maxZoom: maxScale !== null && maxScale !== void 0 ? maxScale : 20,
130
+ rotatable: enableRotate !== null && enableRotate !== void 0 ? enableRotate : false
131
+ }), typeof rotate === 'number' && {
132
+ rotation: rotate
133
+ }), typeof skew === 'number' && {
134
+ pitch: skew
135
+ });
136
+ /** ************************处理事件********************** */
137
+ // Taro: onTap;腾讯地图: click
138
+ // 腾讯地图事件返回: MapEvent { latLng: LatLng, point: {x, y}, type, target, originalEvent }
139
+ // Taro 事件格式: BaseEventOrig { type, timeStamp, target, currentTarget, detail, ... }
140
+ const handleMapClick = e => {
141
+ console.log(logPrefix, 'source click e:', e);
142
+ if (typeof onTap === 'function') {
143
+ onTap({
144
+ type: e.type,
145
+ timeStamp: Date.now(),
146
+ target: {
147
+ id: id || '',
148
+ tagName: 'map',
149
+ dataset: {}
150
+ },
151
+ currentTarget: {
152
+ id: id || '',
153
+ tagName: 'map',
154
+ dataset: {}
155
+ },
156
+ detail: {
157
+ latitude: e.latLng.lat,
158
+ longitude: e.latLng.lng
159
+ },
160
+ preventDefault: () => {},
161
+ stopPropagation: () => {}
162
+ });
163
+ }
164
+ };
165
+ // 存储地图实例,用于 H5 端自定义气泡
166
+ const [mapInstance, setMapInstance] = useState(null);
167
+ // 地图初始化成功
168
+ const handleMapInited = instance => {
169
+ console.log(logPrefix, '地图初始化成功', instance);
170
+ setMapInstance(instance);
171
+ // 注册地图实例到全局存储
172
+ if (id) {
173
+ registerMapInstance(id, instance);
174
+ console.log(logPrefix, '已注册地图实例到 MapContext, id:', id);
175
+ }
176
+ let settled = false;
177
+ instance.on('tilesloaded', _res => {
178
+ // TODO: 临时先这么简单处理鉴权成功
179
+ if (!settled && typeof onAuthSuccess === 'function') {
180
+ settled = true;
181
+ onAuthSuccess({
182
+ type: 'authsuccess',
183
+ timeStamp: Date.now(),
184
+ target: {
185
+ id: id || '',
186
+ tagName: 'map',
187
+ dataset: {}
188
+ },
189
+ currentTarget: {
190
+ id: id || '',
191
+ tagName: 'map',
192
+ dataset: {}
193
+ },
194
+ detail: {
195
+ errCode: 0,
196
+ errMsg: 'ok'
197
+ },
198
+ preventDefault: () => {},
199
+ stopPropagation: () => {}
200
+ });
201
+ }
202
+ });
203
+ setTimeout(() => {
204
+ if (!settled && typeof onError === 'function') {
205
+ settled = true;
206
+ onError({
207
+ type: 'error',
208
+ timeStamp: Date.now(),
209
+ target: {
210
+ id: id || '',
211
+ tagName: 'map',
212
+ dataset: {}
213
+ },
214
+ currentTarget: {
215
+ id: id || '',
216
+ tagName: 'map',
217
+ dataset: {}
218
+ },
219
+ detail: {
220
+ errCode: 1001,
221
+ errMsg: 'timeout'
222
+ },
223
+ preventDefault: () => {},
224
+ stopPropagation: () => {}
225
+ });
226
+ }
227
+ }, 3000);
228
+ };
229
+ // 组件卸载时清理地图实例
230
+ useEffect(() => {
231
+ return () => {
232
+ if (id) {
233
+ unregisterMapInstance(id);
234
+ console.log(logPrefix, '已注销地图实例, id:', id);
235
+ }
236
+ };
237
+ }, [id]);
238
+ return /*#__PURE__*/jsxs(TMap, {
239
+ id: id,
240
+ ref: forwardedRef,
241
+ className: className,
242
+ style: styleObj,
243
+ apiKey: authKey !== null && authKey !== void 0 ? authKey : '',
244
+ libraries: libraries,
245
+ options: mergedOptions,
246
+ onClick: handleMapClick,
247
+ onMapInited: handleMapInited,
248
+ children: [normalizedMarkers.length > 0 ? /*#__PURE__*/jsx(MultiMarker, {
249
+ id: "taro-markers",
250
+ styles: markerStyles,
251
+ geometries: markerGeometries
252
+ }) : null, polylineGeometries.length > 0 ? /*#__PURE__*/jsx(MultiPolyline, {
253
+ id: "taro-polylines",
254
+ styles: polylineStyles,
255
+ geometries: polylineGeometries
256
+ }) : null, process.env.TARO_ENV === 'h5' ? renderH5CustomCallouts() : props.children]
257
+ });
258
+ /**
259
+ * H5 端渲染自定义气泡
260
+ * 拦截 slot="callout" 的 CoverView,转换为自定义 Overlay
261
+ */
262
+ function renderH5CustomCallouts() {
263
+ if (!mapInstance) return null;
264
+ // 1. 遍历 props.children,找到 slot="callout" 的 CoverView
265
+ const childrenArray = Children.toArray(props.children);
266
+ const calloutSlot = childrenArray.find(child => {
267
+ var _a;
268
+ return /*#__PURE__*/React__default.isValidElement(child) && ((_a = child.props) === null || _a === void 0 ? void 0 : _a.slot) === 'callout';
269
+ });
270
+ if (!calloutSlot || ! /*#__PURE__*/React__default.isValidElement(calloutSlot)) {
271
+ return null;
272
+ }
273
+ // 2. 遍历内层的 CoverView,提取 markerId 和内容
274
+ const innerCoverViews = Children.toArray(calloutSlot.props.children);
275
+ return innerCoverViews.map(child => {
276
+ var _a, _b, _c, _d, _e, _f, _g;
277
+ if (! /*#__PURE__*/React__default.isValidElement(child)) return null;
278
+ const markerId = (_a = child.props) === null || _a === void 0 ? void 0 : _a.markerId;
279
+ if (!markerId) return null;
280
+ // 3. 找到对应的 marker 信息
281
+ const marker = normalizedMarkers.find(m => m.id === markerId);
282
+ if (!marker) {
283
+ console.warn(logPrefix, `未找到 markerId=${markerId} 对应的 marker`);
284
+ return null;
285
+ }
286
+ // 4. 渲染自定义气泡
287
+ return /*#__PURE__*/jsx(MapCustomCallout, {
288
+ map: mapInstance,
289
+ markerId: markerId,
290
+ position: {
291
+ lat: marker.latitude,
292
+ lng: marker.longitude
293
+ },
294
+ anchorX: (_c = (_b = marker.customCallout) === null || _b === void 0 ? void 0 : _b.anchorX) !== null && _c !== void 0 ? _c : 0,
295
+ anchorY: (_e = (_d = marker.customCallout) === null || _d === void 0 ? void 0 : _d.anchorY) !== null && _e !== void 0 ? _e : 0,
296
+ display: (_g = (_f = marker.customCallout) === null || _f === void 0 ? void 0 : _f.display) !== null && _g !== void 0 ? _g : 'ALWAYS',
297
+ onCalloutTap: id => {
298
+ // 触发 onCalloutTap 事件
299
+ if (typeof props.onCalloutTap === 'function') {
300
+ props.onCalloutTap({
301
+ type: 'callouttap',
302
+ timeStamp: Date.now(),
303
+ target: {
304
+ id: String(id) || '',
305
+ tagName: 'callout',
306
+ dataset: {}
307
+ },
308
+ currentTarget: {
309
+ id: String(id) || '',
310
+ tagName: 'callout',
311
+ dataset: {}
312
+ },
313
+ detail: {
314
+ markerId: id
315
+ },
316
+ preventDefault: () => {},
317
+ stopPropagation: () => {}
318
+ });
319
+ }
320
+ },
321
+ children: child.props.children
322
+ }, markerId);
323
+ });
324
+ }
325
+ }
326
+ var index = createForwardRefComponent(Map);
327
+
328
+ export { index as default };
329
+ //# sourceMappingURL=index.js.map