You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native Expo应用Google Map在模拟器正常安卓真机不显示无报错

  • 检查Google Cloud控制台的API密钥配置:
    确认你启用了Google Maps Android SDK服务,同时API密钥的安卓应用限制中,同时添加了调试版和发布版对应的包名、SHA-1指纹。两个版本的SHA-1签名不同,缺少任意一个都会导致真机上地图加载被拦截,且不会抛出显性错误。
  • 补全安卓权限声明:
    仅运行时请求定位权限不够,需要在app.json的android配置项中添加权限声明:
    "android": {
      "permissions": ["ACCESS_FINE_LOCATION", "ACCESS_COARSE_LOCATION"],
      // 其余原有配置保留
    }
    
  • 排查MapView样式问题:
    确认MapView组件有明确的宽高赋值,优先给组件添加style={{flex: 1}},同时保证其父容器也设置了flex: 1。部分安卓机型对百分比布局的解析逻辑和模拟器不同,容器高度计算为0时会出现地图不显示的问题。
  • 避免定位API混用冲突:
    你当前的代码同时使用了Expo原生定位API和web定位polyfill,二者冲突可能导致位置信息获取异常,地图区域mapRegion未正确赋值导致无内容展示。修改定位逻辑,直接使用Expo Location的接口即可:
    const { status } = await Location.requestForegroundPermissionsAsync();
    if (status === 'granted') {
      const position = await Location.getCurrentPositionAsync({enableHighAccuracy: true});
      this.setState({
          userLat: position.coords.latitude,
          userLong: position.coords.longitude,
          userLatLoaded:true,
          mapRegion: {
              latitude: position.coords.latitude,
              longitude: position.coords.longitude,
              latitudeDelta: 0.1,
              longitudeDelta: 0.1,
          },
      });
      this.fetchData();
    } else {
      throw new Error('Location permission not granted');
    }
    
  • 重新构建自定义开发客户端:
    如果你使用的是expo-dev-client,修改app.json中的原生配置后必须重新构建自定义客户端,旧的客户端不会加载新的API密钥配置,导致配置不生效。

内容的提问来源于stack exchange,提问作者Muditha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:18:02