CoreLocation使用

原创 2015年07月06日 21:10:08
#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>

@interface ViewController ()<CLLocationManagerDelegate>
/**
 *  定位管理者
 */
@property (nonatomic ,strong) CLLocationManager *mgr;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    // 1.创建CoreLocation管理者
//    CLLocationManager *mgr = [[CLLocationManager alloc] init];

    // 2.成为CoreLocation管理者的代理监听获取到的位置
    self.mgr.delegate = self;

    // 设置多久获取一次
//    self.mgr.distanceFilter = 500;

    // 设置获取位置的精确度
    /*
      kCLLocationAccuracyBestForNavigation 最佳导航
      kCLLocationAccuracyBest;  最精准
      kCLLocationAccuracyNearestTenMeters;  10米
      kCLLocationAccuracyHundredMeters;  百米
      kCLLocationAccuracyKilometer;  千米
      kCLLocationAccuracyThreeKilometers;  3千米
     */
//    self.mgr.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;


    /*
     注意: iOS7只要开始定位, 系统就会自动要求用户对你的应用程序授权. 但是从iOS8开始, 想要定位必须先"自己""主动"要求用户授权
      在iOS8中不仅仅要主动请求授权, 而且必须再info.plist文件中配置一项属性才能弹出授权窗口
     NSLocationWhenInUseDescription,允许在前台获取GPS的描述
     NSLocationAlwaysUsageDescription,允许在后台获取GPS的描述
    */


    // 判断是否是iOS8
    if([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0)
    {
        NSLog(@"是iOS8");
        // 主动要求用户对我们的程序授权, 授权状态改变就会通知代理
        //
        [self.mgr requestAlwaysAuthorization]; // 请求前台和后台定位权限
//        [self.mgr requestWhenInUseAuthorization];// 请求前台定位权限
    }else
    {
        NSLog(@"是iOS7");
        // 3.开始监听(开始获取位置)
        [self.mgr startUpdatingLocation];
    }

}

/**
 *  授权状态发生改变时调用
 *
 *  @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(@"授权成功");
        // 开始定位
        [self.mgr startUpdatingLocation];

    }else
    {
        NSLog(@"授权失败");
    }
}

#pragma mark - CLLocationManagerDelegate
//- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
/**
 *  获取到位置信息之后就会调用(调用频率非常高)
 *
 *  @param manager   触发事件的对象
 *  @param locations 获取到的位置
 */
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    NSLog(@"%s", __func__);
    // 如果只需要获取一次, 可以获取到位置之后就停止
//    [self.mgr stopUpdatingLocation];

}

#pragma mark - 懒加载
- (CLLocationManager *)mgr
{
    if (!_mgr) {
        _mgr = [[CLLocationManager alloc] init];
    }
    return _mgr;
}
版权声明:本文为博主原创文章,转载请注明来源.

相关文章推荐

MapKit/CoreLocation使用(一)

在现在,很多app开发都会用到导航(去任意地方)、查找周边(找餐厅、银行、电影院等) 所以会用到两个框架进行开发: Map Kit 用于地图展示 Core Location  用于地理定位  先介...

iOS LBS CoreLocation定位,旋转角度,区域检测,地理编码,框架INTULocationManager使用

这里主要介绍CoreLocation的使用: 导入框架 导入主头文件 #import 当然导入头文件框架会自动导入 CoreLocation框架中所有数据类型的前缀都是CL CoreLocat...

iOS8中使用CoreLocation定位

今天做一个定位功能,发现用不了。去网上查了半天,找到了这个解决方案,我转过来以留后用,也给大家分享一下

iOS--CoreLocation的简单使用

CoreLocation功能强大,实际运用中常与地图结合使用,以达到地图显示与定位的功能。(1)在info.plist文件中加入以下字段 NSAppTransportSecurity ...

如何在iOS 8中使用CoreLocation定位

在iOS 8中,苹果已经强制开发者在请求定位服务时获得用户的授权,此外iOS状态栏中还有指示图标,提示用户当前应用是否正在使用定位服务。另外在iOS 8中,苹果进一步改善了定位服务,让开发者请求定位服...

IOS学习之——CoreLocation定位的使用

在移动互联网时代,移动app能解决用户的很多生活琐事,比如 导航:去任意陌生的地方 周边:找餐馆、找酒店、找银行、找电影院在上述应用中,都用到了地图和定位功能,在iOS开发中,要想加入这2大功能,必须...

CoreLocation框架的使用

CoreLocation框架使用 CoreLocation框架使用须知 CoreLocation框架中所有数据类型的前缀都是CL CoreLocation中使用CLLocationManager对象来...

CoreLocation使用步骤

使用swift描述1.导入CoreLocation模块import CoreLocation2.设置CLLocationManagervar myLocationManager: CLLocation...

iOS CoreLocation定位 使用方法

iOS开发之定位-CoreLocation 使用方法:最新swift3 Xcode8.3代码,简单明了教程

iOS 使用CoreLocation定位

CoreLocation框架(CoreLocation.framework)可用于定位设备当前经纬度,通过框架应用程序可用过附近的蜂窝基站、wifi信号或者GPS等信息计算用户围着。 iOS ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)