当用户点击MapKit
地图上的特定地点时,我需要知道某个国家/地区是否属于特定国家/地区(例如西班牙),然后我必须根据检索到的信息。
我最初想过使用我得到的国家/地区名称from:
reverseGeocodeLocation(_ location: CLLocation,
completionHandler: @escaping CLGeocodeCompletionHandler)
但国家/地区名称与设备区域设置严格相关,因此使用国家/地区名称并不是一个好主意...
然后,我认为让isoCountryCode
成为更好的选择,但是,我不知道为什么在我的测试CLPlacemark
中没有返回它。
最后,还有CLGeocoder().reverseGeocodeLocation
函数的另一个版本,可让您指定preferredLocale
。 this是可行的吗?
func reverseGeocodeLocation(_ location: CLLocation,
preferredLocale locale: Locale?,
completionHandler: @escaping CLGeocodeCompletionHandler)
答案 0 :(得分:1)
从lat&获取地址信息长,
<强>夫特强>
let loc: CLLocation = CLLocation(latitude:center.latitude, longitude: center.longitude)
geoCoder.reverseGeocodeLocation(loc, completionHandler:
{(placemarks, error) in
if (error != nil)
{
print("reverse geodcode fail: \(error!.localizedDescription)")
}
let pm = placemarks! as [CLPlacemark]
if pm.count > 0 {
let pm = placemarks![0]
print(pm.country)
print(pm.ISOcountryCode)
}
})
}
<强>的OBJ-C 强>
CLGeocoder *geocoder = [[CLGeocoder alloc] init] ;
__block CLPlacemark *placemark = nil;
[geocoder reverseGeocodeLocation:currentLocation
completionHandler:^(NSArray *placemarks, NSError *error)
{
if (error){
NSLog(@"************************************* Geocode failed with error:************************************* \n %@", error);
}else{
placemark = [placemarks objectAtIndex:0];
NSLog(@"Current placemark %@", placemark);
NSLog(@"Current country code: %@", [placemark ISOcountryCode]);
}
}];