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

无需修改设备地区,在Flutter中更改Google Maps组件的语言

Google Maps Flutter 地图语言切换解决方案

Flutter自带的国际化配置(Localizations)只负责Flutter组件的语言,Google Maps的地图语言得单独设置——因为它依赖原生平台的Google Maps SDK配置,和Flutter的本地化体系不互通。下面是具体实现方法:

方式1:用mapStyle自定义(适合局部调整)

如果只需要修改部分UI文本,可以通过自定义地图样式覆盖,但这种方法没法修改地名、道路名这类核心地图元素,仅适合局部需求:

// 示例:设置地图文本为希伯来语的样式JSON
final String hebrewMapStyle = '''
[
  {
    "elementType": "labels.text",
    "stylers": [
      {"language": "he"}
    ]
  }
]
''';

// 在GoogleMap组件中应用
GoogleMap(
  initialCameraPosition: defaultCameraPosition,
  mapStyle: hebrewMapStyle,
)

方式2:原生平台配置(彻底修改所有地图语言)

这是最靠谱的方法,分别给Android和iOS做配置:

Android端步骤

  1. 在android/app/src/main/res/values/strings.xml(或对应语言的目录,比如values-he/strings.xml)添加:
<string name="google_map_language">he</string>
  1. 打开AndroidManifest.xml,在<application>标签里添加元数据配置:
<meta-data
    android:name="com.google.android.gms.maps.language"
    android:value="@string/google_map_language"/>

要是需要动态切换语言,就得用MethodChannel写原生代码修改这个配置,改完重启地图生效。

iOS端步骤

  1. 打开ios/Runner/Info.plist,添加以下配置:
<key>GMSMapViewPreferredLanguage</key>
<string>he</string>
  1. 动态切换的话,同样用MethodChannel调用iOS原生代码,修改GMSMapView的偏好语言:
import GoogleMaps

func updateMapLanguage(to language: String) {
    GMSMapView.preferredLanguage = language
    // 重新加载地图视图
}

关键提醒

  • 用标准ISO 639-1语言代码即可,比如he对应希伯来语,en对应英语
  • 动态切换语言后,必须重新创建GoogleMap组件或者重启地图视图才能生效
  • 别指望Flutter的Localizations能控制Google Maps的语言,两个系统是独立的

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 09:33:25