//1.导入库
//2.配置info.plist
//如果设置了后台定位
#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>
@interface ViewController ()<CLLocationManagerDelegate>
@property (nonatomic , strong)CLLocationManager *manager;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//1. 创建位置管理器(注意:生命周期)
self.manager = [CLLocationManager new];
//2.请求授权(注意:配置info.plist)
//应用使用期间定位
[self.manager requestWhenInUseAuthorization];
//一直定位(app在后台使依然请求定位)
// [self.manager requestAlwaysAuthorization];
//距离筛选器(米),当移动超过上次定位5米之后,才会调用更新定位的函数
// self.manager.distanceFilter = 5;
/*
extern const CLLocationAccuracy kCLLocationAccuracyBestForNavigation 导航专用
extern const CLLocationAccuracy kCLLocationAccuracyBest; 最佳精准度
extern const CLLocationAccuracy kCLLocationAccuracyNearestTenMeters; 十米误差
extern const CLLocationAccuracy kCLLocationAccuracyHundredMeters; 百米误差
extern const CLLocationAccuracy kCLLocationAccuracyKilometer; 千米误差
extern const CLLocationAccuracy kCLLocationAccuracyThreeKilometers; 三千米误差
*/
//设置期望精准度
// self.manager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
//
// //app进入后台继续定位
if([self.manager respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) {
self.manager.allowsBackgroundLocationUpdates = YES;
}
//3.设置代理
self.manager.delegate = self;
//4.开始定位
[self.manager startUpdatingLocation];
}
#pragma mark
#pragma mark 更新定位
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations {
//取出最后一次定位
CLLocation *location = locations.lastObject;
//如果无法打印,重启模拟器
NSLog(@"经度:%f,纬度:%f",location.coordinate.longitude,location.coordinate.latitude);
//停止定位
// [manager stopUpdatingLocation];
/*
typedef struct {
CLLocationDegrees latitude; // 纬度
CLLocationDegrees longitude; // 精度
} CLLocationCoordinate2D;
// 坐标
@property(readonly, nonatomic) CLLocationCoordinate2D coordinate;
// 海拔
@property(readonly, nonatomic) CLLocationDistance altitude;
// 水平精准度(经纬度)
@property(readonly, nonatomic) CLLocationAccuracy horizontalAccuracy;
// 垂直精准度(海拔)
@property(readonly, nonatomic) CLLocationAccuracy verticalAccuracy;
// 朝向 (正北 0)
@property(readonly, nonatomic) CLLocationDirection course __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_2_2) __TVOS_PROHIBITED __WATCHOS_PROHIBITED;
// 速度 m/s
@property(readonly, nonatomic) CLLocationSpeed speed __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_2_2) __TVOS_PROHIBITED __WATCHOS_PROHIBITED;
// 时间戳
@property(readonly, nonatomic, copy) NSDate *timestamp;
// 楼层
@property(readonly, nonatomic, copy, nullable) CLFloor *floor __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_8_0);
// 描述
@property (nonatomic, readonly, copy) NSString *description;
// 计算距离
- (CLLocationDistance)getDistanceFrom:(const CLLocation *)location __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_NA,__MAC_NA,__IPHONE_2_0,__IPHONE_3_2) __TVOS_PROHIBITED __WATCHOS_PROHIBITED;
// 计算距离
- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_2);
*/
}
@end

6355

被折叠的 条评论
为什么被折叠?



