#import <CoreLocation/CLLocation.h>
#import <CoreLocation/CLLocationManager.h>
#import <MapKit/MKReverseGeocoder.h>
#import <MapKit/MKPlacemark.h>
#pragma mark CLLocationManager delegate
//定位成功调用
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
NSLog(@"定位成功!");
CLLocationCoordinate2D loc = [newLocation coordinate];
NSLog(@"%f",loc.latitude);
NSLog(@"%f",loc.longitude);
MKReverseGeocoder *geocoder = [[MKReverseGeocoder alloc]initWithCoordinate:newLocation.coordinate];
geocoder.delegate = self;
//启动gecoder
[geocoder start];
}
//定位出错时被调
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
NSLog(@"获取经纬度失败,失败原因:%@", [error description]);
}
#pragma mark MKReverseGeocoderDelegate
//反向定位城市成功
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark
{
NSLog(@"定位城市成功,城市是: %@", placemark.locality);
}
//反向定位城市失败
-(void)reverseGeocoder:(MKReverseGeocoder *)geocoder
didFailWithError:(NSError *)error
{
NSLog(@"定位城市失败,失败原因 : %@", [error description]);
}
- (void) startLocation
{
if (![CLLocationManager locationServicesEnabled] || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied)
{
NSLog(@"您关闭了的定位功能,将无法收到位置信息,建议您到系统设置打开定位功能!");
}
else
{
CLLocationManager *myLocationManager = [[CLLocationManager alloc]init];
myLocationManager.delegate = self;
// NSLog(@"PURPOSE = %@",self.myLocationManager.purpose);
//选择定位的方式为最优的状态,他又四种方式在文档中能查到
myLocationManager.desiredAccuracy=kCLLocationAccuracyBest;
//发生事件的最小距离间隔
myLocationManager.distanceFilter = 1000.0f;
[myLocationManager startUpdatingLocation];
}
}
#pragma mark CLLocationManager delegate
//定位成功调用
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
NSLog(@"定位成功!");
CLLocationCoordinate2D loc = [newLocation coordinate];
NSLog(@"%f",loc.latitude);
NSLog(@"%f",loc.longitude);
MKReverseGeocoder *geocoder = [[MKReverseGeocoder alloc]initWithCoordinate:newLocation.coordinate];
geocoder.delegate = self;
//启动gecoder
[geocoder start];
}
//定位出错时被调
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
NSLog(@"获取经纬度失败,失败原因:%@", [error description]);
}
#pragma mark MKReverseGeocoderDelegate
//反向定位城市成功
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark
{
NSLog(@"定位城市成功,城市是: %@", placemark.locality);
}
//反向定位城市失败
-(void)reverseGeocoder:(MKReverseGeocoder *)geocoder
didFailWithError:(NSError *)error
{
NSLog(@"定位城市失败,失败原因 : %@", [error description]);
}