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;
}
版权声明:本文为博主原创文章,转载请注明来源.

使用CoreLocation来跟踪用户距离

使用CoreLocation来跟踪用户距离 背景 CoreLocation是一个强大的Framework,他能帮助开发使其免于复杂的位置处理而专注于应用逻辑的开发。然而CoreLocation并没...

iOS项目开发实战——使用CoreLocation获取当前位置信息

随着基于位置服务LBS和移动互联网的兴起,你的位置是越来越重要的一个信息,位置服务已经是当前的热门应用如微信,陌陌等社交应用的杀手锏。而在iOS开发中,苹果已经给我们提供了一个位置接口,CoreLoc...

iOS8中使用CoreLocation定位

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

关于地图:CoreLocation的使用

基本概念 地图和定位功能基于两个框架:Map Kit:用于地图展示 Core Location:用于地理定位 2个入门专业术语:LBS Location Based Service 基于位置的服务 (...

CoreLocation使用步骤

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

iOS CoreLocation定位 使用方法

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

使用CoreLocation定位

CoreLocation框架(CoreLocation.framework)可用于定位设备当前的经纬度,通过该框架,应用程序可通过附近的蜂窝基站、WIFI信号或者GPS等信息计算用户位置。 iO...
  • ITMan_K
  • ITMan_K
  • 2016年10月20日 16:12
  • 241

MapKit/CoreLocation使用(一)

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

iOS--CoreLocation的简单使用

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

如何在iOS 8中使用CoreLocation定位

在iOS 8中,苹果已经强制开发者在请求定位服务时获得用户的授权,此外iOS状态栏中还有指示图标,提示用户当前应用是否正在使用定位服务。另外在iOS 8中,苹果进一步改善了定位服务,让开发者请求定位服...
  • akka123
  • akka123
  • 2015年03月16日 15:59
  • 318
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CoreLocation使用
举报原因:
原因补充:

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