获取经纬度 CLLocation

 

//导入库

#import <CoreLocation/CoreLocation.h>

 

//注意:

//需要在 info.plist 中导入前两个字段

//NSLocationAlwaysUsageDescription

//NSLocationWhenInUseUsageDescription

 

@interface ViewController ()<CLLocationManagerDelegate>

 

@property (nonatomic,strong)CLLocationManager *locationManager;

 

@end

 

@implementation ViewController

 

 

- (void)viewDidLoad {

    [super viewDidLoad];

    

    //初始化locationManger管理器对象

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

    self.locationManager=locationManager;

    

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

    if (![CLLocationManager locationServicesEnabled]) {

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

    }

 

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

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

        //持续授权

        [locationManager requestAlwaysAuthorization];

        //当用户使用的时候授权

        [locationManager requestWhenInUseAuthorization];

    }

    

    //或者使用这种方式,判断是否存在这个方法,如果存在就执行,没有的话就忽略

    //if([locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]){

    //   [locationManager requestWhenInUseAuthorization];

    //}

    

    //设置代理

    locationManager.delegate=self;

    //设置定位的精度

    locationManager.desiredAccuracy=kCLLocationAccuracyBest;

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

    CLLocationDistance distance=10;

    //给精度赋值

    locationManager.distanceFilter=distance;

    //开始启动定位

    [locationManager startUpdatingLocation];

 

}

//当位置发生改变的时候调用(上面我们设置的是10,也就是当位置发生>10米的时候该代理方法就会调用)

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{

    //取出第一个位置

    CLLocation *location=[locations firstObject];

    NSLog(@"%@",location.timestamp);

    //位置坐标

    CLLocationCoordinate2D coordinate=location.coordinate;

    NSLog(@"您的当前位置:经度:%f,纬度:%f,海拔:%f,航向:%f,速度:%f",coordinate.longitude,coordinate.latitude,location.altitude,location.course,location.speed);

    //如果不需要实时定位,使用完即使关闭定位服务

    //[_locationManager stopUpdatingLocation];

}

 

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

 

@end

原文地址:https://www.cnblogs.com/daxueshan/p/6023506.html