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);

}