@tarojs/components-react 4.1.12-beta.34 → 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.
- package/dist/components/map/MapContext.js +308 -22
- package/dist/components/map/MapContext.js.map +1 -1
- package/dist/components/map/index.js +7 -1
- package/dist/components/map/index.js.map +1 -1
- package/dist/original/components/map/MapContext.js +308 -22
- package/dist/original/components/map/MapContext.js.map +1 -1
- package/dist/original/components/map/index.js +7 -1
- package/dist/original/components/map/index.js.map +1 -1
- package/package.json +6 -6
|
@@ -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(
|
|
131
|
-
|
|
132
|
-
|
|
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(
|
|
147
|
-
|
|
148
|
-
|
|
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
|
-
|
|
170
|
-
|
|
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
|
-
|
|
178
|
-
|
|
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
|
-
|
|
186
|
-
|
|
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
|
-
|
|
194
|
-
|
|
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
|
-
|
|
202
|
-
|
|
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
|
-
|
|
266
|
-
|
|
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
|
-
|
|
290
|
-
|
|
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
|
-
|
|
298
|
-
|
|
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
|
|