通过定位我们可以获得经度和纬度,通过地理信息反编码可以通过地理坐标返回某个地点的相关文字描述。
这些描述封装在CLPlacemark类中,它的属性为:
1)addressDictionary,地理信息字典
2)ISOcountryCode,ISO国家代号
3)Country,国家信息
4)postalCode,邮政编码
5)adminisrativeArea,行政区域信息
6)locality,指定城市信息
个人认为,字典中存储的值 跟 CLPlacemark中其它的属性的值是相同的。
地理信息反编码使用CLGeocoder类实现,这个类能够实现地理坐标与地理文字描述信息之间的转换
代码如下:
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
CLGeocoder * geocoder = [[CLGeocoder alloc] init];
[geocoder reverseGeocodeLocation:[locations lastObject] completionHandler:^(NSArray *placemarks, NSError *error) {
if([placemarks count] > 0){
CLPlacemark * placemark = placemarks[0];
//可以用字典类型获取地理文字信息,可以用Address Book framework中对应的键值来获取对应的信息
NSDictionary * dict = placemark.addressDictionary;
NSString * str = [dict objectForKey:(NSString *)kABPersonAddressCityKey];//获取城市信息
//还可以通过属性值来获取信息
NSLog(@"%@", placemark.country);//输出国家信息
NSLog(@"%@", placemark.locality);//指定城市信息
NSLog(@"%@", placemark.thoroughfare);//指定街道级别的信息
}
}];
}