讲解iOS开发中基本的定位功能实现

2020-01-14 16:31:41王振洲

//

 

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

//需要遵守CLLocationManagerDelegate协议
@interface YYViewController ()<CLLocationManagerDelegate>
@property(nonatomic,strong)CLLocationManager *locMgr;
@end

@implementation YYViewController
#pragma mark-懒加载
-(CLLocationManager *)locMgr
{
    if (_locMgr==nil) {
        //1.创建位置管理器(定位用户的位置)
        self.locMgr=[[CLLocationManager alloc]init];
        //2.设置代理
        self.locMgr.delegate=self;
    }
    return _locMgr;
}
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    //判断用户定位服务是否开启
    if ([CLLocationManager locationServicesEnabled]) {
        //开始定位用户的位置
        [self.locMgr startUpdatingLocation];
        //每隔多少米定位一次(这里的设置为任何的移动)
        self.locMgr.distanceFilter=kCLDistanceFilterNone;
        //设置定位的精准度,一般精准度越高,越耗电(这里设置为精准度最高的,适用于导航应用)
        self.locMgr.desiredAccuracy=kCLLocationAccuracyBestForNavigation;
    }else
    {//不能定位用户的位置
        //1.提醒用户检查当前的网络状况
        //2.提醒用户打开定位开关
    }
    
    //测试方法,计算两个位置之间的距离
    [self countDistance];
}

#pragma mark-CLLocationManagerDelegate
/**
 *  当定位到用户的位置时,就会调用(调用的频率比较频繁)
 */
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    //locations数组里边存放的是CLLocation对象,一个CLLocation对象就代表着一个位置
   CLLocation *loc = [locations firstObject];