UNPKG

@tarojs/taro-h5

Version:
78 lines (75 loc) • 4.16 kB
import { temporarilyNotSupport } from '../../utils/index.js'; /** * 创建地图上下文 MapContext 对象 * * @param mapId Map 组件的 id * @param _inst 自定义组件实例(暂未使用) * @param type Map 组件类型:'react' 新 Map (components-react,默认),'legacy' 老 Map (components) * @returns MapContext 实例 * * 新 Map (components-react):通过 window.__TARO_MAP_CONTEXTS__ 获取 MapContextImpl 实例 * 老 Map (components):暂不支持,后续实现 */ function createMapContext(mapId, _inst, type) { var _a; // 默认为新 Map (react) const mapType = type !== null && type !== void 0 ? type : 'react'; // 老 Map:暂不支持 if (mapType === 'legacy') { console.warn('[createMapContext] legacy Map (taro-components) 暂不支持 createMapContext'); return temporarilyNotSupport('createMapContext')(mapId, _inst); } // 新 Map:从 window 获取 MapContextImpl 实例 const contextImpl = (_a = window.__TARO_MAP_CONTEXTS__) === null || _a === void 0 ? void 0 : _a.get(mapId); if (!contextImpl) { console.warn(`[createMapContext] 找不到 id 为 "${mapId}" 的地图上下文`); console.warn('[createMapContext] 请确保:1) Map 组件已正确设置 id 属性;2) 地图已完成初始化'); // 返回一个空实现,避免运行时错误 return createDummyContext(); } console.log('[createMapContext] 成功获取地图上下文:', mapId); return contextImpl; } /** * 创建空实现(当找不到地图实例时) * 避免业务代码调用时出现运行时错误 */ function createDummyContext() { console.warn('[createDummyContext] 返回空 MapContext 实现'); return { includePoints: () => Promise.reject(new Error('地图实例不存在')), getCenterLocation: () => Promise.reject(new Error('地图实例不存在')), setLocMarkerIcon: () => Promise.reject(new Error('地图实例不存在')), moveToLocation: () => Promise.reject(new Error('地图实例不存在')), translateMarker: () => Promise.reject(new Error('地图实例不存在')), moveAlong: () => { console.warn('[MapContext] moveAlong: 地图实例不存在'); }, getRegion: () => Promise.reject(new Error('地图实例不存在')), getRotate: () => Promise.reject(new Error('地图实例不存在')), getSkew: () => Promise.reject(new Error('地图实例不存在')), getScale: () => Promise.reject(new Error('地图实例不存在')), setCenterOffset: () => Promise.reject(new Error('地图实例不存在')), removeCustomLayer: () => Promise.reject(new Error('地图实例不存在')), addCustomLayer: () => Promise.reject(new Error('地图实例不存在')), addGroundOverlay: () => Promise.reject(new Error('地图实例不存在')), addVisualLayer: () => Promise.reject(new Error('地图实例不存在')), removeVisualLayer: () => Promise.reject(new Error('地图实例不存在')), addArc: () => Promise.reject(new Error('地图实例不存在')), removeArc: () => Promise.reject(new Error('地图实例不存在')), setBoundary: () => Promise.reject(new Error('地图实例不存在')), updateGroundOverlay: () => Promise.reject(new Error('地图实例不存在')), removeGroundOverlay: () => Promise.reject(new Error('地图实例不存在')), toScreenLocation: () => Promise.reject(new Error('地图实例不存在')), fromScreenLocation: () => Promise.reject(new Error('地图实例不存在')), openMapApp: () => Promise.reject(new Error('地图实例不存在')), addMarkers: () => Promise.reject(new Error('地图实例不存在')), removeMarkers: () => Promise.reject(new Error('地图实例不存在')), initMarkerCluster: () => Promise.reject(new Error('地图实例不存在')), on: (_event, _callback) => { console.warn('[MapContext] on: 地图实例不存在'); }, }; } export { createMapContext }; //# sourceMappingURL=map.js.map