将地图本地化

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

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

语言本地化

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

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

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

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

以下示例以 Map以 中文 ("zh") 显示,并将区域设置为中国大陆 ("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")
        }
      }
    }
  }
}

区域本地化

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

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

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