@tarojs/components-react 4.1.12-beta.33 → 4.1.12-beta.35

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/map/index.tsx"],"sourcesContent":["/* eslint-disable no-console */\nimport React, { Children, useEffect, useState } from 'react'\nimport { MultiMarker, MultiPolyline, TMap } from 'tlbs-map-react'\n\nimport { createForwardRefComponent } from '../../utils'\nimport { logPrefix } from './common'\nimport { registerMapInstance, unregisterMapInstance } from './MapContext'\nimport MapCustomCallout from './MapCustomCallout'\n\nimport type { MapProps as TaroMapProps } from '@tarojs/components'\nimport type MapTypes from 'tmap-gl-types'\n\nexport interface MapProps extends Omit<TaroMapProps, 'onError'> {\n forwardedRef?: React.MutableRefObject<any>\n authKey?: string\n onError?: (e: any) => void\n}\n\nfunction Map (props: MapProps) {\n const {\n forwardedRef,\n id,\n className,\n style,\n authKey,\n longitude,\n latitude,\n scale,\n minScale,\n maxScale,\n enableRotate,\n markers,\n polyline,\n onTap,\n onAuthSuccess,\n onError,\n } = props\n // eslint-disable-next-line no-console\n console.log(logPrefix, 'props', props)\n\n /** ************************处理 style********************** */\n const styleObj = typeof style === 'string' || style === undefined ? {} : (style as Record<string, string>)\n\n /** ************************处理 marker********************** */\n const normalizedMarkers = markers ?? []\n const markerStyles: Record<string, any> = {}\n const markerGeometries: any[] = []\n\n normalizedMarkers.forEach((m, index) => {\n const markerId = String(m.id ?? index)\n const styleId = `marker-${markerId}`\n\n // Taro: iconPath (string);tlbs-map-react: styles 中指定图标\n // Taro: width, height (number|string);tlbs-map-react: width, height\n // Taro: rotate (number);tlbs-map-react: rotation\n // Taro: alpha (number 0-1);tlbs-map-react: opacity (0-1)\n // Taro: zIndex (number);tlbs-map-react: zIndex\n\n // 解析宽高,支持数字和字符串(如 '20px')\n const parseSize = (size: number | string | undefined): number => {\n if (typeof size === 'number') return size\n if (typeof size === 'string') {\n const parsed = parseInt(size, 10)\n return isNaN(parsed) ? 20 : parsed\n }\n return 20 // 默认宽度\n }\n\n const markerWidth = parseSize(m.width)\n const markerHeight = parseSize(m.height)\n\n // 宽高为 0 时跳过渲染(隐藏 marker,仅保留气泡)\n if (markerWidth === 0 || markerHeight === 0) {\n return\n }\n\n markerStyles[styleId] = {\n width: markerWidth,\n height: markerHeight,\n anchor: { x: markerWidth / 2, y: markerHeight }, // 默认底部中心为锚点\n ...(m.iconPath && { src: m.iconPath }),\n ...(typeof m.rotate === 'number' && { rotation: m.rotate }),\n ...(typeof m.alpha === 'number' && { opacity: m.alpha }),\n ...(typeof m.zIndex === 'number' && { zIndex: m.zIndex }),\n }\n\n markerGeometries.push({\n id: markerId,\n styleId,\n position: { lat: m.latitude, lng: m.longitude },\n })\n })\n\n /** ************************处理 polyline********************** */\n const normalizedPolylines = polyline ?? []\n const polylineStyles: Record<string, any> = {}\n const polylineGeometries: any[] = []\n\n normalizedPolylines.forEach((line, lineIndex) => {\n if (!line.points || line.points.length === 0) return\n\n const styleId = `polyline-${lineIndex}`\n\n // Taro: color (hex);腾讯地图: color\n // Taro: width (number);腾讯地图: width\n // Taro: dottedLine (boolean);腾讯地图: dashArray ([10,10]虚线, [0,0]实线)\n polylineStyles[styleId] = {\n color: line.color || '#3777FF',\n width: Math.round(line.width ?? 3), // 取整,tlbs-map-react 要求 width 为整数\n // 虚线:[10, 10] 表示10像素实线 + 10像素空白;实线:[0, 0]\n dashArray: line.dottedLine ? [10, 10] : [0, 0],\n }\n\n // Taro: points 是 {latitude, longitude}[] 数组\n // tlbs-map-react: geometries 需要路径点数组\n polylineGeometries.push({\n id: String(lineIndex),\n styleId,\n paths: line.points.map((point) => ({\n lat: point.latitude,\n lng: point.longitude,\n })),\n })\n })\n\n /** ************************适配options参数********************** */\n const hasCenter = typeof latitude === 'number' && typeof longitude === 'number'\n const mergedOptions = {\n ...(hasCenter ? { center: { lat: latitude, lng: longitude } } : {}),\n zoom: scale ?? 13,\n minZoom: minScale ?? 3,\n maxZoom: maxScale ?? 20,\n rotatable: enableRotate ?? false, // Taro: enableRotate;tlbs-map-react: options.rotatable\n }\n\n /** ************************处理事件********************** */\n // Taro: onTap;腾讯地图: click\n // 腾讯地图事件返回: MapEvent { latLng: LatLng, point: {x, y}, type, target, originalEvent }\n // Taro 事件格式: BaseEventOrig { type, timeStamp, target, currentTarget, detail, ... }\n const handleMapClick = (e: MapTypes.MapEvent) => {\n console.log(logPrefix, 'source click e:', e)\n if (typeof onTap === 'function') {\n onTap({\n type: e.type,\n timeStamp: Date.now(),\n target: {\n id: id || '',\n tagName: 'map',\n dataset: {},\n },\n currentTarget: {\n id: id || '',\n tagName: 'map',\n dataset: {},\n },\n detail: {\n latitude: e.latLng.lat,\n longitude: e.latLng.lng,\n },\n preventDefault: () => {},\n stopPropagation: () => {},\n })\n }\n }\n\n // 存储地图实例,用于 H5 端自定义气泡\n const [mapInstance, setMapInstance] = useState<MapTypes.Map | null>(null)\n\n // 地图初始化成功\n const handleMapInited = (instance: MapTypes.Map) => {\n console.log(logPrefix, '地图初始化成功', instance)\n setMapInstance(instance)\n\n // 注册地图实例到全局存储\n if (id) {\n registerMapInstance(id, instance)\n console.log(logPrefix, '已注册地图实例到 MapContext, id:', id)\n }\n\n let settled = false\n instance.on('tilesloaded', (_res) => { /** 瓦片加载完成,地图真正可用 */\n // TODO: 临时先这么简单处理鉴权成功\n if (!settled && typeof onAuthSuccess === 'function') {\n settled = true\n onAuthSuccess({\n type: 'authsuccess',\n timeStamp: Date.now(),\n target: {\n id: id || '',\n tagName: 'map',\n dataset: {},\n },\n currentTarget: {\n id: id || '',\n tagName: 'map',\n dataset: {},\n },\n detail: {\n errCode: 0,\n errMsg: 'ok',\n },\n preventDefault: () => {},\n stopPropagation: () => {},\n })\n }\n })\n setTimeout(() => {\n if (!settled && typeof onError === 'function') {\n settled = true\n onError({\n type: 'error',\n timeStamp: Date.now(),\n target: {\n id: id || '',\n tagName: 'map',\n dataset: {},\n },\n currentTarget: {\n id: id || '',\n tagName: 'map',\n dataset: {},\n },\n detail: {\n errCode: 1001,\n errMsg: 'timeout',\n },\n preventDefault: () => {},\n stopPropagation: () => {},\n })\n }\n }, 3000)\n }\n\n // 组件卸载时清理地图实例\n useEffect(() => {\n return () => {\n if (id) {\n unregisterMapInstance(id)\n console.log(logPrefix, '已注销地图实例, id:', id)\n }\n }\n }, [id])\n\n return (\n <TMap\n id={id}\n ref={forwardedRef}\n className={className}\n style={styleObj}\n apiKey={authKey ?? ''}\n options={mergedOptions}\n onClick={handleMapClick}\n onMapInited={handleMapInited}\n >\n {normalizedMarkers.length > 0 ? (\n <MultiMarker id=\"taro-markers\" styles={markerStyles} geometries={markerGeometries} />\n ) : null}\n {polylineGeometries.length > 0 ? (\n <MultiPolyline id=\"taro-polylines\" styles={polylineStyles} geometries={polylineGeometries} />\n ) : null}\n\n {/* H5 端:自动处理 slot=\"callout\" 的 CoverView */}\n {process.env.TARO_ENV === 'h5' ? renderH5CustomCallouts() : props.children}\n </TMap>\n )\n\n /**\n * H5 端渲染自定义气泡\n * 拦截 slot=\"callout\" 的 CoverView,转换为自定义 Overlay\n */\n function renderH5CustomCallouts() {\n if (!mapInstance) return null\n\n // 1. 遍历 props.children,找到 slot=\"callout\" 的 CoverView\n const childrenArray = Children.toArray(props.children)\n const calloutSlot = childrenArray.find((child: any) =>\n React.isValidElement(child) && child.props?.slot === 'callout'\n )\n\n if (!calloutSlot || !React.isValidElement(calloutSlot)) {\n return null\n }\n\n // 2. 遍历内层的 CoverView,提取 markerId 和内容\n const innerCoverViews = Children.toArray(calloutSlot.props.children)\n\n return innerCoverViews.map((child: any) => {\n if (!React.isValidElement(child)) return null\n\n const markerId = child.props?.markerId\n if (!markerId) return null\n\n // 3. 找到对应的 marker 信息\n const marker = normalizedMarkers.find((m: any) => m.id === markerId)\n if (!marker) {\n console.warn(logPrefix, `未找到 markerId=${markerId} 对应的 marker`)\n return null\n }\n\n // 4. 渲染自定义气泡\n return (\n <MapCustomCallout\n key={markerId}\n map={mapInstance}\n markerId={markerId}\n position={{ lat: marker.latitude, lng: marker.longitude }}\n anchorX={marker.customCallout?.anchorX ?? 0}\n anchorY={marker.customCallout?.anchorY ?? 0}\n display={marker.customCallout?.display ?? 'ALWAYS'}\n onCalloutTap={(id) => {\n // 触发 onCalloutTap 事件\n if (typeof props.onCalloutTap === 'function') {\n props.onCalloutTap({\n type: 'callouttap',\n timeStamp: Date.now(),\n target: {\n id: String(id) || '',\n tagName: 'callout',\n dataset: {},\n },\n currentTarget: {\n id: String(id) || '',\n tagName: 'callout',\n dataset: {},\n },\n detail: { markerId: id },\n preventDefault: () => {},\n stopPropagation: () => {},\n })\n }\n }}\n >\n {child.props.children}\n </MapCustomCallout>\n )\n })\n }\n}\n\nexport default createForwardRefComponent(Map)\n\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 */\nexport { createMapContext } from './createMapContext'\n"],"names":["Map","props","forwardedRef","id","className","style","authKey","longitude","latitude","scale","minScale","maxScale","enableRotate","markers","polyline","onTap","onAuthSuccess","onError","console","log","logPrefix","styleObj","undefined","normalizedMarkers","markerStyles","markerGeometries","forEach","m","index","markerId","String","_a","styleId","parseSize","size","parsed","parseInt","isNaN","markerWidth","width","markerHeight","height","anchor","x","y","iconPath","src","rotate","rotation","alpha","opacity","zIndex","push","position","lat","lng","normalizedPolylines","polylineStyles","polylineGeometries","line","lineIndex","points","length","color","Math","round","dashArray","dottedLine","paths","map","point","hasCenter","mergedOptions","Object","assign","center","zoom","minZoom","maxZoom","rotatable","handleMapClick","e","type","timeStamp","Date","now","target","tagName","dataset","currentTarget","detail","latLng","preventDefault","stopPropagation","mapInstance","setMapInstance","useState","handleMapInited","instance","registerMapInstance","settled","on","_res","errCode","errMsg","setTimeout","useEffect","unregisterMapInstance","_jsxs","TMap","ref","apiKey","options","onClick","onMapInited","children","_jsx","MultiMarker","styles","geometries","MultiPolyline","process","env","TARO_ENV","renderH5CustomCallouts","childrenArray","Children","toArray","calloutSlot","find","child","React","isValidElement","slot","innerCoverViews","marker","warn","MapCustomCallout","anchorX","_c","_b","customCallout","anchorY","_e","_d","display","_g","_f","onCalloutTap","createForwardRefComponent"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/map/index.tsx"],"sourcesContent":["/* eslint-disable no-console */\nimport React, { Children, useEffect, useState } from 'react'\nimport { MultiMarker, MultiPolyline, TMap } from 'tlbs-map-react'\n\nimport { createForwardRefComponent } from '../../utils'\nimport { logPrefix } from './common'\nimport { registerMapInstance, unregisterMapInstance } from './MapContext'\nimport MapCustomCallout from './MapCustomCallout'\n\nimport type { MapProps as TaroMapProps } from '@tarojs/components'\nimport type MapTypes from 'tmap-gl-types'\n\nexport interface MapProps extends Omit<TaroMapProps, 'onError'> {\n forwardedRef?: React.MutableRefObject<any>\n authKey?: string\n onError?: (e: any) => void\n}\n\nfunction Map (props: MapProps) {\n const {\n forwardedRef,\n id,\n className,\n style,\n authKey,\n longitude,\n latitude,\n scale,\n minScale,\n maxScale,\n enableRotate,\n rotate,\n skew,\n markers,\n polyline,\n onTap,\n onAuthSuccess,\n onError,\n } = props\n // eslint-disable-next-line no-console\n console.log(logPrefix, 'props', props)\n\n /** ************************处理 style********************** */\n const styleObj = typeof style === 'string' || style === undefined ? {} : (style as Record<string, string>)\n\n /** ************************处理 marker********************** */\n const normalizedMarkers = markers ?? []\n const markerStyles: Record<string, any> = {}\n const markerGeometries: any[] = []\n\n normalizedMarkers.forEach((m, index) => {\n const markerId = String(m.id ?? index)\n const styleId = `marker-${markerId}`\n\n // Taro: iconPath (string);tlbs-map-react: styles 中指定图标\n // Taro: width, height (number|string);tlbs-map-react: width, height\n // Taro: rotate (number);tlbs-map-react: rotation\n // Taro: alpha (number 0-1);tlbs-map-react: opacity (0-1)\n // Taro: zIndex (number);tlbs-map-react: zIndex\n\n // 解析宽高,支持数字和字符串(如 '20px')\n const parseSize = (size: number | string | undefined): number => {\n if (typeof size === 'number') return size\n if (typeof size === 'string') {\n const parsed = parseInt(size, 10)\n return isNaN(parsed) ? 20 : parsed\n }\n return 20 // 默认宽度\n }\n\n const markerWidth = parseSize(m.width)\n const markerHeight = parseSize(m.height)\n\n // 宽高为 0 时跳过渲染(隐藏 marker,仅保留气泡)\n if (markerWidth === 0 || markerHeight === 0) {\n return\n }\n\n markerStyles[styleId] = {\n width: markerWidth,\n height: markerHeight,\n anchor: { x: markerWidth / 2, y: markerHeight }, // 默认底部中心为锚点\n ...(m.iconPath && { src: m.iconPath }),\n ...(typeof m.rotate === 'number' && { rotation: m.rotate }),\n ...(typeof m.alpha === 'number' && { opacity: m.alpha }),\n ...(typeof m.zIndex === 'number' && { zIndex: m.zIndex }),\n }\n\n markerGeometries.push({\n id: markerId,\n styleId,\n position: { lat: m.latitude, lng: m.longitude },\n })\n })\n\n /** ************************处理 polyline********************** */\n const normalizedPolylines = polyline ?? []\n const polylineStyles: Record<string, any> = {}\n const polylineGeometries: any[] = []\n\n normalizedPolylines.forEach((line, lineIndex) => {\n if (!line.points || line.points.length === 0) return\n\n const styleId = `polyline-${lineIndex}`\n\n // Taro: color (hex);腾讯地图: color\n // Taro: width (number);腾讯地图: width\n // Taro: dottedLine (boolean);腾讯地图: dashArray ([10,10]虚线, [0,0]实线)\n polylineStyles[styleId] = {\n color: line.color || '#3777FF',\n width: Math.round(line.width ?? 3), // 取整,tlbs-map-react 要求 width 为整数\n // 虚线:[10, 10] 表示10像素实线 + 10像素空白;实线:[0, 0]\n dashArray: line.dottedLine ? [10, 10] : [0, 0],\n }\n\n // Taro: points 是 {latitude, longitude}[] 数组\n // tlbs-map-react: geometries 需要路径点数组\n polylineGeometries.push({\n id: String(lineIndex),\n styleId,\n paths: line.points.map((point) => ({\n lat: point.latitude,\n lng: point.longitude,\n })),\n })\n })\n\n /** ************************适配options参数********************** */\n const hasCenter = typeof latitude === 'number' && typeof longitude === 'number'\n const mergedOptions = {\n ...(hasCenter ? { center: { lat: latitude, lng: longitude } } : {}),\n zoom: scale ?? 13,\n minZoom: minScale ?? 3,\n maxZoom: maxScale ?? 20,\n rotatable: enableRotate ?? false, // Taro: enableRotate;tlbs-map-react: options.rotatable\n ...(typeof rotate === 'number' && { rotation: rotate }), // Taro: rotate;tlbs-map-react: options.rotation\n ...(typeof skew === 'number' && { pitch: skew }), // Taro: skew;tlbs-map-react: options.pitch\n }\n\n /** ************************处理事件********************** */\n // Taro: onTap;腾讯地图: click\n // 腾讯地图事件返回: MapEvent { latLng: LatLng, point: {x, y}, type, target, originalEvent }\n // Taro 事件格式: BaseEventOrig { type, timeStamp, target, currentTarget, detail, ... }\n const handleMapClick = (e: MapTypes.MapEvent) => {\n console.log(logPrefix, 'source click e:', e)\n if (typeof onTap === 'function') {\n onTap({\n type: e.type,\n timeStamp: Date.now(),\n target: {\n id: id || '',\n tagName: 'map',\n dataset: {},\n },\n currentTarget: {\n id: id || '',\n tagName: 'map',\n dataset: {},\n },\n detail: {\n latitude: e.latLng.lat,\n longitude: e.latLng.lng,\n },\n preventDefault: () => {},\n stopPropagation: () => {},\n })\n }\n }\n\n // 存储地图实例,用于 H5 端自定义气泡\n const [mapInstance, setMapInstance] = useState<MapTypes.Map | null>(null)\n\n // 地图初始化成功\n const handleMapInited = (instance: MapTypes.Map) => {\n console.log(logPrefix, '地图初始化成功', instance)\n setMapInstance(instance)\n\n // 注册地图实例到全局存储\n if (id) {\n registerMapInstance(id, instance)\n console.log(logPrefix, '已注册地图实例到 MapContext, id:', id)\n }\n\n let settled = false\n instance.on('tilesloaded', (_res) => { /** 瓦片加载完成,地图真正可用 */\n // TODO: 临时先这么简单处理鉴权成功\n if (!settled && typeof onAuthSuccess === 'function') {\n settled = true\n onAuthSuccess({\n type: 'authsuccess',\n timeStamp: Date.now(),\n target: {\n id: id || '',\n tagName: 'map',\n dataset: {},\n },\n currentTarget: {\n id: id || '',\n tagName: 'map',\n dataset: {},\n },\n detail: {\n errCode: 0,\n errMsg: 'ok',\n },\n preventDefault: () => {},\n stopPropagation: () => {},\n })\n }\n })\n setTimeout(() => {\n if (!settled && typeof onError === 'function') {\n settled = true\n onError({\n type: 'error',\n timeStamp: Date.now(),\n target: {\n id: id || '',\n tagName: 'map',\n dataset: {},\n },\n currentTarget: {\n id: id || '',\n tagName: 'map',\n dataset: {},\n },\n detail: {\n errCode: 1001,\n errMsg: 'timeout',\n },\n preventDefault: () => {},\n stopPropagation: () => {},\n })\n }\n }, 3000)\n }\n\n // 组件卸载时清理地图实例\n useEffect(() => {\n return () => {\n if (id) {\n unregisterMapInstance(id)\n console.log(logPrefix, '已注销地图实例, id:', id)\n }\n }\n }, [id])\n\n return (\n <TMap\n id={id}\n ref={forwardedRef}\n className={className}\n style={styleObj}\n apiKey={authKey ?? ''}\n options={mergedOptions}\n onClick={handleMapClick}\n onMapInited={handleMapInited}\n >\n {normalizedMarkers.length > 0 ? (\n <MultiMarker id=\"taro-markers\" styles={markerStyles} geometries={markerGeometries} />\n ) : null}\n {polylineGeometries.length > 0 ? (\n <MultiPolyline id=\"taro-polylines\" styles={polylineStyles} geometries={polylineGeometries} />\n ) : null}\n\n {/* H5 端:自动处理 slot=\"callout\" 的 CoverView */}\n {process.env.TARO_ENV === 'h5' ? renderH5CustomCallouts() : props.children}\n </TMap>\n )\n\n /**\n * H5 端渲染自定义气泡\n * 拦截 slot=\"callout\" 的 CoverView,转换为自定义 Overlay\n */\n function renderH5CustomCallouts() {\n if (!mapInstance) return null\n\n // 1. 遍历 props.children,找到 slot=\"callout\" 的 CoverView\n const childrenArray = Children.toArray(props.children)\n const calloutSlot = childrenArray.find((child: any) =>\n React.isValidElement(child) && child.props?.slot === 'callout'\n )\n\n if (!calloutSlot || !React.isValidElement(calloutSlot)) {\n return null\n }\n\n // 2. 遍历内层的 CoverView,提取 markerId 和内容\n const innerCoverViews = Children.toArray(calloutSlot.props.children)\n\n return innerCoverViews.map((child: any) => {\n if (!React.isValidElement(child)) return null\n\n const markerId = child.props?.markerId\n if (!markerId) return null\n\n // 3. 找到对应的 marker 信息\n const marker = normalizedMarkers.find((m: any) => m.id === markerId)\n if (!marker) {\n console.warn(logPrefix, `未找到 markerId=${markerId} 对应的 marker`)\n return null\n }\n\n // 4. 渲染自定义气泡\n return (\n <MapCustomCallout\n key={markerId}\n map={mapInstance}\n markerId={markerId}\n position={{ lat: marker.latitude, lng: marker.longitude }}\n anchorX={marker.customCallout?.anchorX ?? 0}\n anchorY={marker.customCallout?.anchorY ?? 0}\n display={marker.customCallout?.display ?? 'ALWAYS'}\n onCalloutTap={(id) => {\n // 触发 onCalloutTap 事件\n if (typeof props.onCalloutTap === 'function') {\n props.onCalloutTap({\n type: 'callouttap',\n timeStamp: Date.now(),\n target: {\n id: String(id) || '',\n tagName: 'callout',\n dataset: {},\n },\n currentTarget: {\n id: String(id) || '',\n tagName: 'callout',\n dataset: {},\n },\n detail: { markerId: id },\n preventDefault: () => {},\n stopPropagation: () => {},\n })\n }\n }}\n >\n {child.props.children}\n </MapCustomCallout>\n )\n })\n }\n}\n\nexport default createForwardRefComponent(Map)\n\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 */\nexport { createMapContext } from './createMapContext'\n"],"names":["Map","props","forwardedRef","id","className","style","authKey","longitude","latitude","scale","minScale","maxScale","enableRotate","rotate","skew","markers","polyline","onTap","onAuthSuccess","onError","console","log","logPrefix","styleObj","undefined","normalizedMarkers","markerStyles","markerGeometries","forEach","m","index","markerId","String","_a","styleId","parseSize","size","parsed","parseInt","isNaN","markerWidth","width","markerHeight","height","anchor","x","y","iconPath","src","rotation","alpha","opacity","zIndex","push","position","lat","lng","normalizedPolylines","polylineStyles","polylineGeometries","line","lineIndex","points","length","color","Math","round","dashArray","dottedLine","paths","map","point","hasCenter","mergedOptions","center","zoom","minZoom","maxZoom","rotatable","pitch","handleMapClick","e","type","timeStamp","Date","now","target","tagName","dataset","currentTarget","detail","latLng","preventDefault","stopPropagation","mapInstance","setMapInstance","useState","handleMapInited","instance","registerMapInstance","settled","on","_res","errCode","errMsg","setTimeout","useEffect","unregisterMapInstance","_jsxs","TMap","ref","apiKey","options","onClick","onMapInited","children","_jsx","MultiMarker","styles","geometries","MultiPolyline","process","env","TARO_ENV","renderH5CustomCallouts","childrenArray","Children","toArray","calloutSlot","find","child","React","isValidElement","slot","innerCoverViews","marker","warn","MapCustomCallout","anchorX","_c","_b","customCallout","anchorY","_e","_d","display","_g","_f","onCalloutTap","createForwardRefComponent"],"mappings":"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"}
@@ -127,9 +127,32 @@ class MapContextImpl {
127
127
  * 获取当前地图中心的经纬度
128
128
  * @supported weapp, tt
129
129
  */
130
- getCenterLocation(_option) {
131
- console.warn(logPrefix, '[MapContext.getCenterLocation] 暂未实现');
132
- return Promise.reject(new Error('getCenterLocation: 暂未实现'));
130
+ getCenterLocation(option) {
131
+ const handle = new MethodHandler({
132
+ name: 'getCenterLocation',
133
+ success: option === null || option === void 0 ? void 0 : option.success,
134
+ fail: option === null || option === void 0 ? void 0 : option.fail,
135
+ complete: option === null || option === void 0 ? void 0 : option.complete
136
+ });
137
+ if (!this.map) {
138
+ return handle.fail({
139
+ errMsg: '地图实例不存在'
140
+ });
141
+ }
142
+ try {
143
+ // 调用腾讯地图 API: map.getCenter()
144
+ const center = this.map.getCenter();
145
+ console.log(logPrefix, '[MapContext.getCenterLocation] 执行成功:', center);
146
+ return handle.success({
147
+ latitude: center.lat,
148
+ longitude: center.lng
149
+ });
150
+ } catch (error) {
151
+ console.error(logPrefix, '[MapContext.getCenterLocation] 执行失败:', error);
152
+ return handle.fail({
153
+ errMsg: (error === null || error === void 0 ? void 0 : error.message) || String(error)
154
+ });
155
+ }
133
156
  }
134
157
  /**
135
158
  * 设置定位点图标
@@ -143,9 +166,44 @@ class MapContextImpl {
143
166
  * 将地图中心移置当前定位点
144
167
  * @supported weapp, tt
145
168
  */
146
- moveToLocation(_option) {
147
- console.warn(logPrefix, '[MapContext.moveToLocation] 暂未实现');
148
- return Promise.reject(new Error('moveToLocation: 暂未实现'));
169
+ moveToLocation(option) {
170
+ const handle = new MethodHandler({
171
+ name: 'moveToLocation',
172
+ success: option === null || option === void 0 ? void 0 : option.success,
173
+ fail: option === null || option === void 0 ? void 0 : option.fail,
174
+ complete: option === null || option === void 0 ? void 0 : option.complete
175
+ });
176
+ if (!this.map) {
177
+ return handle.fail({
178
+ errMsg: '地图实例不存在'
179
+ });
180
+ }
181
+ try {
182
+ const {
183
+ latitude,
184
+ longitude
185
+ } = option;
186
+ console.log(logPrefix, '[MapContext.moveToLocation] 开始执行:', {
187
+ latitude,
188
+ longitude
189
+ });
190
+ // 参数校验
191
+ if (latitude === undefined || longitude === undefined) {
192
+ return handle.fail({
193
+ errMsg: 'latitude 和 longitude 参数必须提供'
194
+ });
195
+ }
196
+ // 调用腾讯地图 API: map.panTo()
197
+ const latLng = new TMap.LatLng(latitude, longitude);
198
+ this.map.panTo(latLng, {});
199
+ console.log(logPrefix, '[MapContext.moveToLocation] 执行成功');
200
+ return handle.success({});
201
+ } catch (error) {
202
+ console.error(logPrefix, '[MapContext.moveToLocation] 执行失败:', error);
203
+ return handle.fail({
204
+ errMsg: (error === null || error === void 0 ? void 0 : error.message) || String(error)
205
+ });
206
+ }
149
207
  }
150
208
  /**
151
209
  * 平移marker,带动画
@@ -160,46 +218,175 @@ class MapContextImpl {
160
218
  */
161
219
  moveAlong(_object) {
162
220
  console.warn(logPrefix, '[MapContext.moveAlong] 暂未实现');
221
+ throw new Error('moveAlong: 暂未实现');
163
222
  }
164
223
  /**
165
224
  * 获取当前地图的视野范围
166
225
  * @supported weapp, tt
167
226
  */
168
227
  getRegion(option) {
169
- console.warn(logPrefix, '[MapContext.getRegion] 暂未实现', option);
170
- return Promise.reject(new Error('getRegion: 暂未实现'));
228
+ const handle = new MethodHandler({
229
+ name: 'getRegion',
230
+ success: option === null || option === void 0 ? void 0 : option.success,
231
+ fail: option === null || option === void 0 ? void 0 : option.fail,
232
+ complete: option === null || option === void 0 ? void 0 : option.complete
233
+ });
234
+ if (!this.map) {
235
+ return handle.fail({
236
+ errMsg: '地图实例不存在'
237
+ });
238
+ }
239
+ try {
240
+ // 调用腾讯地图 API: map.getBounds()
241
+ const bounds = this.map.getBounds();
242
+ console.log(logPrefix, '[MapContext.getRegion] 执行成功:', bounds);
243
+ const sw = bounds.getSouthWest();
244
+ const ne = bounds.getNorthEast();
245
+ return handle.success({
246
+ southwest: {
247
+ latitude: sw.lat,
248
+ longitude: sw.lng
249
+ },
250
+ northeast: {
251
+ latitude: ne.lat,
252
+ longitude: ne.lng
253
+ }
254
+ });
255
+ } catch (error) {
256
+ console.error(logPrefix, '[MapContext.getRegion] 执行失败:', error);
257
+ return handle.fail({
258
+ errMsg: (error === null || error === void 0 ? void 0 : error.message) || String(error)
259
+ });
260
+ }
171
261
  }
172
262
  /**
173
263
  * 获取当前地图的旋转角
174
264
  * @supported weapp, tt
175
265
  */
176
266
  getRotate(option) {
177
- console.warn(logPrefix, '[MapContext.getRotate] 暂未实现', option);
178
- return Promise.reject(new Error('getRotate: 暂未实现'));
267
+ const handle = new MethodHandler({
268
+ name: 'getRotate',
269
+ success: option === null || option === void 0 ? void 0 : option.success,
270
+ fail: option === null || option === void 0 ? void 0 : option.fail,
271
+ complete: option === null || option === void 0 ? void 0 : option.complete
272
+ });
273
+ if (!this.map) {
274
+ return handle.fail({
275
+ errMsg: '地图实例不存在'
276
+ });
277
+ }
278
+ try {
279
+ // 调用腾讯地图 API: map.getRotation()
280
+ const rotate = this.map.getRotation();
281
+ console.log(logPrefix, '[MapContext.getRotate] 执行成功:', rotate);
282
+ return handle.success({
283
+ rotate: rotate
284
+ });
285
+ } catch (error) {
286
+ console.error(logPrefix, '[MapContext.getRotate] 执行失败:', error);
287
+ return handle.fail({
288
+ errMsg: (error === null || error === void 0 ? void 0 : error.message) || String(error)
289
+ });
290
+ }
179
291
  }
180
292
  /**
181
293
  * 获取当前地图的倾斜角
182
294
  * @supported weapp, tt
183
295
  */
184
296
  getSkew(option) {
185
- console.warn(logPrefix, '[MapContext.getSkew] 暂未实现', option);
186
- return Promise.reject(new Error('getSkew: 暂未实现'));
297
+ const handle = new MethodHandler({
298
+ name: 'getSkew',
299
+ success: option === null || option === void 0 ? void 0 : option.success,
300
+ fail: option === null || option === void 0 ? void 0 : option.fail,
301
+ complete: option === null || option === void 0 ? void 0 : option.complete
302
+ });
303
+ if (!this.map) {
304
+ return handle.fail({
305
+ errMsg: '地图实例不存在'
306
+ });
307
+ }
308
+ try {
309
+ // 调用腾讯地图 API: map.getPitch()
310
+ const skew = this.map.getPitch();
311
+ console.log(logPrefix, '[MapContext.getSkew] 执行成功:', skew);
312
+ return handle.success({
313
+ skew: skew
314
+ });
315
+ } catch (error) {
316
+ console.error(logPrefix, '[MapContext.getSkew] 执行失败:', error);
317
+ return handle.fail({
318
+ errMsg: (error === null || error === void 0 ? void 0 : error.message) || String(error)
319
+ });
320
+ }
187
321
  }
188
322
  /**
189
323
  * 获取当前地图的缩放级别
190
324
  * @supported weapp, tt
191
325
  */
192
326
  getScale(option) {
193
- console.warn(logPrefix, '[MapContext.getScale] 暂未实现', option);
194
- return Promise.reject(new Error('getScale: 暂未实现'));
327
+ const handle = new MethodHandler({
328
+ name: 'getScale',
329
+ success: option === null || option === void 0 ? void 0 : option.success,
330
+ fail: option === null || option === void 0 ? void 0 : option.fail,
331
+ complete: option === null || option === void 0 ? void 0 : option.complete
332
+ });
333
+ if (!this.map) {
334
+ return handle.fail({
335
+ errMsg: '地图实例不存在'
336
+ });
337
+ }
338
+ try {
339
+ // 调用腾讯地图 API: map.getZoom()
340
+ const scale = this.map.getZoom();
341
+ console.log(logPrefix, '[MapContext.getScale] 执行成功:', scale);
342
+ return handle.success({
343
+ scale: scale
344
+ });
345
+ } catch (error) {
346
+ console.error(logPrefix, '[MapContext.getScale] 执行失败:', error);
347
+ return handle.fail({
348
+ errMsg: (error === null || error === void 0 ? void 0 : error.message) || String(error)
349
+ });
350
+ }
195
351
  }
196
352
  /**
197
353
  * 设置地图中心点偏移
198
354
  * @supported weapp, tt
199
355
  */
200
356
  setCenterOffset(option) {
201
- console.warn(logPrefix, '[MapContext.setCenterOffset] 暂未实现', option);
202
- return Promise.reject(new Error('setCenterOffset: 暂未实现'));
357
+ const handle = new MethodHandler({
358
+ name: 'setCenterOffset',
359
+ success: option === null || option === void 0 ? void 0 : option.success,
360
+ fail: option === null || option === void 0 ? void 0 : option.fail,
361
+ complete: option === null || option === void 0 ? void 0 : option.complete
362
+ });
363
+ if (!this.map) {
364
+ return handle.fail({
365
+ errMsg: '地图实例不存在'
366
+ });
367
+ }
368
+ try {
369
+ const {
370
+ offset
371
+ } = option;
372
+ console.log(logPrefix, '[MapContext.setCenterOffset] 开始执行:', {
373
+ offset
374
+ });
375
+ // 转换 offset 格式: Taro [x, y] -> TMap {x, y}
376
+ const offsetOption = {
377
+ x: offset[0],
378
+ y: offset[1]
379
+ };
380
+ // 调用腾讯地图 API: map.setOffset()
381
+ this.map.setOffset(offsetOption);
382
+ console.log(logPrefix, '[MapContext.setCenterOffset] 执行成功');
383
+ return handle.success({});
384
+ } catch (error) {
385
+ console.error(logPrefix, '[MapContext.setCenterOffset] 执行失败:', error);
386
+ return handle.fail({
387
+ errMsg: (error === null || error === void 0 ? void 0 : error.message) || String(error)
388
+ });
389
+ }
203
390
  }
204
391
  /**
205
392
  * 移除个性化图层
@@ -262,8 +449,40 @@ class MapContextImpl {
262
449
  * @supported weapp
263
450
  */
264
451
  setBoundary(option) {
265
- console.warn(logPrefix, '[MapContext.setBoundary] 暂未实现', option);
266
- return Promise.reject(new Error('setBoundary: 暂未实现'));
452
+ const handle = new MethodHandler({
453
+ name: 'setBoundary',
454
+ success: option === null || option === void 0 ? void 0 : option.success,
455
+ fail: option === null || option === void 0 ? void 0 : option.fail,
456
+ complete: option === null || option === void 0 ? void 0 : option.complete
457
+ });
458
+ if (!this.map) {
459
+ return handle.fail({
460
+ errMsg: '地图实例不存在'
461
+ });
462
+ }
463
+ try {
464
+ const {
465
+ southwest,
466
+ northeast
467
+ } = option;
468
+ console.log(logPrefix, '[MapContext.setBoundary] 开始执行:', {
469
+ southwest,
470
+ northeast
471
+ });
472
+ // 转换坐标格式: {latitude, longitude} -> TMap.LatLng
473
+ const sw = new TMap.LatLng(southwest.latitude, southwest.longitude);
474
+ const ne = new TMap.LatLng(northeast.latitude, northeast.longitude);
475
+ const bounds = new TMap.LatLngBounds(sw, ne);
476
+ // 调用腾讯地图 API: map.setBoundary()
477
+ this.map.setBoundary(bounds);
478
+ console.log(logPrefix, '[MapContext.setBoundary] 执行成功');
479
+ return handle.success({});
480
+ } catch (error) {
481
+ console.error(logPrefix, '[MapContext.setBoundary] 执行失败:', error);
482
+ return handle.fail({
483
+ errMsg: (error === null || error === void 0 ? void 0 : error.message) || String(error)
484
+ });
485
+ }
267
486
  }
268
487
  /**
269
488
  * 更新自定义图片图层
@@ -286,16 +505,82 @@ class MapContextImpl {
286
505
  * @supported weapp
287
506
  */
288
507
  toScreenLocation(option) {
289
- console.warn(logPrefix, '[MapContext.toScreenLocation] 暂未实现', option);
290
- return Promise.reject(new Error('toScreenLocation: 暂未实现'));
508
+ const handle = new MethodHandler({
509
+ name: 'toScreenLocation',
510
+ success: option === null || option === void 0 ? void 0 : option.success,
511
+ fail: option === null || option === void 0 ? void 0 : option.fail,
512
+ complete: option === null || option === void 0 ? void 0 : option.complete
513
+ });
514
+ if (!this.map) {
515
+ return handle.fail({
516
+ errMsg: '地图实例不存在'
517
+ });
518
+ }
519
+ try {
520
+ const {
521
+ latitude,
522
+ longitude
523
+ } = option;
524
+ console.log(logPrefix, '[MapContext.toScreenLocation] 开始执行:', {
525
+ latitude,
526
+ longitude
527
+ });
528
+ // 转换坐标格式: {latitude, longitude} -> TMap.LatLng
529
+ const latLng = new TMap.LatLng(latitude, longitude);
530
+ // 调用腾讯地图 API: map.projectToContainer()
531
+ const point = this.map.projectToContainer(latLng);
532
+ console.log(logPrefix, '[MapContext.toScreenLocation] 执行成功:', point);
533
+ return handle.success({
534
+ x: point.x,
535
+ y: point.y
536
+ });
537
+ } catch (error) {
538
+ console.error(logPrefix, '[MapContext.toScreenLocation] 执行失败:', error);
539
+ return handle.fail({
540
+ errMsg: (error === null || error === void 0 ? void 0 : error.message) || String(error)
541
+ });
542
+ }
291
543
  }
292
544
  /**
293
545
  * 获取屏幕上的点对应的经纬度
294
546
  * @supported weapp
295
547
  */
296
548
  fromScreenLocation(option) {
297
- console.warn(logPrefix, '[MapContext.fromScreenLocation] 暂未实现', option);
298
- return Promise.reject(new Error('fromScreenLocation: 暂未实现'));
549
+ const handle = new MethodHandler({
550
+ name: 'fromScreenLocation',
551
+ success: option === null || option === void 0 ? void 0 : option.success,
552
+ fail: option === null || option === void 0 ? void 0 : option.fail,
553
+ complete: option === null || option === void 0 ? void 0 : option.complete
554
+ });
555
+ if (!this.map) {
556
+ return handle.fail({
557
+ errMsg: '地图实例不存在'
558
+ });
559
+ }
560
+ try {
561
+ const {
562
+ x,
563
+ y
564
+ } = option;
565
+ console.log(logPrefix, '[MapContext.fromScreenLocation] 开始执行:', {
566
+ x,
567
+ y
568
+ });
569
+ // 转换坐标格式: {x, y} -> TMap.Point
570
+ const point = new TMap.Point(x, y);
571
+ // 调用腾讯地图 API: map.unprojectFromContainer()
572
+ const latLng = this.map.unprojectFromContainer(point);
573
+ console.log(logPrefix, '[MapContext.fromScreenLocation] 执行成功:', latLng);
574
+ return handle.success({
575
+ latitude: latLng.lat,
576
+ longitude: latLng.lng
577
+ });
578
+ } catch (error) {
579
+ console.error(logPrefix, '[MapContext.fromScreenLocation] 执行失败:', error);
580
+ return handle.fail({
581
+ errMsg: (error === null || error === void 0 ? void 0 : error.message) || String(error)
582
+ });
583
+ }
299
584
  }
300
585
  /**
301
586
  * 拉起地图APP选择导航
@@ -335,6 +620,7 @@ class MapContextImpl {
335
620
  */
336
621
  on(event, callback) {
337
622
  console.warn(logPrefix, '[MapContext.on] 暂未实现', event, callback);
623
+ throw new Error('on: 暂未实现');
338
624
  }
339
625
  }
340
626