首页
/ React Native Maps在iOS上使用Google地图的问题解析

React Native Maps在iOS上使用Google地图的问题解析

2025-05-14 14:09:39作者:田桥桑Industrious

问题背景

在使用React Native Maps库时,开发者在iOS设备上配置provider="google"会遇到错误提示"error out"。具体表现为控制台输出"TypeError: Cannot read property 'bubblingEventTypes' of null"的错误信息。

错误现象

当开发者在iOS设备上使用以下代码时会出现问题:

import MapView, { PROVIDER_GOOGLE } from 'react-native-maps';

<MapView style={styles.map} provider={PROVIDER_GOOGLE}/>

错误堆栈显示该问题与AIRGoogleMapMarker组件相关,表明在尝试访问一个空对象的属性时发生了异常。

根本原因

这个问题主要与Expo SDK 52的变更有关。从Expo SDK 52开始,Google Maps在iOS上的Expo Go应用中已被弃用,只能在开发构建(Development Build)中使用。这是Expo团队做出的架构调整决策。

解决方案

对于遇到此问题的开发者,有以下几种解决方案:

  1. 使用默认地图提供商:将PROVIDER_GOOGLE替换为PROVIDER_DEFAULT,这样在iOS上会自动使用Apple Maps。
import MapView, { PROVIDER_DEFAULT } from 'react-native-maps';

<MapView provider={PROVIDER_DEFAULT}/>
  1. 创建开发构建:如果需要继续使用Google Maps,可以创建自定义的开发构建版本。

  2. 降级Expo SDK:如果项目允许,可以考虑降级到支持Google Maps的Expo SDK 51或更早版本。

技术细节

这个错误表明React Native Maps库在尝试初始化Google Maps组件时遇到了问题。bubblingEventTypes是React Native事件系统的一部分,当组件未能正确初始化时,访问其属性会导致这类错误。

在Expo生态系统中,Google Maps在iOS上的支持一直有其特殊性。由于Apple和Google地图服务的竞争关系,以及平台限制,Expo团队决定在SDK 52中简化这一支持模型。

最佳实践建议

  1. 对于需要跨平台一致性的应用,建议使用PROVIDER_DEFAULT,让每个平台使用其原生地图服务。
  2. 如果必须使用Google Maps,考虑使用裸React Native项目而非Expo,或者创建自定义开发构建。
  3. 在开发前仔细阅读Expo的变更日志,了解各SDK版本的兼容性变化。

未来展望

React Native Maps团队正在努力解决包括此问题在内的多个架构问题,以全面支持新的架构。开发者可以关注项目的GitHub仓库以获取最新进展。

登录后查看全文
热门项目推荐

项目优选

收起
docsdocs
暂无描述
Markdown
831
5.5 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
495
520
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
978
2.31 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
806
1.16 K
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
792
1.59 K
kernelkernel
deepin linux kernel
C
32
16
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
484
314
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.03 K
777
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.21 K
1.26 K
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
659
298