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

Flutter集成Google Maps无法显示:异步资源加载异常求助

问题解决:Flutter Google Maps仅显示底部标识及缩放控件,地图无法加载

核心问题定位

从调试日志中可直接定位关键错误:

E/flutter (14290): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Unable to load asset: assets/map_style.json

该未捕获异常会打断地图初始化流程,是导致地图无法正常渲染的直接诱因。

分步解决步骤

1. 修复地图样式资源加载问题

  • 确认资源存在:检查项目根目录的assets文件夹中是否存在map_style.json,路径和文件名需严格匹配(Flutter对资源路径大小写敏感)。
  • 配置pubspec.yaml:确保在pubspec.yaml中正确声明资源,注意YAML缩进规范(用空格而非制表符):
    flutter:
      assets:
        - assets/map_style.json
    
  • 重启应用:修改pubspec.yaml后需完全重启应用,热重载/热重启无法加载新的资源配置。

2. 优化代码容错性

为避免资源加载失败导致地图初始化中断,在onMapCreated中添加异常捕获:

Future onMapCreated(GoogleMapController controller) async {
  _controller = controller;
  try {
    String value = await DefaultAssetBundle.of(context)
        .loadString('assets/map_style.json');
    _controller.setMapStyle(value);
  } catch (e) {
    print('地图样式加载失败: $e');
    // 可选:保留默认地图样式继续运行
  }
}

3. 验证Google Maps基础配置

若修复资源问题后地图仍不显示,检查以下配置:

  • API密钥有效性:确认Google Cloud控制台中已为该密钥启用Maps SDK for Android,且应用限制(包名、SHA-1指纹)配置正确。
  • AndroidManifest配置:确保API密钥元数据标签放置在<application>标签内部,而非<activity>标签前:
    <application ...>
      <!-- 其他应用配置 -->
      <meta-data
          android:name="com.google.android.geo.API_KEY"
          android:value="你的API密钥"/>
    </application>
    
  • 设备环境:真机需安装Google Play服务,模拟器需使用包含Google Play的系统镜像。

附加调试建议

  • 查看Google Cloud控制台的API使用报告,确认是否有请求被拒绝(如密钥无效、权限不足)。
  • 暂时移除地图样式加载代码,测试基础地图是否能正常显示,排除样式文件的影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:40:57