码迷,mamicode.com
首页 > 其他好文 > 详细

地理编码与反地理编码

时间:2014-12-23 15:21:40      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

//成员属性

@property (nonatomic, strong) CLGeocoder *geocoder;

//懒加载:使用的时候再加载

- (CLGeocoder *)geocoder

{

    if (!_geocoder) {

        self.geocoder = [[CLGeocoder alloc] init];

    }

    return _geocoder;

}

//地理编码  能利用地址找到经纬度

- (IBAction)geocode {

    NSString *address = self.addressField.text;

    if (address.length == 0) return;

    

    [self.geocoder geocodeAddressString:address completionHandler:^(NSArray *placemarks, NSError *error) {

        if (error) {// 有错误(地址乱输入)

            self.detailAddressLabel.text = @"你找的地址可能只在火星有!!!";

        } else { // 编码成功

            // 取出最前面的地址

            CLPlacemark *pm = [placemarks firstObject];

            // 设置经纬度

            self.latitudeLabel.text = [NSString stringWithFormat:@"%.6f", pm.location.coordinate.latitude];

            self.longitudeLabel.text = [NSString stringWithFormat:@"%.6f", pm.location.coordinate.longitude];

            // 设置具体地址 

          self.detailAddressLabel.text = pm.name; 

           }

    }];

}

 

//反地理编码 能利用经纬度显示地址(可用作定位)

- (void)reverseGeocode{

    // 1.包装位置

    CLLocationDegrees latitude=self.latituaaaa;

    CLLocationDegrees longitude=self.longtituaaaa;

    CLLocation *loc = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude];

    

    NSLog(@"%f,,,%f",longitude,latitude);

    NSLog(@"%@",loc);

    // 2.反地理编码

    [self.geocoder reverseGeocodeLocation:loc completionHandler:^(NSArray *placemarks, NSError *error) {

        if (error) { // 有错误(地址乱输入)

            NSLog(@"%@",error);

            self.reverseDetailAddressLabel.text = @"没有这个地址!!!";

        } else {

            

            // 编码成功

            // 取出最前面的地址

            CLPlacemark *pm = [placemarks firstObject];

            

            // 设置具体地址

//           self.reverseDetailAddressLabel.text = pm.name;

//            self.reverseDetailAddressLabel.text=pm.locality;

            

//            self.reverseDetailAddressLabel.text=pm.addressDictionary;

            

            self.reverseDetailAddressLabel.text=pm.addressDictionary[@"Name"];

            self.dizhi=pm.addressDictionary[@"City"];

            NSString *shi= [self.dizhi substringToIndex:2];

            [self.cleanButton setTitle:shi];

            

            [self.reverseGeocodeButton setTitle:pm.addressDictionary[@"City"] forState:0];

          NSLog(@"%@",pm.addressDictionary);

            

        }

    }];

}

地理编码与反地理编码

标签:

原文地址:http://www.cnblogs.com/onlyYura/p/4180032.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!