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

CLGeocoder 地理编码和反地理编码 代码实战

时间:2014-11-09 09:39:52      阅读:559      评论:0      收藏:0      [点我收藏+]

标签:blog   http   io   ar   sp   for   strong   on   2014   

bubuko.com,布布扣

//
//  MJViewController.m
//  02-地理编码
//
//  Created by apple on 14-5-29.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

#import "MJViewController.h"
#import <CoreLocation/CoreLocation.h>

@interface MJViewController ()
@property (nonatomic, strong) CLGeocoder *geocoder;

#pragma mark - 地理编码
- (IBAction)geocode;
@property (weak, nonatomic) IBOutlet UITextField *addressField;
@property (weak, nonatomic) IBOutlet UILabel *longitudeLabel;
@property (weak, nonatomic) IBOutlet UILabel *latitudeLabel;
@property (weak, nonatomic) IBOutlet UILabel *detailAddressLabel;

#pragma mark - 反地理编码
- (IBAction)reverseGeocode;
@property (weak, nonatomic) IBOutlet UITextField *longtitudeField;
@property (weak, nonatomic) IBOutlet UITextField *latitudeField;
@property (weak, nonatomic) IBOutlet UILabel *reverseDetailAddressLabel;

@end

@implementation MJViewController

- (CLGeocoder *)geocoder
{
    if (!_geocoder) {
        self.geocoder = [[CLGeocoder alloc] init];
    }
    return _geocoder;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.view endEditing:YES];
}

/**
 *  地理编码
 */
- (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:@"%.1f", pm.location.coordinate.latitude];
            self.longitudeLabel.text = [NSString stringWithFormat:@"%.1f", pm.location.coordinate.longitude];
            
            // 设置具体地址
            self.detailAddressLabel.text = pm.name;
            
//            NSLog(@"总共找到%d个地址", placemarks.count);
//            
//            for (CLPlacemark *pm in placemarks) {
//                NSLog(@"-----地址开始----");
//                
//                NSLog(@"%f %f %@", pm.location.coordinate.latitude, pm.location.coordinate.longitude, pm.name);
//                
//                [pm.addressDictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
//                    NSLog(@"%@ %@", key, obj);
//                }];
//                
//                NSLog(@"-----地址结束----");
//            }
        }
    }];
}

/**
 *  反地理编码
 */
- (IBAction)reverseGeocode {
    // 1.包装位置
    CLLocationDegrees latitude = [self.latitudeField.text doubleValue];
    CLLocationDegrees longitude = [self.longtitudeField.text doubleValue];
    CLLocation *loc = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude];
    
    // 2.反地理编码
    [self.geocoder reverseGeocodeLocation:loc completionHandler:^(NSArray *placemarks, NSError *error) {
        if (error) { // 有错误(地址乱输入)
            self.reverseDetailAddressLabel.text = @"你找的地址可能只在火星有!!!";
        } else { // 编码成功
            // 取出最前面的地址
            CLPlacemark *pm = [placemarks firstObject];
            
            // 设置具体地址
            self.reverseDetailAddressLabel.text = pm.name;
//            NSLog(@"总共找到%d个地址", placemarks.count);
//
//            for (CLPlacemark *pm in placemarks) {
//                NSLog(@"-----地址开始----");
//
//                NSLog(@"%f %f %@", pm.location.coordinate.latitude, pm.location.coordinate.longitude, pm.name);
//
//                [pm.addressDictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
//                    NSLog(@"%@ %@", key, obj);
//                }];
//
//                NSLog(@"-----地址结束----");
//            }
        }
    }];
}
@end

CLGeocoder 地理编码和反地理编码 代码实战

标签:blog   http   io   ar   sp   for   strong   on   2014   

原文地址:http://www.cnblogs.com/xiaokanfengyu/p/4084410.html

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