定位功能(使用系统地图)

1.导入MapKit,CoreLocation库

2.viewController文件

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

@interface ViewController ()<CLLocationManagerDelegate>
{
    CLLocationManager *_locationManager;
}
@end

@implementation ViewController


- (void)viewDidLoad {
    [super viewDidLoad];
    //1.创建locationManager
    _locationManager = [[CLLocationManager alloc] init];
    
    //2.info.plist文件加入字段
    //NSLocationWhenInUseDescription
    //NSLocationAlwaysUsageDescription
    
    if (![CLLocationManager locationServicesEnabled]) {
        NSLog(@"定位服务未打开");
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"请打开定位服务" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
        [alert show];
    }
    
    //3.请求权限(一直允许访问位置信息)
    [_locationManager requestAlwaysAuthorization];
    //程序运行期间允许访问位置信息
    //[_locationManager requestWhenInUseAuthorization];
    
    //4.定位精确度
    _locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    //设置隔多少米后更新位置信息
    _locationManager.distanceFilter = 100;
    _locationManager.delegate = self;
    
    //5.开启定位
    [_locationManager startUpdatingLocation];
}



#pragma mark --CLLocationManagerDelegate---
//权限状态改变
-(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
{
    NSLog(@"%i",status);
    //给出相应提示信息
    if (status != kCLAuthorizationStatusAuthorizedAlways) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"请设置程序允许访问位置信息" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
        [alert show];
    }
    else
    {
        [_locationManager startUpdatingLocation];
    }
}
//更新到用户位置信息
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    CLLocation *location = [locations firstObject];
    NSLog(@"%f-%f",location.coordinate.latitude,location.coordinate.longitude);
    //反编码
    CLGeocoder *geo = [[CLGeocoder alloc] init];
    [geo reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {
        NSLog(@"%@",error);
    }];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

 

posted on 2015-09-13 19:04  Baymax01  阅读(255)  评论(0编辑  收藏  举报

导航