как получить код страны из гугл мест в swift - PullRequest
0 голосов
/ 04 октября 2018

Я хочу получить код страны из API Google Адресов, но не могу понять, как это сделать.

if let addressComponents = place?.addressComponents {
   for addressComponent in addressComponents {
       print("Name: \(addressComponent.name) Type: \(addressComponent.type)")
   }
}

Я всегда получаю такие результаты

Name: Sassnitzer Straße Type: route
Name: Lütten Klein Type: sublocality_level_1
Name: Rostock Type: locality
Name: Rostock Type: administrative_area_level_3
Name: Mecklenburg-Vorpommern Type: administrative_area_level_1
Name: Deutschland Type: country
Name: 18107 Type: postal_code

В API вы можете установить различные фильтры для автозаполнения, такие как nofilter, geocode, address, establishment, region, city Некоторые из них дают мне дополнительные результаты, такие как administrative_area_level_3но без кода страны.

Идея состоит в том, что пользователь вводит свой адрес, а я просто сохраняю код страны вместо названия страны на разных языках.В других языках программирования код страны - это короткое имя.Например, вот так place.address_components[i].short_name.

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Попробуйте, чтобы получить название страны, и вы можете преобразовать в код страны

 if let addressComponents = place.addressComponents,let countryComponent = (addressComponents.filter { $0.type == "country" }.first) {
  let countryName = countryComponent.name
   print("Country::::::::\(countryName)")
}

Преобразовать название страны в код страны

private func locale(for fullCountryName : String) -> String {

    for localeCode in NSLocale.isoCountryCodes {
        let identifier = NSLocale(localeIdentifier: localeCode)
        let countryName = identifier.displayName(forKey: NSLocale.Key.countryCode, value: localeCode)
        if fullCountryName.lowercased() == countryName?.lowercased() {
            return localeCode
        }
    }
    return ""
}
0 голосов
/ 04 октября 2018

Название страны не зависит от языка программирования, а зависит от API.Если вы используете API обратного геокодирования Google, в документах вы обнаружите, что установка result_type для страны должна дать результаты, которые вы ищете.Результаты, которые вы напечатали ранее, уже содержат address_component, говорящий Deutschland.У этого есть type country.В этом компоненте адреса вы сможете найти его в short_name.

...