MapView在8.0之后,用法有了一些新的用法(代理方法),在此之前需要导入

#import <MapKit/MapKit.h>


//创建位置服务对象

    locationManager = [[CLLocationManager alloc] init];

    

    locationManager.desiredAccuracy = kCLLocationAccuracyBest;

    

    //设置定位代理

    locationManager.delegate = self;

    

    //如果实在iOS8.0之后,我们需要添加以下操作

    //1.调用方法--requestWhenInUseAuthorization 或者 requestAlwaysAuthorization

    //2.

    

    if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0) {

        [locationManager requestWhenInUseAuthorization];

    }

    

    //开始定位

    [locationManager startUpdatingLocation];

    

    

}


- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


#pragma mark -CLLocationManagerDelegate

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation

{

    NSLog(@"定位成功");

    //停止定位

    [locationManager stopUpdatingLocation];

    

    CLLocationCoordinate2D coordinate = newLocation.coordinate;

    

    NSLog(@"位置:纬度:%.2f----经度:%.2f", coordinate.latitude, coordinate.longitude);

    

}


- (void)locationManager:(CLLocationManager *)manager

     didUpdateLocations:(NSArray *)locations

{

    NSLog(@"新方法定位成功");

    //停止定位

    [locationManager stopUpdatingLocation];

    

    CLLocation *location = [locations lastObject];

    

    CLLocationCoordinate2D coordinate = location.coordinate;


    NSLog(@"位置:纬度:%.2f----经度:%.2f", coordinate.latitude, coordinate.longitude);

    

    //iOS5.0之前使用位置反编码

    MKReverseGeocoder *mkReverse = [[MKReverseGeocoder alloc] initWithCoordinate:coordinate];

    mkReverse.delegate = self;

    //开始反编码

    [mkReverse start];

    

    

    CLGeocoder *geocoder = [[CLGeocoder alloc] init];

    [geocoder reverseGeocodeLocation:location

                   completionHandler:^(NSArray *placemarks, NSError *error) {

                       

                       NSLog(@"---------CLGeocoder---------------");

                       

                       

                       for (CLPlacemark *place in placemarks) {

                           NSLog(@"name,%@",place.name);                       // 位置名

                           NSLog(@"thoroughfare,%@",place.thoroughfare);       // 街道

                           NSLog(@"subThoroughfare,%@",place.subThoroughfare); // 子街道

                           NSLog(@"locality,%@",place.locality);               //

                           NSLog(@"subLocality,%@",place.subLocality);         //

                           NSLog(@"country,%@",place.country);                 // 国家

                       }

                   }

     ]; // CLGeocoder反编码

    

    

}


#pragma mark -MKReverseGeocoderDelegate

- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)place

{

    

    NSLog(@"-----------MKReverseGeocoderDelegate----------");

    NSLog(@"name,%@",place.name);                       // 位置名

    NSLog(@"thoroughfare,%@",place.thoroughfare);       // 街道

    NSLog(@"subThoroughfare,%@",place.subThoroughfare); // 子街道

    NSLog(@"locality,%@",place.locality);               //

    NSLog(@"subLocality,%@",place.subLocality);         //

    NSLog(@"country,%@",place.country);                 // 国家

}


- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailWithError:(NSError *)error

{

    NSLog(@"error is %@", error);

}