expo-gaode-map 2.2.4-next.1 → 2.2.5-next.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.
@@ -1 +1 @@
1
- {"version":3,"file":"MapPreloader.d.ts","sourceRoot":"","sources":["../../src/utils/MapPreloader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MapPreloader.d.ts","sourceRoot":"","sources":["../../src/utils/MapPreloader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAmB,aAAa,EAAkB,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAWvG;;;GAGG;AACH,cAAM,mBAAmB;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAsB;IAC7C,OAAO,CAAC,gBAAgB,CAA2C;IACnE,OAAO,CAAC,MAAM,CAOZ;IACF,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,sBAAsB,CAAwB;IACtD,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,SAAS,CAAmD;IACpE,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,mBAAmB,CAA+C;IAC1E,OAAO,CAAC,kBAAkB,CAA8C;IAExE,OAAO;IAKP;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAgBhC;;OAEG;WACW,WAAW,IAAI,mBAAmB;IAOhD;;;OAGG;IACI,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAY7C;;OAEG;IACH,OAAO,CAAC,cAAc;IA4BtB;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAcnC;;OAEG;IACI,SAAS,IAAI,QAAQ,CAAC,aAAa,CAAC;IAI3C;;;OAGG;IACI,YAAY,IAAI,IAAI;IAkC3B;;OAEG;YACW,oBAAoB;IAwBlC;;OAEG;YACW,0BAA0B;IAoExC;;OAEG;YACW,sBAAsB;IA0CpC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAW3B;;OAEG;YACW,oBAAoB;IA4GlC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+BxB;;OAEG;IACI,WAAW,IAAI,IAAI;IAS1B;;OAEG;IACI,uBAAuB,IAAI,IAAI;IAOtC;;;OAGG;IACI,oBAAoB,IAAI,MAAM,GAAG,IAAI;IAY5C;;OAEG;IACI,SAAS,IAAI,aAAa;IAwCjC;;OAEG;IACI,kBAAkB,IAAI,QAAQ,GAAG,IAAI,GAAG,QAAQ;IAIvD;;OAEG;IACI,wBAAwB,IAAI,OAAO;IAO1C;;OAEG;IACI,QAAQ,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAAC;KACtC;IAmDD;;;;OAIG;IACI,WAAW,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,GAAG,MAAM,IAAI;IAOzE;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACI,KAAK,IAAI,IAAI;CAMrB;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,qBAAoC,CAAC;AAE9D;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,IAAI,CAKvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MapPreloader.js","sourceRoot":"","sources":["../../src/utils/MapPreloader.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * 地图预加载管理器\n * 统一的预加载 API,自动选择原生或 JS 层预加载\n * - 如果原生预加载可用,优先使用原生方案(性能提升 60-80%)\n * - 否则回退到 JS 层预加载(性能提升 5-25%)\n */\n\n// 动态导入原生模块,避免在模块不可用时报错\nlet NativeModule: any = null;\ntry {\n NativeModule = require('../ExpoGaodeMapModule').default;\n} catch (error) {\n console.warn('[MapPreloader] 原生模块加载失败,将只使用 JS 层预加载');\n}\n\n/**\n * 预加载配置\n */\nexport interface PreloadConfig {\n /** 预加载的地图数量,默认为 1 */\n poolSize?: number;\n /** 预加载延迟时间(毫秒),默认为 0(立即预加载) */\n delay?: number;\n /** 是否启用预加载,默认为 true */\n enabled?: boolean;\n /** 预加载超时时间(毫秒),默认为 15000(15秒) */\n timeout?: number;\n /** 预加载策略:'native' | 'js' | 'auto' | 'hybrid',默认为 'auto' */\n strategy?: PreloadStrategy;\n /** 超时后是否自动回退到 JS 预加载,默认为 true */\n fallbackOnTimeout?: boolean;\n}\n\n/**\n * 预加载状态\n */\nexport type PreloadStatus = 'idle' | 'loading' | 'ready' | 'error';\n\n/**\n * 预加载策略\n * - 'native': 仅使用原生预加载\n * - 'js': 仅使用 JS 层预加载\n * - 'auto': 自动选择(优先原生,不可用时用 JS)\n * - 'hybrid': 同时启动原生和 JS,谁先完成用谁(最快最可靠)\n */\nexport type PreloadStrategy = 'native' | 'js' | 'auto' | 'hybrid';\n\n/**\n * 预加载实例信息\n */\ninterface PreloadInstance {\n id: string;\n status: PreloadStatus;\n timestamp: number;\n error?: Error;\n}\n\n/**\n * 地图预加载管理器类\n * 单例模式,管理地图实例的预加载\n */\nclass MapPreloaderManager {\n private static instance: MapPreloaderManager;\n private preloadInstances: Map<string, PreloadInstance> = new Map();\n private config: Required<PreloadConfig> & { strategy: PreloadStrategy; fallbackOnTimeout: boolean } = {\n poolSize: 1,\n delay: 0,\n enabled: true,\n timeout: 15000, // 增加到 15 秒,给原生预加载更充足的时间\n strategy: 'auto',\n fallbackOnTimeout: true,\n };\n private currentStrategy: 'native' | 'js' | 'hybrid' = 'js';\n private hybridNativeReady = false;\n private hybridJSReady = false;\n private nativePreloadAvailable: boolean | null = null;\n private preloadTimer: ReturnType<typeof setTimeout> | null = null;\n private listeners: Set<(status: PreloadStatus) => void> = new Set();\n private isPreloading = false;\n private activeCheckInterval: ReturnType<typeof setInterval> | null = null;\n private activeTimeoutTimer: ReturnType<typeof setTimeout> | null = null;\n\n private constructor() {\n // 检测热重载,清理原生状态\n this.detectAndHandleHotReload();\n }\n \n /**\n * 检测并处理热重载\n */\n private detectAndHandleHotReload(): void {\n if (NativeModule) {\n try {\n // 检查原生是否有残留的预加载状态\n const status = NativeModule.getMapPreloadStatus();\n if (status && status.isPreloading) {\n console.warn('[MapPreloader] 检测到热重载,清理原生预加载状态');\n // 清理原生池\n NativeModule.clearMapPreloadPool();\n }\n } catch (error) {\n // 忽略错误\n }\n }\n }\n\n /**\n * 获取管理器单例实例\n */\n public static getInstance(): MapPreloaderManager {\n if (!MapPreloaderManager.instance) {\n MapPreloaderManager.instance = new MapPreloaderManager();\n }\n return MapPreloaderManager.instance;\n }\n\n /**\n * 配置预加载参数\n * @param config 预加载配置\n */\n public configure(config: PreloadConfig): void {\n this.config = {\n ...this.config,\n ...config,\n strategy: config.strategy || 'auto',\n fallbackOnTimeout: config.fallbackOnTimeout !== undefined ? config.fallbackOnTimeout : true,\n };\n \n // 重新检测策略\n this.detectStrategy();\n }\n\n /**\n * 检测并选择最优预加载策略\n */\n private detectStrategy(): void {\n if (this.config.strategy === 'js') {\n this.currentStrategy = 'js';\n console.log('[MapPreloader] 使用 JS 层预加载策略');\n return;\n }\n\n if (this.config.strategy === 'native') {\n this.currentStrategy = 'native';\n console.log('[MapPreloader] 强制使用原生预加载策略');\n return;\n }\n\n if (this.config.strategy === 'hybrid') {\n this.currentStrategy = 'hybrid';\n console.log('[MapPreloader] 使用混合预加载策略(原生 + JS 同时进行)');\n return;\n }\n\n // auto 模式:自动检测\n if (this.nativePreloadAvailable === null) {\n this.nativePreloadAvailable = this.checkNativePreloadAvailable();\n }\n\n this.currentStrategy = this.nativePreloadAvailable ? 'native' : 'js';\n console.log(`[MapPreloader] 自动选择策略: ${this.currentStrategy}`);\n }\n\n /**\n * 检查原生预加载是否可用\n */\n private checkNativePreloadAvailable(): boolean {\n try {\n // 检查原生模块是否存在预加载方法\n return (\n NativeModule &&\n typeof NativeModule?.startMapPreload === 'function' &&\n typeof NativeModule?.getMapPreloadStatus === 'function'\n );\n } catch (error) {\n console.warn('[MapPreloader] 原生预加载不可用:', error);\n return false;\n }\n }\n\n /**\n * 获取当前配置\n */\n public getConfig(): Required<PreloadConfig> {\n return { ...this.config };\n }\n\n /**\n * 开始预加载\n * 根据配置和策略选择最优的预加载方式\n */\n public startPreload(): void {\n if (!this.config.enabled) {\n console.log('[MapPreloader] 预加载已禁用');\n return;\n }\n\n if (this.isPreloading) {\n console.log('[MapPreloader] 预加载已在进行中');\n return;\n }\n\n // 清理之前的定时器和检查\n this.cleanupActiveTimers();\n\n // 检测策略\n this.detectStrategy();\n\n // 清除之前的定时器\n if (this.preloadTimer) {\n clearTimeout(this.preloadTimer);\n }\n\n // 延迟执行预加载\n this.preloadTimer = setTimeout(() => {\n if (this.currentStrategy === 'hybrid') {\n this.executeHybridPreload();\n } else if (this.currentStrategy === 'native') {\n this.executeNativePreload();\n } else {\n this.executeJSPreload();\n }\n }, this.config.delay);\n }\n \n /**\n * 执行混合预加载(同时启动原生和 JS)\n */\n private async executeHybridPreload(): Promise<void> {\n this.cleanupActiveTimers();\n this.isPreloading = true;\n this.hybridNativeReady = false;\n this.hybridJSReady = false;\n this.notifyListeners('loading');\n\n console.log(`[MapPreloader] 🚀 开始混合预加载(原生 + JS 同时进行)`);\n const startTime = Date.now();\n\n // 同时启动原生和 JS 预加载\n const nativePromise = this.executeHybridNativePreload(startTime);\n const jsPromise = this.executeHybridJSPreload(startTime);\n\n // 等待任意一个完成\n try {\n await Promise.race([nativePromise, jsPromise]);\n } catch (error) {\n console.error('[MapPreloader] 混合预加载失败:', error);\n this.isPreloading = false;\n this.notifyListeners('error');\n }\n }\n\n /**\n * 混合模式下的原生预加载\n */\n private async executeHybridNativePreload(startTime: number): Promise<void> {\n if (!NativeModule) {\n console.log('[MapPreloader] 原生模块不可用,跳过原生预加载');\n return;\n }\n\n try {\n // 清理原生池\n await NativeModule.clearMapPreloadPool();\n \n // 开始原生预加载\n await NativeModule.startMapPreload({ poolSize: this.config.poolSize });\n \n let consecutiveReadyCount = 0;\n const REQUIRED_READY_COUNT = 2;\n \n return new Promise((resolve, reject) => {\n const checkInterval = setInterval(() => {\n // 如果 JS 已经完成,停止检查\n if (this.hybridJSReady) {\n clearInterval(checkInterval);\n console.log('[MapPreloader] JS 已完成,停止原生检查');\n resolve();\n return;\n }\n\n try {\n const status = NativeModule.getMapPreloadStatus();\n \n if (status && !status.isPreloading && status.poolSize > 0) {\n consecutiveReadyCount++;\n \n if (consecutiveReadyCount >= REQUIRED_READY_COUNT) {\n clearInterval(checkInterval);\n \n if (!this.hybridNativeReady && !this.hybridJSReady) {\n this.hybridNativeReady = true;\n const duration = Date.now() - startTime;\n this.isPreloading = false;\n this.notifyListeners('ready');\n console.log(`[MapPreloader] ✅ 原生预加载先完成(耗时: ${duration}ms)`);\n resolve();\n }\n }\n } else {\n consecutiveReadyCount = 0;\n }\n } catch (error) {\n clearInterval(checkInterval);\n console.warn('[MapPreloader] 原生预加载检查失败:', error);\n reject(error);\n }\n }, 100);\n\n // 超时处理\n setTimeout(() => {\n if (!this.hybridNativeReady && !this.hybridJSReady) {\n clearInterval(checkInterval);\n console.warn('[MapPreloader] ⚠️ 原生预加载超时,等待 JS 完成');\n }\n }, this.config.timeout);\n });\n } catch (error) {\n console.error('[MapPreloader] 原生预加载启动失败:', error);\n throw error;\n }\n }\n\n /**\n * 混合模式下的 JS 预加载\n */\n private async executeHybridJSPreload(startTime: number): Promise<void> {\n // 创建预加载实例\n for (let i = 0; i < this.config.poolSize; i++) {\n const instanceId = `preload_hybrid_${Date.now()}_${i}`;\n const instance: PreloadInstance = {\n id: instanceId,\n status: 'loading',\n timestamp: Date.now(),\n };\n this.preloadInstances.set(instanceId, instance);\n }\n\n return new Promise((resolve) => {\n setTimeout(() => {\n // 如果原生已经完成,不需要通知\n if (this.hybridNativeReady) {\n this.preloadInstances.forEach((instance) => {\n instance.status = 'ready';\n });\n console.log('[MapPreloader] JS 预加载完成(原生已先完成)');\n resolve();\n return;\n }\n\n // JS 先完成\n if (!this.hybridJSReady) {\n this.hybridJSReady = true;\n this.preloadInstances.forEach((instance) => {\n instance.status = 'ready';\n });\n \n const duration = Date.now() - startTime;\n this.isPreloading = false;\n this.notifyListeners('ready');\n console.log(`[MapPreloader] ✅ JS 预加载先完成(耗时: ${duration}ms)`);\n }\n \n resolve();\n }, 100);\n });\n }\n \n /**\n * 清理活动的定时器\n */\n private cleanupActiveTimers(): void {\n if (this.activeCheckInterval) {\n clearInterval(this.activeCheckInterval);\n this.activeCheckInterval = null;\n }\n if (this.activeTimeoutTimer) {\n clearTimeout(this.activeTimeoutTimer);\n this.activeTimeoutTimer = null;\n }\n }\n\n /**\n * 执行原生预加载\n */\n private async executeNativePreload(): Promise<void> {\n // 清理之前可能残留的定时器\n this.cleanupActiveTimers();\n \n this.isPreloading = true;\n this.notifyListeners('loading');\n\n console.log(`[MapPreloader] 开始原生预加载 ${this.config.poolSize} 个地图实例(超时: ${this.config.timeout}ms)`);\n\n try {\n const startTime = Date.now();\n \n // 先清理原生池,避免热重载导致的状态不一致\n try {\n await NativeModule.clearMapPreloadPool();\n console.log('[MapPreloader] 已清理原生预加载池');\n } catch (e) {\n // 忽略清理错误\n }\n \n // 开始新的预加载\n await NativeModule.startMapPreload({ poolSize: this.config.poolSize });\n \n let consecutiveReadyCount = 0;\n const REQUIRED_READY_COUNT = 2; // 减少到 2 次确认,提高响应速度\n \n // 等待预加载完成\n this.activeCheckInterval = setInterval(() => {\n try {\n const status = NativeModule.getMapPreloadStatus();\n \n // 检查是否真正完成\n if (status && !status.isPreloading && status.poolSize > 0) {\n consecutiveReadyCount++;\n \n if (consecutiveReadyCount >= REQUIRED_READY_COUNT) {\n this.cleanupActiveTimers();\n \n const duration = Date.now() - startTime;\n this.isPreloading = false;\n this.notifyListeners('ready');\n console.log(`[MapPreloader] ✅ 原生预加载完成(耗时: ${duration}ms,池大小: ${status.poolSize})`);\n }\n } else {\n consecutiveReadyCount = 0;\n }\n } catch (error) {\n this.cleanupActiveTimers();\n console.error('[MapPreloader] 原生预加载检查失败:', error);\n \n if (this.config.fallbackOnTimeout) {\n console.log('[MapPreloader] 回退到 JS 预加载');\n this.currentStrategy = 'js';\n this.executeJSPreload();\n } else {\n this.isPreloading = false;\n this.notifyListeners('error');\n }\n }\n }, 100);\n\n // 超时处理\n this.activeTimeoutTimer = setTimeout(() => {\n if (this.isPreloading) {\n this.cleanupActiveTimers();\n \n const duration = Date.now() - startTime;\n \n // 最后检查一次\n try {\n const finalStatus = NativeModule.getMapPreloadStatus();\n if (finalStatus && !finalStatus.isPreloading && finalStatus.poolSize > 0) {\n this.isPreloading = false;\n this.notifyListeners('ready');\n console.log(`[MapPreloader] ✅ 原生预加载完成(耗时: ${duration}ms,接近超时)`);\n return;\n }\n } catch (e) {\n // 忽略\n }\n \n console.warn(`[MapPreloader] ⚠️ 原生预加载超时(${duration}ms > ${this.config.timeout}ms)`);\n console.warn('[MapPreloader] 💡 提示: 热重载可能导致原生状态不同步,建议重启应用');\n \n if (this.config.fallbackOnTimeout) {\n console.log('[MapPreloader] 自动回退到 JS 预加载');\n this.currentStrategy = 'js';\n this.executeJSPreload();\n } else {\n this.isPreloading = false;\n this.notifyListeners('error');\n }\n }\n }, this.config.timeout);\n } catch (error) {\n this.cleanupActiveTimers();\n console.error('[MapPreloader] 原生预加载启动失败:', error);\n this.isPreloading = false;\n this.notifyListeners('error');\n \n if (this.config.fallbackOnTimeout) {\n console.log('[MapPreloader] 回退到 JS 预加载');\n this.currentStrategy = 'js';\n this.executeJSPreload();\n }\n }\n }\n\n /**\n * 执行 JS 层预加载逻辑\n */\n private executeJSPreload(): void {\n this.isPreloading = true;\n this.notifyListeners('loading');\n\n const startTime = Date.now();\n console.log(`[MapPreloader] 开始 JS 层预加载 ${this.config.poolSize} 个地图实例`);\n\n // 创建预加载实例\n for (let i = 0; i < this.config.poolSize; i++) {\n const instanceId = `preload_${Date.now()}_${i}`;\n const instance: PreloadInstance = {\n id: instanceId,\n status: 'loading',\n timestamp: Date.now(),\n };\n this.preloadInstances.set(instanceId, instance);\n }\n\n // 模拟预加载完成(实际场景中,这里会触发原生地图初始化)\n setTimeout(() => {\n this.preloadInstances.forEach((instance) => {\n instance.status = 'ready';\n });\n this.isPreloading = false;\n this.notifyListeners('ready');\n \n const duration = Date.now() - startTime;\n console.log(`[MapPreloader] ✅ JS 层预加载完成(耗时: ${duration}ms)`);\n }, 100);\n }\n\n /**\n * 停止预加载\n */\n public stopPreload(): void {\n if (this.preloadTimer) {\n clearTimeout(this.preloadTimer);\n this.preloadTimer = null;\n }\n this.isPreloading = false;\n this.notifyListeners('idle');\n }\n\n /**\n * 清理所有预加载实例\n */\n public clearPreloadedInstances(): void {\n console.log(`[MapPreloader] 清理 ${this.preloadInstances.size} 个预加载实例`);\n this.preloadInstances.clear();\n this.isPreloading = false;\n this.notifyListeners('idle');\n }\n\n /**\n * 获取一个可用的预加载实例\n * @returns 预加载实例 ID,如果没有可用实例则返回 null\n */\n public getPreloadedInstance(): string | null {\n for (const [id, instance] of this.preloadInstances.entries()) {\n if (instance.status === 'ready') {\n // 标记为已使用(从池中移除)\n this.preloadInstances.delete(id);\n console.log(`[MapPreloader] 使用预加载实例: ${id}`);\n return id;\n }\n }\n return null;\n }\n\n /**\n * 获取预加载状态\n */\n public getStatus(): PreloadStatus {\n // 如果使用原生预加载,检查原生状态\n if (this.currentStrategy === 'native') {\n try {\n const nativeStatus = NativeModule.getMapPreloadStatus();\n if (nativeStatus.isPreloading) {\n return 'loading';\n }\n if (nativeStatus.poolSize > 0) {\n return 'ready';\n }\n } catch (error) {\n console.warn('[MapPreloader] 获取原生状态失败:', error);\n }\n }\n\n // JS 层状态检查\n if (this.isPreloading) {\n return 'loading';\n }\n \n const hasReadyInstance = Array.from(this.preloadInstances.values()).some(\n (instance) => instance.status === 'ready'\n );\n \n if (hasReadyInstance) {\n return 'ready';\n }\n\n const hasError = Array.from(this.preloadInstances.values()).some(\n (instance) => instance.status === 'error'\n );\n\n if (hasError) {\n return 'error';\n }\n\n return 'idle';\n }\n\n /**\n * 获取当前使用的预加载策略\n */\n public getCurrentStrategy(): 'native' | 'js' | 'hybrid' {\n return this.currentStrategy;\n }\n\n /**\n * 检查原生预加载是否可用\n */\n public isNativePreloadAvailable(): boolean {\n if (this.nativePreloadAvailable === null) {\n this.nativePreloadAvailable = this.checkNativePreloadAvailable();\n }\n return this.nativePreloadAvailable;\n }\n\n /**\n * 获取预加载实例数量统计\n */\n public getStats(): {\n total: number;\n ready: number;\n loading: number;\n error: number;\n strategy: 'native' | 'js' | 'hybrid';\n } {\n // 混合模式:返回综合统计\n if (this.currentStrategy === 'hybrid') {\n const jsInstances = Array.from(this.preloadInstances.values());\n let nativePoolSize = 0;\n \n \n try {\n const nativeStatus = NativeModule.getMapPreloadStatus();\n nativePoolSize = nativeStatus.poolSize;\n \n } catch (error) {\n // 忽略\n }\n\n return {\n total: Math.max(jsInstances.length, nativePoolSize),\n ready: this.hybridNativeReady || this.hybridJSReady ? 1 : 0,\n loading: !this.hybridNativeReady && !this.hybridJSReady ? 1 : 0,\n error: 0,\n strategy: 'hybrid',\n };\n }\n\n // 如果使用原生预加载,返回原生统计\n if (this.currentStrategy === 'native') {\n try {\n const nativeStatus = NativeModule.getMapPreloadStatus();\n return {\n total: nativeStatus.poolSize,\n ready: nativeStatus.isPreloading ? 0 : nativeStatus.poolSize,\n loading: nativeStatus.isPreloading ? nativeStatus.poolSize : 0,\n error: 0,\n strategy: 'native',\n };\n } catch (error) {\n console.warn('[MapPreloader] 获取原生统计失败:', error);\n }\n }\n\n // JS 层统计\n const instances = Array.from(this.preloadInstances.values());\n return {\n total: instances.length,\n ready: instances.filter((i) => i.status === 'ready').length,\n loading: instances.filter((i) => i.status === 'loading').length,\n error: instances.filter((i) => i.status === 'error').length,\n strategy: 'js',\n };\n }\n\n /**\n * 添加状态监听器\n * @param listener 状态变化回调函数\n * @returns 取消监听的函数\n */\n public addListener(listener: (status: PreloadStatus) => void): () => void {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n /**\n * 通知所有监听器状态变化\n */\n private notifyListeners(status: PreloadStatus): void {\n this.listeners.forEach((listener) => {\n try {\n listener(status);\n } catch (error) {\n console.error('[MapPreloader] 监听器执行错误:', error);\n }\n });\n }\n\n /**\n * 重置管理器状态\n */\n public reset(): void {\n this.stopPreload();\n this.clearPreloadedInstances();\n this.listeners.clear();\n console.log('[MapPreloader] 管理器已重置');\n }\n}\n\n/**\n * 导出单例实例\n */\nexport const MapPreloader = MapPreloaderManager.getInstance();\n\n/**\n * 便捷函数:配置并启动预加载\n * @param config 预加载配置\n */\nexport function preloadMap(config?: PreloadConfig): void {\n if (config) {\n MapPreloader.configure(config);\n }\n MapPreloader.startPreload();\n}\n\n/**\n * 便捷函数:获取预加载状态\n */\nexport function getPreloadStatus(): PreloadStatus {\n return MapPreloader.getStatus();\n}\n\n/**\n * 便捷函数:清理预加载实例\n */\nexport function clearPreloadedMaps(): void {\n MapPreloader.clearPreloadedInstances();\n}"]}
1
+ {"version":3,"file":"MapPreloader.js","sourceRoot":"","sources":["../../src/utils/MapPreloader.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * 地图预加载管理器\n * 统一的预加载 API,自动选择原生或 JS 层预加载\n * - 如果原生预加载可用,优先使用原生方案(性能提升 60-80%)\n * - 否则回退到 JS 层预加载(性能提升 5-25%)\n */\n\nimport { PreloadInstance, PreloadConfig, PreloadStrategy,PreloadStatus } from \"../types/preload.types\";\n\n// 动态导入原生模块,避免在模块不可用时报错\nlet NativeModule: any = null;\ntry {\n NativeModule = require('../ExpoGaodeMapModule').default;\n} catch (error) {\n console.warn('[MapPreloader] 原生模块加载失败,将只使用 JS 层预加载');\n}\n\n\n/**\n * 地图预加载管理器类\n * 单例模式,管理地图实例的预加载\n */\nclass MapPreloaderManager {\n private static instance: MapPreloaderManager;\n private preloadInstances: Map<string, PreloadInstance> = new Map();\n private config: Required<PreloadConfig> & { strategy: PreloadStrategy; fallbackOnTimeout: boolean } = {\n poolSize: 1,\n delay: 0,\n enabled: true,\n timeout: 15000, // 增加到 15 秒,给原生预加载更充足的时间\n strategy: 'auto',\n fallbackOnTimeout: true,\n };\n private currentStrategy: 'native' | 'js' | 'hybrid' = 'js';\n private hybridNativeReady = false;\n private hybridJSReady = false;\n private nativePreloadAvailable: boolean | null = null;\n private preloadTimer: ReturnType<typeof setTimeout> | null = null;\n private listeners: Set<(status: PreloadStatus) => void> = new Set();\n private isPreloading = false;\n private activeCheckInterval: ReturnType<typeof setInterval> | null = null;\n private activeTimeoutTimer: ReturnType<typeof setTimeout> | null = null;\n\n private constructor() {\n // 检测热重载,清理原生状态\n this.detectAndHandleHotReload();\n }\n \n /**\n * 检测并处理热重载\n */\n private detectAndHandleHotReload(): void {\n if (NativeModule) {\n try {\n // 检查原生是否有残留的预加载状态\n const status = NativeModule.getMapPreloadStatus();\n if (status && status.isPreloading) {\n console.warn('[MapPreloader] 检测到热重载,清理原生预加载状态');\n // 清理原生池\n NativeModule.clearMapPreloadPool();\n }\n } catch (error) {\n // 忽略错误\n }\n }\n }\n\n /**\n * 获取管理器单例实例\n */\n public static getInstance(): MapPreloaderManager {\n if (!MapPreloaderManager.instance) {\n MapPreloaderManager.instance = new MapPreloaderManager();\n }\n return MapPreloaderManager.instance;\n }\n\n /**\n * 配置预加载参数\n * @param config 预加载配置\n */\n public configure(config: PreloadConfig): void {\n this.config = {\n ...this.config,\n ...config,\n strategy: config.strategy || 'auto',\n fallbackOnTimeout: config.fallbackOnTimeout !== undefined ? config.fallbackOnTimeout : true,\n };\n \n // 重新检测策略\n this.detectStrategy();\n }\n\n /**\n * 检测并选择最优预加载策略\n */\n private detectStrategy(): void {\n if (this.config.strategy === 'js') {\n this.currentStrategy = 'js';\n console.log('[MapPreloader] 使用 JS 层预加载策略');\n return;\n }\n\n if (this.config.strategy === 'native') {\n this.currentStrategy = 'native';\n console.log('[MapPreloader] 强制使用原生预加载策略');\n return;\n }\n\n if (this.config.strategy === 'hybrid') {\n this.currentStrategy = 'hybrid';\n console.log('[MapPreloader] 使用混合预加载策略(原生 + JS 同时进行)');\n return;\n }\n\n // auto 模式:自动检测\n if (this.nativePreloadAvailable === null) {\n this.nativePreloadAvailable = this.checkNativePreloadAvailable();\n }\n\n this.currentStrategy = this.nativePreloadAvailable ? 'native' : 'js';\n console.log(`[MapPreloader] 自动选择策略: ${this.currentStrategy}`);\n }\n\n /**\n * 检查原生预加载是否可用\n */\n private checkNativePreloadAvailable(): boolean {\n try {\n // 检查原生模块是否存在预加载方法\n return (\n NativeModule &&\n typeof NativeModule?.startMapPreload === 'function' &&\n typeof NativeModule?.getMapPreloadStatus === 'function'\n );\n } catch (error) {\n console.warn('[MapPreloader] 原生预加载不可用:', error);\n return false;\n }\n }\n\n /**\n * 获取当前配置\n */\n public getConfig(): Required<PreloadConfig> {\n return { ...this.config };\n }\n\n /**\n * 开始预加载\n * 根据配置和策略选择最优的预加载方式\n */\n public startPreload(): void {\n if (!this.config.enabled) {\n console.log('[MapPreloader] 预加载已禁用');\n return;\n }\n\n if (this.isPreloading) {\n console.log('[MapPreloader] 预加载已在进行中');\n return;\n }\n\n // 清理之前的定时器和检查\n this.cleanupActiveTimers();\n\n // 检测策略\n this.detectStrategy();\n\n // 清除之前的定时器\n if (this.preloadTimer) {\n clearTimeout(this.preloadTimer);\n }\n\n // 延迟执行预加载\n this.preloadTimer = setTimeout(() => {\n if (this.currentStrategy === 'hybrid') {\n this.executeHybridPreload();\n } else if (this.currentStrategy === 'native') {\n this.executeNativePreload();\n } else {\n this.executeJSPreload();\n }\n }, this.config.delay);\n }\n \n /**\n * 执行混合预加载(同时启动原生和 JS)\n */\n private async executeHybridPreload(): Promise<void> {\n this.cleanupActiveTimers();\n this.isPreloading = true;\n this.hybridNativeReady = false;\n this.hybridJSReady = false;\n this.notifyListeners('loading');\n\n console.log(`[MapPreloader] 🚀 开始混合预加载(原生 + JS 同时进行)`);\n const startTime = Date.now();\n\n // 同时启动原生和 JS 预加载\n const nativePromise = this.executeHybridNativePreload(startTime);\n const jsPromise = this.executeHybridJSPreload(startTime);\n\n // 等待任意一个完成\n try {\n await Promise.race([nativePromise, jsPromise]);\n } catch (error) {\n console.error('[MapPreloader] 混合预加载失败:', error);\n this.isPreloading = false;\n this.notifyListeners('error');\n }\n }\n\n /**\n * 混合模式下的原生预加载\n */\n private async executeHybridNativePreload(startTime: number): Promise<void> {\n if (!NativeModule) {\n console.log('[MapPreloader] 原生模块不可用,跳过原生预加载');\n return;\n }\n\n try {\n // 清理原生池\n await NativeModule.clearMapPreloadPool();\n \n // 开始原生预加载\n await NativeModule.startMapPreload({ poolSize: this.config.poolSize });\n \n let consecutiveReadyCount = 0;\n const REQUIRED_READY_COUNT = 2;\n \n return new Promise((resolve, reject) => {\n const checkInterval = setInterval(() => {\n // 如果 JS 已经完成,停止检查\n if (this.hybridJSReady) {\n clearInterval(checkInterval);\n console.log('[MapPreloader] JS 已完成,停止原生检查');\n resolve();\n return;\n }\n\n try {\n const status = NativeModule.getMapPreloadStatus();\n \n if (status && !status.isPreloading && status.poolSize > 0) {\n consecutiveReadyCount++;\n \n if (consecutiveReadyCount >= REQUIRED_READY_COUNT) {\n clearInterval(checkInterval);\n \n if (!this.hybridNativeReady && !this.hybridJSReady) {\n this.hybridNativeReady = true;\n const duration = Date.now() - startTime;\n this.isPreloading = false;\n this.notifyListeners('ready');\n console.log(`[MapPreloader] ✅ 原生预加载先完成(耗时: ${duration}ms)`);\n resolve();\n }\n }\n } else {\n consecutiveReadyCount = 0;\n }\n } catch (error) {\n clearInterval(checkInterval);\n console.warn('[MapPreloader] 原生预加载检查失败:', error);\n reject(error);\n }\n }, 100);\n\n // 超时处理\n setTimeout(() => {\n if (!this.hybridNativeReady && !this.hybridJSReady) {\n clearInterval(checkInterval);\n console.warn('[MapPreloader] ⚠️ 原生预加载超时,等待 JS 完成');\n }\n }, this.config.timeout);\n });\n } catch (error) {\n console.error('[MapPreloader] 原生预加载启动失败:', error);\n throw error;\n }\n }\n\n /**\n * 混合模式下的 JS 预加载\n */\n private async executeHybridJSPreload(startTime: number): Promise<void> {\n // 创建预加载实例\n for (let i = 0; i < this.config.poolSize; i++) {\n const instanceId = `preload_hybrid_${Date.now()}_${i}`;\n const instance: PreloadInstance = {\n id: instanceId,\n status: 'loading',\n timestamp: Date.now(),\n };\n this.preloadInstances.set(instanceId, instance);\n }\n\n return new Promise((resolve) => {\n setTimeout(() => {\n // 如果原生已经完成,不需要通知\n if (this.hybridNativeReady) {\n this.preloadInstances.forEach((instance) => {\n instance.status = 'ready';\n });\n console.log('[MapPreloader] JS 预加载完成(原生已先完成)');\n resolve();\n return;\n }\n\n // JS 先完成\n if (!this.hybridJSReady) {\n this.hybridJSReady = true;\n this.preloadInstances.forEach((instance) => {\n instance.status = 'ready';\n });\n \n const duration = Date.now() - startTime;\n this.isPreloading = false;\n this.notifyListeners('ready');\n console.log(`[MapPreloader] ✅ JS 预加载先完成(耗时: ${duration}ms)`);\n }\n \n resolve();\n }, 100);\n });\n }\n \n /**\n * 清理活动的定时器\n */\n private cleanupActiveTimers(): void {\n if (this.activeCheckInterval) {\n clearInterval(this.activeCheckInterval);\n this.activeCheckInterval = null;\n }\n if (this.activeTimeoutTimer) {\n clearTimeout(this.activeTimeoutTimer);\n this.activeTimeoutTimer = null;\n }\n }\n\n /**\n * 执行原生预加载\n */\n private async executeNativePreload(): Promise<void> {\n // 清理之前可能残留的定时器\n this.cleanupActiveTimers();\n \n this.isPreloading = true;\n this.notifyListeners('loading');\n\n console.log(`[MapPreloader] 开始原生预加载 ${this.config.poolSize} 个地图实例(超时: ${this.config.timeout}ms)`);\n\n try {\n const startTime = Date.now();\n \n // 先清理原生池,避免热重载导致的状态不一致\n try {\n await NativeModule.clearMapPreloadPool();\n console.log('[MapPreloader] 已清理原生预加载池');\n } catch (e) {\n // 忽略清理错误\n }\n \n // 开始新的预加载\n await NativeModule.startMapPreload({ poolSize: this.config.poolSize });\n \n let consecutiveReadyCount = 0;\n const REQUIRED_READY_COUNT = 2; // 减少到 2 次确认,提高响应速度\n \n // 等待预加载完成\n this.activeCheckInterval = setInterval(() => {\n try {\n const status = NativeModule.getMapPreloadStatus();\n \n // 检查是否真正完成\n if (status && !status.isPreloading && status.poolSize > 0) {\n consecutiveReadyCount++;\n \n if (consecutiveReadyCount >= REQUIRED_READY_COUNT) {\n this.cleanupActiveTimers();\n \n const duration = Date.now() - startTime;\n this.isPreloading = false;\n this.notifyListeners('ready');\n console.log(`[MapPreloader] ✅ 原生预加载完成(耗时: ${duration}ms,池大小: ${status.poolSize})`);\n }\n } else {\n consecutiveReadyCount = 0;\n }\n } catch (error) {\n this.cleanupActiveTimers();\n console.error('[MapPreloader] 原生预加载检查失败:', error);\n \n if (this.config.fallbackOnTimeout) {\n console.log('[MapPreloader] 回退到 JS 预加载');\n this.currentStrategy = 'js';\n this.executeJSPreload();\n } else {\n this.isPreloading = false;\n this.notifyListeners('error');\n }\n }\n }, 100);\n\n // 超时处理\n this.activeTimeoutTimer = setTimeout(() => {\n if (this.isPreloading) {\n this.cleanupActiveTimers();\n \n const duration = Date.now() - startTime;\n \n // 最后检查一次\n try {\n const finalStatus = NativeModule.getMapPreloadStatus();\n if (finalStatus && !finalStatus.isPreloading && finalStatus.poolSize > 0) {\n this.isPreloading = false;\n this.notifyListeners('ready');\n console.log(`[MapPreloader] ✅ 原生预加载完成(耗时: ${duration}ms,接近超时)`);\n return;\n }\n } catch (e) {\n // 忽略\n }\n \n console.warn(`[MapPreloader] ⚠️ 原生预加载超时(${duration}ms > ${this.config.timeout}ms)`);\n console.warn('[MapPreloader] 💡 提示: 热重载可能导致原生状态不同步,建议重启应用');\n \n if (this.config.fallbackOnTimeout) {\n console.log('[MapPreloader] 自动回退到 JS 预加载');\n this.currentStrategy = 'js';\n this.executeJSPreload();\n } else {\n this.isPreloading = false;\n this.notifyListeners('error');\n }\n }\n }, this.config.timeout);\n } catch (error) {\n this.cleanupActiveTimers();\n console.error('[MapPreloader] 原生预加载启动失败:', error);\n this.isPreloading = false;\n this.notifyListeners('error');\n \n if (this.config.fallbackOnTimeout) {\n console.log('[MapPreloader] 回退到 JS 预加载');\n this.currentStrategy = 'js';\n this.executeJSPreload();\n }\n }\n }\n\n /**\n * 执行 JS 层预加载逻辑\n */\n private executeJSPreload(): void {\n this.isPreloading = true;\n this.notifyListeners('loading');\n\n const startTime = Date.now();\n console.log(`[MapPreloader] 开始 JS 层预加载 ${this.config.poolSize} 个地图实例`);\n\n // 创建预加载实例\n for (let i = 0; i < this.config.poolSize; i++) {\n const instanceId = `preload_${Date.now()}_${i}`;\n const instance: PreloadInstance = {\n id: instanceId,\n status: 'loading',\n timestamp: Date.now(),\n };\n this.preloadInstances.set(instanceId, instance);\n }\n\n // 模拟预加载完成(实际场景中,这里会触发原生地图初始化)\n setTimeout(() => {\n this.preloadInstances.forEach((instance) => {\n instance.status = 'ready';\n });\n this.isPreloading = false;\n this.notifyListeners('ready');\n \n const duration = Date.now() - startTime;\n console.log(`[MapPreloader] ✅ JS 层预加载完成(耗时: ${duration}ms)`);\n }, 100);\n }\n\n /**\n * 停止预加载\n */\n public stopPreload(): void {\n if (this.preloadTimer) {\n clearTimeout(this.preloadTimer);\n this.preloadTimer = null;\n }\n this.isPreloading = false;\n this.notifyListeners('idle');\n }\n\n /**\n * 清理所有预加载实例\n */\n public clearPreloadedInstances(): void {\n console.log(`[MapPreloader] 清理 ${this.preloadInstances.size} 个预加载实例`);\n this.preloadInstances.clear();\n this.isPreloading = false;\n this.notifyListeners('idle');\n }\n\n /**\n * 获取一个可用的预加载实例\n * @returns 预加载实例 ID,如果没有可用实例则返回 null\n */\n public getPreloadedInstance(): string | null {\n for (const [id, instance] of this.preloadInstances.entries()) {\n if (instance.status === 'ready') {\n // 标记为已使用(从池中移除)\n this.preloadInstances.delete(id);\n console.log(`[MapPreloader] 使用预加载实例: ${id}`);\n return id;\n }\n }\n return null;\n }\n\n /**\n * 获取预加载状态\n */\n public getStatus(): PreloadStatus {\n // 如果使用原生预加载,检查原生状态\n if (this.currentStrategy === 'native') {\n try {\n const nativeStatus = NativeModule.getMapPreloadStatus();\n if (nativeStatus.isPreloading) {\n return 'loading';\n }\n if (nativeStatus.poolSize > 0) {\n return 'ready';\n }\n } catch (error) {\n console.warn('[MapPreloader] 获取原生状态失败:', error);\n }\n }\n\n // JS 层状态检查\n if (this.isPreloading) {\n return 'loading';\n }\n \n const hasReadyInstance = Array.from(this.preloadInstances.values()).some(\n (instance) => instance.status === 'ready'\n );\n \n if (hasReadyInstance) {\n return 'ready';\n }\n\n const hasError = Array.from(this.preloadInstances.values()).some(\n (instance) => instance.status === 'error'\n );\n\n if (hasError) {\n return 'error';\n }\n\n return 'idle';\n }\n\n /**\n * 获取当前使用的预加载策略\n */\n public getCurrentStrategy(): 'native' | 'js' | 'hybrid' {\n return this.currentStrategy;\n }\n\n /**\n * 检查原生预加载是否可用\n */\n public isNativePreloadAvailable(): boolean {\n if (this.nativePreloadAvailable === null) {\n this.nativePreloadAvailable = this.checkNativePreloadAvailable();\n }\n return this.nativePreloadAvailable;\n }\n\n /**\n * 获取预加载实例数量统计\n */\n public getStats(): {\n total: number;\n ready: number;\n loading: number;\n error: number;\n strategy: 'native' | 'js' | 'hybrid';\n } {\n // 混合模式:返回综合统计\n if (this.currentStrategy === 'hybrid') {\n const jsInstances = Array.from(this.preloadInstances.values());\n let nativePoolSize = 0;\n \n \n try {\n const nativeStatus = NativeModule.getMapPreloadStatus();\n nativePoolSize = nativeStatus.poolSize;\n \n } catch (error) {\n // 忽略\n }\n\n return {\n total: Math.max(jsInstances.length, nativePoolSize),\n ready: this.hybridNativeReady || this.hybridJSReady ? 1 : 0,\n loading: !this.hybridNativeReady && !this.hybridJSReady ? 1 : 0,\n error: 0,\n strategy: 'hybrid',\n };\n }\n\n // 如果使用原生预加载,返回原生统计\n if (this.currentStrategy === 'native') {\n try {\n const nativeStatus = NativeModule.getMapPreloadStatus();\n return {\n total: nativeStatus.poolSize,\n ready: nativeStatus.isPreloading ? 0 : nativeStatus.poolSize,\n loading: nativeStatus.isPreloading ? nativeStatus.poolSize : 0,\n error: 0,\n strategy: 'native',\n };\n } catch (error) {\n console.warn('[MapPreloader] 获取原生统计失败:', error);\n }\n }\n\n // JS 层统计\n const instances = Array.from(this.preloadInstances.values());\n return {\n total: instances.length,\n ready: instances.filter((i) => i.status === 'ready').length,\n loading: instances.filter((i) => i.status === 'loading').length,\n error: instances.filter((i) => i.status === 'error').length,\n strategy: 'js',\n };\n }\n\n /**\n * 添加状态监听器\n * @param listener 状态变化回调函数\n * @returns 取消监听的函数\n */\n public addListener(listener: (status: PreloadStatus) => void): () => void {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n /**\n * 通知所有监听器状态变化\n */\n private notifyListeners(status: PreloadStatus): void {\n this.listeners.forEach((listener) => {\n try {\n listener(status);\n } catch (error) {\n console.error('[MapPreloader] 监听器执行错误:', error);\n }\n });\n }\n\n /**\n * 重置管理器状态\n */\n public reset(): void {\n this.stopPreload();\n this.clearPreloadedInstances();\n this.listeners.clear();\n console.log('[MapPreloader] 管理器已重置');\n }\n}\n\n/**\n * 导出单例实例\n */\nexport const MapPreloader = MapPreloaderManager.getInstance();\n\n/**\n * 便捷函数:配置并启动预加载\n * @param config 预加载配置\n */\nexport function preloadMap(config?: PreloadConfig): void {\n if (config) {\n MapPreloader.configure(config);\n }\n MapPreloader.startPreload();\n}\n\n/**\n * 便捷函数:获取预加载状态\n */\nexport function getPreloadStatus(): PreloadStatus {\n return MapPreloader.getStatus();\n}\n\n/**\n * 便捷函数:清理预加载实例\n */\nexport function clearPreloadedMaps(): void {\n MapPreloader.clearPreloadedInstances();\n}"]}
@@ -162,61 +162,46 @@ public class ExpoGaodeMapModule: Module {
162
162
  * 返回位置信息和逆地理编码结果
163
163
  */
164
164
  AsyncFunction("getCurrentLocation") { (promise: Promise) in
165
- // 检查隐私协议状态
165
+
166
+ // 隐私
166
167
  if !ExpoGaodeMapModule.privacyAgreed {
167
168
  promise.reject("PRIVACY_NOT_AGREED", "用户未同意隐私协议,无法获取位置")
168
169
  return
169
170
  }
170
-
171
- // 检查是否已设置 API Key
171
+
172
+ // API key
172
173
  if AMapServices.shared().apiKey == nil || AMapServices.shared().apiKey?.isEmpty == true {
173
174
  promise.reject("API_KEY_NOT_SET", "未设置 API Key,无法获取位置")
174
175
  return
175
176
  }
176
-
177
+
178
+ // 权限
177
179
  let status = CLLocationManager.authorizationStatus()
178
180
 
179
- if status == .authorizedAlways || status == .authorizedWhenInUse {
180
- let manager = self.getLocationManager()
181
- manager.locationManager?.requestLocation(withReGeocode: manager.locationManager?.locatingWithReGeocode ?? true, completionBlock: { location, regeocode, error in
182
- if let error = error {
183
- promise.reject("LOCATION_ERROR", error.localizedDescription)
184
- return
185
- }
186
-
187
- guard let location = location else {
188
- promise.reject("LOCATION_ERROR", "位置信息为空")
189
- return
190
- }
191
-
192
- var locationData: [String: Any] = [
193
- "latitude": location.coordinate.latitude,
194
- "longitude": location.coordinate.longitude,
195
- "accuracy": location.horizontalAccuracy,
196
- "altitude": location.altitude,
197
- "bearing": location.course,
198
- "speed": location.speed,
199
- "timestamp": location.timestamp.timeIntervalSince1970 * 1000
200
- ]
201
-
202
- if let regeocode = regeocode {
203
- locationData["address"] = regeocode.formattedAddress
204
- locationData["province"] = regeocode.province
205
- locationData["city"] = regeocode.city
206
- locationData["district"] = regeocode.district
207
- locationData["street"] = regeocode.street
208
- locationData["streetNumber"] = regeocode.number
209
- locationData["country"] = regeocode.country
210
- locationData["cityCode"] = regeocode.citycode
211
- locationData["adCode"] = regeocode.adcode
212
- }
213
-
214
- promise.resolve(locationData)
215
- })
216
- } else {
181
+
182
+
183
+
184
+
185
+ guard status == .authorizedAlways || status == .authorizedWhenInUse else {
217
186
  promise.reject("LOCATION_ERROR", "location unauthorized")
187
+ return
218
188
  }
189
+
190
+ // 调用我们 LocationManager 的单次定位封装
191
+ let manager = self.getLocationManager()
192
+
193
+
194
+
195
+ manager.requestSingleLocation(
196
+ onSuccess: { data in
197
+ promise.resolve(data)
198
+ },
199
+ onError: { code, message in
200
+ promise.reject(code, message)
201
+ }
202
+ )
219
203
  }
204
+
220
205
 
221
206
  /**
222
207
  * 坐标转换