iOS定位服务与地图开发(2)---地理信息反编码

时间:2014-05-11 16:38:11   收藏:0   阅读:455

上节我们通过定位获取了经度和纬度数值,但是一般人很难看懂这些数字。

地理信息反编码:就是根据这些经纬数字返回地点的相关文字描述信息,这些文字描述信息被封装在CLPlacemark类中,我们称这个类为“地标”类。

地理信息反编码使用CLGeocoder类实现,这个类能够实现在地理坐标与地理文字描述信息之间的转换。

CLGeocoder类中进行地理信息反编码的方法是:reverseGeocodeLocationcompletionHandler:

location:是要定位的地理位置对象

completionHandler:指定了一个代码块,用于地理位置反编码之后的回调。

bubuko.com,布布扣
-(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];    
         }             
     }];
}                
bubuko.com,布布扣

【说明】:

_currLocation是CLLocation类型的成员变量,是在委托方法locationManager:didUpdateLocations:中获得的。

completionHandler:^(NSArray *plackmrks , NSError *error)参数placemarks是反编码成功的地标集合。如果用户要查看所有的地标信息,需要循环遍历。

下面这些键是在AddressBook框架中定义的常量,需要引入AddressBook.framework框架:

kABPersonAddressStreetKey键:可以从字典中取出地标的街道信息

kABPersonAddressStateKey键:可以从字典中取出地标所在的州、省等信息

kABPersonAddressCityKey键:可以从字典中取出地标所在的城市等信息

 

iOS定位服务与地图开发(2)---地理信息反编码,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!