我想从Google Places API中获取国家/地区代码,但我不知道怎么做。
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
。
答案 0 :(得分:1)
国家/地区名称不取决于编程语言,而是取决于API。如果您使用Google的反向地理编码API,则会在docs中发现将result_type
设置为国家/地区会产生您想要的结果。您先前打印的结果已经包含address_component,内容为Deutschland
。那个人有type
country
。在该地址组件中,您应该可以在short_name
中找到它。
答案 1 :(得分:-1)
尝试此操作以获取国家/地区名称,然后即可隐藏国家/地区代码
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 ""
}