#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>
@interface ViewController () <CLLocationManagerDelegate>
@property (nonatomic, strong) CLLocationManager *manager;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// 1、创建管理者
// self.manager = [[CLLocationManager alloc] init];
// 2、设置代理人
self.manager.delegate = self;
// 设置多久获取一次
// self.manager.distanceFilter = 500;
// 设置获取位置的精确度
/*
kCLLocationAccuracyBestForNavigation 最佳导航
kCLLocationAccuracyBest; 最精准
kCLLocationAccuracyNearestTenMeters; 10米
kCLLocationAccuracyHundredMeters; 百米
kCLLocationAccuracyKilometer; 千米
kCLLocationAccuracyThreeKilometers; 3千米
*/
// self.manager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
// iOS7 直接可以如此调用
// self.manager startUpdatingLocation;
/*
iOS8 需要向用户申请 并且在info中填写
NSLocationWhenInUseDescription,允许在前台获取GPS的描述
NSLocationAlwaysUsageDescription,允许在后台获取GPS的描述
*/
[self.manager requestAlwaysAuthorization];
}
/*
已经废弃
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
*/
/**
* 授权状态发生改变的时候调用->iOS8 iOS7不需要实现这个方法
*
* @param manager 触发事件的对象
* @param status 获取到的状态
*/
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
/*
用户从未选择过权限
kCLAuthorizationStatusNotDetermined
无法使用定位服务,该状态用户无法改变
kCLAuthorizationStatusRestricted
用户拒绝该应用使用定位服务,或是定位服务总开关处于关闭状态
kCLAuthorizationStatusDenied
已经授权(废弃)
kCLAuthorizationStatusAuthorized
用户允许该程序无论何时都可以使用地理信息
kCLAuthorizationStatusAuthorizedAlways
用户同意程序在可见时使用地理位置
kCLAuthorizationStatusAuthorizedWhenInUse
*/
if (status == kCLAuthorizationStatusNotDetermined) {
NSLog(@"等待授权");
} else if (status == kCLAuthorizationStatusAuthorizedAlways || status ==kCLAuthorizationStatusAuthorizedWhenInUse) {
NSLog(@"授权成功");
// 开始更新位置
[manager startUpdatingLocation];
} else {
NSLog(@"授权失败");
}
}
/**
* 地理位置更新的时候会走的方法
*
* @param manager 触发事件的对象
* @param locations 获取到的位置
*/
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
NSLog(@"%s", __func__);
// 获取一次位置后停止更新
// [manager stopUpdatingLocation]
// 1.获取最后一次的位置
/*
location.coordinate; 坐标, 包含经纬度
location.altitude; 设备海拔高度 单位是米
location.course; 设置前进方向 0表示北 90东 180南 270西
location.horizontalAccuracy; 水平精准度
location.verticalAccuracy; 垂直精准度
location.timestamp; 定位信息返回的时间
location.speed; 设备移动速度 单位是米/秒, 适用于行车速度而不太适用于不行
*/
/*
可以设置模拟器模拟速度
bicycle ride 骑车移动
run 跑动
freeway drive 高速公路驾车
*/
CLLocation *location = [locations lastObject];
NSLog(@"%f, %f speed = %f", location.coordinate.latitude , location.coordinate.longitude, location.speed);
}
#pragma mark 懒加载
/**
* 懒加载->只有一个初始化对象的时候多用懒加载
*
* @return CLLocationManager
*/
- (CLLocationManager *)manager {
if (_manager == nil) {
_manager = [[CLLocationManager alloc] init];
}
return _manager;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
iOS开发-地图01-corelocation
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 可先建项目直接运行学习 info.plist文件设置: 模拟器模拟运动场景: .m文件代码 demo分享链接
- 20170226因项目已准备上线,部分功能已更新。20170305(上线中遇到的坑)[http://www.jia...
- 公司有一个iOS应用需要集成百度地图,替换iOS自带的MapKit,于是去百度地图的API官网按照文档一步步操作。...
- 废话不多说,直接进入正题! 一、首先导入3D地图和单次定位的SDK,这个官网上会有指点,我就不多说了。 二、下载官...