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

Flutter 2.8.1中LatLng/LatLngBounds方法未定义问题求助

解决Flutter固定版本下Google Maps LatLng传参错误(关联2024年渲染器自动更新)

问题背景

  • 基于Flutter 2.8.1(必须保留)、Dart 2.15.1、google_maps_flutter: ^2.1.12开发的应用原本正常运行,近期未做代码改动,却出现向LatLng传递经纬度时出错的问题
  • 怀疑问题触发原因是Google官方通知的「2024年3月4日起,基于Android版Maps SDK构建的应用将自动更新至最新渲染器」
  • 已尝试操作:更新Google控制台API密钥、执行flutter clean清理缓存、flutter pub get重新安装依赖,问题未解决

针对性解决方案

1. 锁定Android端Maps SDK版本,避免自动更新

打开Android项目app/build.gradle,在dependencies块中添加固定版本的Maps SDK依赖,强制使用与旧版google_maps_flutter兼容的原生SDK版本,绕过自动更新的最新渲染器:

dependencies {
    // 保留原有依赖,新增以下行
    implementation 'com.google.android.gms:play-services-maps:18.1.0'
}

执行flutter clean && flutter pub get后重新编译运行。

2. 增加LatLng参数合法性校验

最新渲染器对参数的校验逻辑更严格,即使之前正常的数据也可能触发错误,需在代码中添加参数校验:

// 从数据库获取经纬度后先校验
double? dbLatitude = ...;
double? dbLongitude = ...;

if (dbLatitude != null && dbLongitude != null &&
    dbLatitude >= -90 && dbLatitude <= 90 &&
    dbLongitude >= -180 && dbLongitude <= 180) {
  final validLatLng = LatLng(dbLatitude, dbLongitude);
  // 后续地图操作
} else {
  // 记录错误并处理非法数据
  print('非法经纬度参数: $dbLatitude, $dbLongitude');
}

3. 强制启用旧版渲染器(备选方案)

如果锁定SDK版本无效,可在AndroidManifest.xml中添加配置,强制使用旧版渲染器:

<application>
    <!-- 其他已有配置 -->
    <meta-data
        android:name="com.google.android.gms.maps.v2.force_old_renderer"
        android:value="true" />
</application>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:15:01