美文网首页面试
CLLocationManager定位当前位置

CLLocationManager定位当前位置

作者: WindFeng | 来源:发表于2016-09-08 17:22 被阅读106次

    1、导入CoreLocation.h 头文件,然后声明专属的管理者对象,遵守代理CLLocationManagerDelegate

    @property(nonatomic,strong)CLLocationManager *locationManager;

    2、在viewdidload里面判断当前设备定位服务是否打开了,然后设置代理和精度

    - (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    //初始化管理对象

    CLLocationManager *locationManager = [[CLLocationManager alloc]init];

    self.locationManager = locationManager;

    //判断当前设备定位服务是否打开

    if (![CLLocationManager locationServicesEnabled]) {

    NSLog(@"设备尚未打开定位服务");

    }

    //判断当前设备版本大于iOS8以后的话执行里面的方法

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

    [locationManager requestAlwaysAuthorization];

    [locationManager  requestWhenInUseAuthorization];

    }

    //设置代理

    locationManager.delegate = self;

    //设置定位精度

    locationManager.desiredAccuracy = kCLLocationAccuracyBest;

    ////设置定位的频率,这里我们设置精度为10,也就是10米定位一次

    CLLocationDistance distance = 10;

    //给精度赋值

    locationManager.distanceFilter = distance;

    //开始启动定位

    [locationManager startUpdatingLocation];

    }

    3、配置info.plist文件,把下面两个属性加到文件中去,并且确定xcode是否联网

    NSLocationAlwaysUsageDescription

    NSLocationWhenInUseUsageDescription

    4、实现代理方法进行定位当前的位置,获取到经纬度

    -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray*)locations

    5、通过反地理编码进行中文的输出即可

    [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray* _Nullable placemarks, NSError * _Nullable error) {

    6.不定位的时候应该停止定位

    [self.locationManager stopUpdatingLocation];

    //定位获取当前的经纬度

    -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray*)locations {    CLLocation *location = [locations lastObject];    NSLog(@"%@",location.timestamp);    CLLocationCoordinate2D coordinate = location.coordinate;    NSLog(@"%f    ,%f", coordinate.latitude,coordinate.longitude );        CLGeocoder *geocoder = [[CLGeocoder alloc]init];        [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray* _Nullable placemarks, NSError * _Nullable error) {

    if (error != nil || placemarks.count == 0) {

    NSLog(@"%@",error);

    return ;

    }

    for (CLPlacemark *placemark in placemarks) {

    self.addressTextLabel.text = placemark.locality;

    NSLog(@"%@",placemark.locality);

    }

    }];

    [self.locationManager stopUpdatingLocation];

    }

    相关文章

      网友评论

      本文标题:CLLocationManager定位当前位置

      本文链接:https://www.haomeiwen.com/subject/mensettx.html