zoukankan      html  css  js  c++  java
  • 定位

    1. 导入框架 <CoreLocation.framework>, 引入头文件 import <CoreLocation/CoreLocation.h>;

    2. 创建管理者对象 (strong)

    #import "ViewController.h"

    @interface ViewController ()<CLLocationManagerDelegate>

     /**  定位管理者 ***/

    @property (nonatomic, strong) CLLocationManager *mgr;

    @end

    @implementation ViewController 

     /**  懒加载 ***/

    - (CLLocationManager *)mgr{

        if (!_mgr) {

            _mgr = [[CLLocationManager alloc] init];

        }

        return _mgr;

    }

     - (void)viewDidLoad {

        [super viewDidLoad];

        // 1. 创建CoreLocation管理者

        

        // 2. 成为CoreLocaltion管理者的代理, 监听获取的位置

        self.mgr.delegate = self;

        

        // 3. 设置属性

        // 设置多久 获取一次位置

    //    self.mgr.distanceFilter = 500;

        

        /**

           kCLLocationAccuracyBestForNavigation -- 最佳导航

           kCLLocationAccuracyBest;             -- 最精准

           kCLLocationAccuracyNearestTenMeters; -- 十米

           kCLLocationAccuracyHundredMeters;    -- 百米

           kCLLocationAccuracyKilometer;        -- 千米

           kCLLocationAccuracyThreeKilometers;  -- 三千米

         */

        // 设置定位精确度

        self.mgr.desiredAccuracy = kCLLocationAccuracyBestForNavigation;

        

        /**

         *  ios7 , 只要开始定位, 系统就会自动要求用户对你的应用程序授权. 但是从ios8开始, 想要定位自己必须主动要求用户授权,而且必须再info.plist文件中配置一项属性, 才能弹出授权窗口.

             NSLocationWhenInUseDescription,允许在前台获取GPS的描述

             NSLocationAlwaysUsageDescription,允许在后台获取GPS的描述

         */

        

        

        // 4. 请求授权定位

        if(IOS8){

            LogRed(@"ios 8");

            

            // 主动要求用户授权, 授权成功以后会调用对应的代理方法.

            [self.mgr requestAlwaysAuthorization]; // 请求前台和后台定位权限

    //        [self.mgr requestWhenInUseAuthorization]; // 请求前台定位权限

            

            

        }else{

            LogMagenta(@"ios 7");

            

            // 3. 开始监听

            [self.mgr startUpdatingLocation];

        }

    }

    /**

     *  当授权状态改变时, 调用此方法

     *

     *  @param manager 触发事件的对象

     *  @param status  授权状态

     */

    - (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status

    {

    //

    //    kCLAuthorizationStatusNotDetermined   ---- 等待授权

    //    kCLAuthorizationStatusRestricted,     ---- 受限 -- 未授权

    //    kCLAuthorizationStatusDenied          ---- 拒绝授权

    //    kCLAuthorizationStatusAuthorizedAlways --- 前台 后台都授权

    //    kCLAuthorizationStatusAuthorizedWhenInUse - 前台授权

        

        if (status == kCLAuthorizationStatusNotDetermined) {

            LogWhite(@"等待用户授权");

        }else if (status == kCLAuthorizationStatusAuthorizedAlways ||

                  status == kCLAuthorizationStatusAuthorizedWhenInUse)

        {

            LogRed(@"授权成功");

            // 开始定位

            [self.mgr startUpdatingLocation];

            

        }else

        {

            LogGreen(@"授权失败");

        }

    }

    #pragma mark - CLLocationManagerDelegate

    /**

     *  获取到位置信息后就会调用

     *

     *  @param manager   触发事件的对象

     *  @param locations 获取到的位置

     */

    - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations

    {

        

    /**

         *  // CLLocation

         location.coordinate; 坐标, 包含经纬度

         location.altitude; 设备海拔高度 单位是米

         location.course; 设置前进方向 0表示北 90东 180南 270西

         location.horizontalAccuracy; 水平精准度

         location.verticalAccuracy; 垂直精准度

         location.timestamp; 定位信息返回的时间

         location.speed; 设备移动速度 单位是米/秒, 适用于行车速度而不太适用于不行

         */

        

        LogRed(@"%@",locations);

        // 1. 获取最后一次定位的位置信息

        CLLocation *location = [locations lastObject];

        

        LogYellow(@"%f --- %f ---%f",location.coordinate.latitude,location.coordinate.longitude,location.speed);

        

    //    [self.mgr stopUpdatingLocation];

    }

  • 相关阅读:
    Java高级之类结构的认识
    14.8.9 Clustered and Secondary Indexes
    14.8.4 Moving or Copying InnoDB Tables to Another Machine 移动或者拷贝 InnoDB 表到另外机器
    14.8.3 Physical Row Structure of InnoDB Tables InnoDB 表的物理行结构
    14.8.2 Role of the .frm File for InnoDB Tables InnoDB 表得到 .frm文件的作用
    14.8.1 Creating InnoDB Tables 创建InnoDB 表
    14.7.4 InnoDB File-Per-Table Tablespaces
    14.7.2 Changing the Number or Size of InnoDB Redo Log Files 改变InnoDB Redo Log Files的数量和大小
    14.7.1 Resizing the InnoDB System Tablespace InnoDB 系统表空间大小
    14.6.11 Configuring Optimizer Statistics for InnoDB 配置优化统计信息用于InnoDB
  • 原文地址:https://www.cnblogs.com/guangleijia/p/4825755.html
Copyright © 2011-2022 走看看