iOS CoreLocation使用(iOS8 回调不行的问题解决)
来源:互联网 发布:mechanix 知乎 编辑:程序博客网 时间:2024/04/28 15:47
iOS8中使用使用CoreLocation前需要调用如下函数: (1)始终允许访问位置信息 - (void)requestAlwaysAuthorization; (2)使用应用程序期间允许访问位置数据 - (void)requestWhenInUseAuthorization;示例如下: self.locationManager = [[CLLocationManager alloc]init]; _locationManager.delegate = self; _locationManager.desiredAccuracy = kCLLocationAccuracyBest; _locationManager.distanceFilter = 10; [_locationManager requestAlwaysAuthorization];//添加这句 [_locationManager startUpdatingLocation]; 2、在Info.plist文件中添加如下配置: (1)NSLocationAlwaysUsageDescription (2)NSLocationWhenInUseUsageDescription
#import <CoreLocation/CoreLocation.h>
@interface ViewController () <CLLocationManagerDelegate>
@property (nonatomic, strong) CLLocationManager *locMgr;
@end
@implementation MJViewController
- (CLLocationManager *)locMgr
{
if(![CLLocationManager locationServicesEnabled]) return nil;
if (!_locMgr) {
// 创建定位管理者
self.locMgr = [[CLLocationManager alloc] init];
//在ios 8.0下要授权
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0){
[self.locMgr requestWhenInUseAuthorization]; //调用了这句,就会弹出允许框了.
//[self.locMgr requestAlwaysAuthorization];// 前后台同时定位
}
// 设置代理
self.locMgr.delegate = self;
self.locMgr.desiredAccuracy = kCLLocationAccuracyBest; //控制定位精度,越高耗电量越大。
self.locMgr.distanceFilter = 10; //控制定位服务更新频率。单位是“米”
}
return _locMgr;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// 开始定位用户的位置
[self.locMgr startUpdatingLocation];
// // 开始监控某个位置
// CLRegion *region = [[CLRegion alloc] init];
// /**
// ........
// */
// [self.locMgr startMonitoringForRegion:region];
}
/**
* 计算2个经纬度之间的直线距离
*/
- (void)countLineDistance
{
// 计算2个经纬度之间的直线距离
CLLocation *loc1 = [[CLLocation alloc] initWithLatitude:40 longitude:116];
CLLocation *loc2 = [[CLLocation alloc] initWithLatitude:41 longitude:116];
CLLocationDistance distance = [loc1 distanceFromLocation:loc2];
NSLog(@"%f", distance);
}
#pragma mark - CLLocationManagerDelegate
/**
* 只要定位到用户的位置,就会调用(调用频率特别高)
* @param locations : 装着CLLocation对象
*/
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
// 1.取出位置对象
CLLocation *loc = [locations firstObject];
// 2.取出经纬度
CLLocationCoordinate2D coordinate = loc.coordinate;
// 3.打印经纬度
NSLog(@"didUpdateLocations------%f %f", coordinate.latitude, coordinate.longitude);
// 停止定位(省电措施:只要不想用定位服务,就马上停止定位服务)
[manager stopUpdatingLocation];
}
@end
- iOS CoreLocation使用(iOS8 回调不行的问题解决)
- iOS CoreLocation的使用
- CoreLocation的变化-iOS8
- iOS CoreLocation框架第一章—— CLLocationManager的使用(包含iOS6,iOS8,iOS9各种变动)
- iOS--CoreLocation的简单使用
- iOS8中使用CoreLocation定位
- iOS8中使用CoreLocation定位
- iOS8中使用CoreLocation定位
- iOS8中使用CoreLocation定位
- iOS8中使用CoreLocation定位
- iOS8中使用CoreLocation定位
- iOS8中使用CoreLocation定位
- iOS8中使用CoreLocation定位
- iOS8中使用CoreLocation定位
- iOS8中使用CoreLocation定位
- iOS8中使用CoreLocation定位
- iOS8中使用CoreLocation定位
- iOS8中使用CoreLocation定位
- HTML-manifest本地缓存配置
- java 字节流操作数据数据的几种情形分析
- HihoCoder第十二周:刷油漆
- HTML-video 与 audio
- Canvas-基础教程
- iOS CoreLocation使用(iOS8 回调不行的问题解决)
- Java处理Web应用的基本方式
- HTML-CSS hack
- Canvas-玫瑰花
- Grunt实现css,js,images文件压缩
- Canvas-五角星
- TCP从连接到释放过程全解
- cf 546 E dinic网络流优化模板
- 通知-NSNotification