将地图本地化

您可以通过更改 Map 上的语言区域环境,自定义地图中使用的语言和区域设置,这可能会根据指定的语言和国家或地区影响地图的标签和行为。

如需了解 iOS 版 Maps 3D SDK 的覆盖范围,请参阅地图覆盖范围表。

语言本地化

默认情况下,iOS 版 Maps 3D SDK 会使用用户设备上配置的系统语言区域 (Locale.current) 来确定要显示的地图翻译版本。您可以通过对 Map 视图应用 SwiftUI .environment(\.locale, ...) 修饰符来替换此默认行为,也可以在运行时动态更新绑定的 Locale 状态变量。

设置语言会影响政治特征、描述符和自然特征的翻译(例如,将“Geneva”更改为“Genève”或将“lake”更改为“lac”),并会更改从右到左书写的文字的呈现方向。

iOS 版 Maps 3D SDK 会按以下顺序查找本地化偏好设置:

  1. SwiftUI 环境:在 Map 上传递给 .environment(\.locale, ...) 的 Locale 值。
  2. 设备设置:iOS 设备上配置的系统默认语言区域。

下例以中文 ("zh") 显示 Map,并将区域设置为中国 ("CN"):

import GoogleMaps3D
import SwiftUI

struct ContentView: View {
  var body: some View {
    Map(mode: .hybrid)
      .environment(\.locale, Locale(identifier: "zh-CN"))
  }
}

您还可以在运行时通过将环境语言区域绑定到 @State 属性来动态更新语言和区域:

import GoogleMaps3D
import SwiftUI

struct LocalizationExampleView: View {
  @State private var mapLocale: Locale = .current

  var body: some View {
    VStack {
      Map(mode: .hybrid)
        .environment(\.locale, mapLocale)

      HStack {
        Button("Français") {
          mapLocale = Locale(identifier: "fr-FR")
        }
        Button("日本語") {
          mapLocale = Locale(identifier: "ja-JP")
        }
        Button("中文") {
          mapLocale = Locale(identifier: "zh-CN")
        }
      }
    }
  }
}

区域本地化

在 Map 上,在传递给 .environment(\.locale, ...) 的 Locale 中设置区域,可以提供不同的地图图块,或使应用偏向于显示适合相应区域的结果。设置区域还有助于确保您的应用针对应用分发到的国家或地区应用区域本地化。

如需在设置特定地区代码(例如 "JP")的同时保留用户的设备语言,请使用 Locale.Components 构造 Locale:

var components = Locale.Components(locale: Locale.current)
components.region = Locale.Region("JP")
let regionBiasedLocale = Locale(components: components)