首页 > 代码库 > CoreLocation基本使用
CoreLocation基本使用
#import "CJViewController.h"#import <CoreLocation/CoreLocation.h>@interface CJViewController ()<CLLocationManagerDelegate>@property (nonatomic, strong)CLLocationManager *manager;@end@implementation CJViewController// 因为位置管理器在全局中只需一份,所以只需创建一次,使用懒加载- (CLLocationManager *)manager{ if (!_manager) { // 1.创建位置管理器(用于定位用户的位置) _manager = [[CLLocationManager alloc] init];// 创建完位置管理器后,系统默认不会自动定位,因为定位比较耗电,它不会自动开始定位,如果要开始用户定位,要调用startUpdatingLocation方法 // 设置代理,告诉用户位置 _manager.delegate = self; } return _manager;}- (void)viewDidLoad{ [super viewDidLoad]; // 检测定位服务是否可用(可能是程序第一次访问用户位置时,被用户点击了Don‘t Allow导致定位服务不可用) if ([CLLocationManager locationServicesEnabled]) { // 如果定位服务能用,开始定位 [self.manager startUpdatingLocation]; // 通过代理告诉用户的位置 // 每隔多少米定位一次 kCLDistanceFilterNone,表示用户任何一个移动都会定位一次,如果不想任何一个移动就定位一次,那么就要设定一个值 self.manager.distanceFilter = kCLDistanceFilterNone; // 精准度,越高越耗电 self.manager.desiredAccuracy = kCLLocationAccuracyHundredMeters; // 代表一百米内是准确的 }else {// 不能定位用户的位置 // 1.告诉用户检查网络状况 // 2.提醒用户打开定位开关 } [self countDistance];}// 计算距离- (void)countDistance{ CLLocation *location1 = [[CLLocation alloc] initWithLatitude:39.5 longitude:136]; CLLocation *location2 = [[CLLocation alloc] initWithLatitude:40 longitude:136]; CLLocationDistance distance = [location1 distanceFromLocation:location2]; NSLog(@"距离:%f", distance); }#pragma mark - CLLocationManagerDelegate// 时时监测(定位)用户的位置,调用比较频繁- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{ // 数组里面的每一个对象都是CLLocation对象,一个CLLocation就代表一个位置 CLLocation *loc = [locations firstObject]; NSLog(@"%d", locations.count); // 停止更新位置,当用户不使用定位服务时,应当马上停止定位(更新), 因为非常耗电 // [manager stopUpdatingLocation];}@end
CoreLocation基本使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。