Localizar o mapa

É possível personalizar as configurações de idioma e região usadas no mapa mudando o ambiente de localidade no Map, o que pode afetar os rótulos e o comportamento do mapa com base no idioma e no país ou território especificados.

Consulte a cobertura do SDK do Maps 3D para iOS na tabela de cobertura do Maps.

Localização de idioma

Por padrão, o SDK do Maps 3D para iOS usa a localidade do sistema configurada no dispositivo do usuário (Locale.current) para determinar qual tradução do mapa mostrar. É possível substituir esse comportamento padrão aplicando o modificador do SwiftUI .environment(\.locale, ...) à visualização Map ou atualizar a variável de estado Locale vinculada dinamicamente no momento da execução.

A definição do idioma afeta a tradução de recursos políticos, descritores e recursos naturais, como mudar "Geneva" para "Genève" ou "lake" para "lac", e muda a direção em que o texto é renderizado para scripts da direita para a esquerda.

O SDK do Maps 3D para iOS procura preferências de localização na seguinte ordem:

  1. Ambiente do SwiftUI: o valor Locale transmitido para .environment(\.locale, ...) em Map.
  2. Configurações do dispositivo: a localidade padrão do sistema configurada no dispositivo iOS.

O exemplo a seguir mostra um Map em chinês ("zh") e define a região como China ("CN"):

import GoogleMaps3D
import SwiftUI

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

Também é possível atualizar o idioma e a região dinamicamente no momento da execução vinculando a localidade do ambiente a uma propriedade @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")
        }
      }
    }
  }
}

Localização de regiões

A definição da região no Locale transmitido para .environment(\.locale, ...) em Map pode veicular blocos de mapas diferentes ou direcionar o app para resultados regionalmente adequados. A definição da região também ajuda a garantir que o app aplique a localização regional para o país ou território em que ele é distribuído.

Para manter o idioma do dispositivo do usuário ao definir um código de região específico (por exemplo, "JP"), crie um Locale usando Locale.Components:

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