iOS定位服务与地图开发(2)---地理信息反编码
2014-05-11 14:05
645 查看
上节我们通过定位获取了经度和纬度数值,但是一般人很难看懂这些数字。
地理信息反编码:就是根据这些经纬数字返回地点的相关文字描述信息,这些文字描述信息被封装在CLPlacemark类中,我们称这个类为“地标”类。
地理信息反编码使用CLGeocoder类实现,这个类能够实现在地理坐标与地理文字描述信息之间的转换。
CLGeocoder类中进行地理信息反编码的方法是:reverseGeocodeLocation: completionHandler:
location:是要定位的地理位置对象
completionHandler:指定了一个代码块,用于地理位置反编码之后的回调。
【说明】:
_currLocation是CLLocation类型的成员变量,是在委托方法locationManager:didUpdateLocations:中获得的。
completionHandler:^(NSArray *plackmrks , NSError *error)参数placemarks是反编码成功的地标集合。如果用户要查看所有的地标信息,需要循环遍历。
下面这些键是在AddressBook框架中定义的常量,需要引入AddressBook.framework框架:
kABPersonAddressStreetKey键:可以从字典中取出地标的街道信息
kABPersonAddressStateKey键:可以从字典中取出地标所在的州、省等信息
kABPersonAddressCityKey键:可以从字典中取出地标所在的城市等信息
地理信息反编码:就是根据这些经纬数字返回地点的相关文字描述信息,这些文字描述信息被封装在CLPlacemark类中,我们称这个类为“地标”类。
地理信息反编码使用CLGeocoder类实现,这个类能够实现在地理坐标与地理文字描述信息之间的转换。
CLGeocoder类中进行地理信息反编码的方法是:reverseGeocodeLocation: completionHandler:
location:是要定位的地理位置对象
completionHandler:指定了一个代码块,用于地理位置反编码之后的回调。
-(IBAction)reverseGeocode:(id)sender { CLGeocoder *geoCoder = [[CLGeocoder alloc] init]; [geoCoder reverseGeocodeLocation:_currLocation completionHandler:^(NSArray *placemarks, NSError *error) { //得到的数组placemarks就是CLPlacemark对象数组,这里只取第一个就行 CLPlacemark *mark = nil; if([placemarks count] > 0){ id tempMark = [placemarks objectAtIndex:0]; if([tempMark isKindOfClass:[CLPlacemark class]]) { mark = tempMark; } //具体业务逻辑,CLPlacemark的属性有很多,包括了街道名等相关属性 NSDictionary *addressDict = mark.addressDictionary; NSString *address = [addressDict objectForKey:(NSString)kABPersonAddressStreetKey]; address = address == nil ? @"" : address; NSString *state = [addressDict objectForKey:(NSString)kABPersonAddressStateKey]; state = state == nil ? @"" : state; NSString *city = [addressDict objectForKey:(NSString)kABPersonAddressCityKey]; city = city == nil ? @"" : city; // 获取地标对应的可读的文字信息,一般返回到UI显示 NSString *streetInfo = [NSString stringWithFormat:@"%@\n%@\n%@\n",state,address,city]; } }]; }
【说明】:
_currLocation是CLLocation类型的成员变量,是在委托方法locationManager:didUpdateLocations:中获得的。
completionHandler:^(NSArray *plackmrks , NSError *error)参数placemarks是反编码成功的地标集合。如果用户要查看所有的地标信息,需要循环遍历。
下面这些键是在AddressBook框架中定义的常量,需要引入AddressBook.framework框架:
kABPersonAddressStreetKey键:可以从字典中取出地标的街道信息
kABPersonAddressStateKey键:可以从字典中取出地标所在的州、省等信息
kABPersonAddressCityKey键:可以从字典中取出地标所在的城市等信息
相关文章推荐
- iOS定位服务与地图开发(3)---地理信息编码查询
- iOS.定位服务与地图应用.03.地理信息编码查询
- iOS.定位服务与地图应用.02.地理信息反编码
- iOS开发地图定位及地理编码
- iOS开发——定位获取经纬度坐标,并反编码获得地理位置信息(具体地址,国家、省、市等)
- IOS学习之——定位服务3 地理信息编码
- iOS开发——高德地图调研之显示地图、定位与地理编码等
- iOS开发:高德地图显示、定位、反地理编码
- iOS 6 开发---开发定位服务的App-在地图上标注位置
- iOS定位服务与地图开发(7)---使用本地化的百度地图
- 【iOS】7.4 定位服务->2.1.3.2 定位 - 官方框架CoreLocation 功能2:地理编码和反地理编码
- iOS项目开发— CoreLocation的定位服务和地理编码与发编码实现
- iOS百度地图简单应用( iOS地图定位(定位、地理编码与反地理编码、mapView、大头针)
- iOS开发-地图03-地理编码
- ios开发之 -- 调用系统定位获取当前经纬度与地理信息
- Android地图地理信息定位服务(一)
- ios 定位经纬度获取位置信息,地理位置编码与反编码
- iOS开发-百度地图基本定位和罗盘跟随的使用,附加地理编码和反地理编码
- iOS定位服务与地图开发(4)---显示地图
- 判断一个坐标点是否在一个无规则的多边形内 (iOS定位服务与地图应用开发:高德地图开发)