iOS 定位 <CoreLocation/CoreLocation.h>
2016-04-20 13:23
447 查看
- (void)viewDidLoad {
[super viewDidLoad];
_manager = [[CLLocationManager alloc] init];
//从IOS8(Xcode6)开始,定位权限必须主动申请,首先在info.plist中添加NSLocationWhenInUseUsageDescription或NSLocationAlwaysUsageDescription字段,然后调用此方法。
[_manager requestWhenInUseAuthorization];
_manager.delegate = self;
//headingAvailable判断设备是否支持方向识别。
if ([CLLocationManager headingAvailable]) {
NSLog(@"设备支持方向识别");
//设置监视精确度(当方向该变量达到多少时才调用代理方法)。
_manager.headingFilter = 1;
//开启方向监视。当设备方向发生变化时,就会调用方向更新的代理方法。
//[_manager startUpdatingHeading];
}else{
NSLog(@"设备不支持方向识别");
}
//判断设备的定位功能是否可用。
if ([CLLocationManager locationServicesEnabled]) {
NSLog(@"定位可用");
//设置调用位置改变方法的最小移动距离。
_manager.distanceFilter = kCLDistanceFilterNone;
//设置定位的精确度,最小可以精确到米。
_manager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
//如果定位可用,开启位置监视。
[_manager startUpdatingLocation];
}else{
NSLog(@"定位不可用");
}
//创建一个坐标点
CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(34.729420, 113.746134);
//根据坐标点和半径生成一个圆形区域。
CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:coordinate radius:50 identifier:@"region1"];
//开启区域监视。当设备进入区域或者离开区域时都会调用对应的协议方法。
[_manager startMonitoringForRegion:region];
}
//北:0,东:90,南:180,西270.
NSLog(@"磁力计方向%f",newHeading.magneticHeading);
NSLog(@"真实方向%f",newHeading.trueHeading);
}
//CLLocation表示一个定位信息
CLLocation *location = [locations lastObject];
//timestamp表示这次定位的时间
NSDate *date = location.timestamp;
//判断定位的时间是否距离现在过长,
double time = [date timeIntervalSinceNow];
if (ABS(time)<10) {
//location.coordinate,坐标。
NSLog(@"纬度%f",location.coordinate.latitude);
NSLog(@"经度%f",location.coordinate.longitude);
}
}
}
}
[_manager stopUpdatingHeading];
[_manager stopUpdatingLocation];
}
[super viewDidLoad];
_manager = [[CLLocationManager alloc] init];
//从IOS8(Xcode6)开始,定位权限必须主动申请,首先在info.plist中添加NSLocationWhenInUseUsageDescription或NSLocationAlwaysUsageDescription字段,然后调用此方法。
[_manager requestWhenInUseAuthorization];
_manager.delegate = self;
//headingAvailable判断设备是否支持方向识别。
if ([CLLocationManager headingAvailable]) {
NSLog(@"设备支持方向识别");
//设置监视精确度(当方向该变量达到多少时才调用代理方法)。
_manager.headingFilter = 1;
//开启方向监视。当设备方向发生变化时,就会调用方向更新的代理方法。
//[_manager startUpdatingHeading];
}else{
NSLog(@"设备不支持方向识别");
}
//判断设备的定位功能是否可用。
if ([CLLocationManager locationServicesEnabled]) {
NSLog(@"定位可用");
//设置调用位置改变方法的最小移动距离。
_manager.distanceFilter = kCLDistanceFilterNone;
//设置定位的精确度,最小可以精确到米。
_manager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
//如果定位可用,开启位置监视。
[_manager startUpdatingLocation];
}else{
NSLog(@"定位不可用");
}
//创建一个坐标点
CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(34.729420, 113.746134);
//根据坐标点和半径生成一个圆形区域。
CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:coordinate radius:50 identifier:@"region1"];
//开启区域监视。当设备进入区域或者离开区域时都会调用对应的协议方法。
[_manager startMonitoringForRegion:region];
}
当设备方向发生变化时调用
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading{//北:0,东:90,南:180,西270.
NSLog(@"磁力计方向%f",newHeading.magneticHeading);
NSLog(@"真实方向%f",newHeading.trueHeading);
}
当设备位置发生变化时调用
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{//CLLocation表示一个定位信息
CLLocation *location = [locations lastObject];
//timestamp表示这次定位的时间
NSDate *date = location.timestamp;
//判断定位的时间是否距离现在过长,
double time = [date timeIntervalSinceNow];
if (ABS(time)<10) {
//location.coordinate,坐标。
NSLog(@"纬度%f",location.coordinate.latitude);
NSLog(@"经度%f",location.coordinate.longitude);
}
}
当设备进入某个区域时调用
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region{}
当设备离开某个区域时调用
- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region{}
当定位失败时调用
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{[_manager stopUpdatingHeading];
[_manager stopUpdatingLocation];
}
相关文章推荐
- IOS环信3.1 -SDK集成
- iOS学习笔记38-MJExtension使用
- iOS 摇一摇功能的实现
- iOS学习笔记38-MJExtension使用
- iOS 手势
- IOS 二维码生成
- ios开发多线程篇——GCD介绍
- ios 指定某个页面是横屏还是竖屏
- iOS证书描述文件说明
- iOS 开发--最新版 cocoapods 安装教程
- iOS开发之tableview的优化
- iOS开发之应用程序进入后台时的生命周期以及回到前台的生命周期
- iOS:界面适配(三)--iPhone不同机型或设备不同尺寸适配(屏幕适配)和系统适配
- iOS开发集成友盟推送
- 字符处分割成数组 ios
- IOS 解决集成zbar链接错误
- iOS 获取 年 月 日
- iOS之处理不等高TableViewCell的几种方法
- iOS沙盒目录结构解析
- iOS 禁止手势滑动翻页