zoukankan      html  css  js  c++  java
  • IOS8定位

    注意一个事情,因为定位可能是个全局可用的方法,所以我经常提出来,这样可以减少工作量,可是ios8以后,我提取出去就不能弹窗让用户授权定位了。

    所以授权定位,最好写在ViewController里,如果有人能够有更好的办法,求告知841538513@qq.com,十分感谢

    1,在info.plist设置NSLocationAlwaysUsageDescription,NSLocationWhenInUseUsageDescription为你想要标志的string描述

    • NSLocationWhenInUseUsageDescription表示应用在前台的时候可以搜到更新的位置信息。
    • NSLocationAlwaysUsageDescription表示应用在前台和后台(suspend或terminated)都可以获取到更新的位置数据。

    2,导入CoreLocation.framework

    3,导入代码

    这里注意:CLLocationManager变量一定要设置成全局的,至于为什么我也不知道,虽然不合理,但是必须要这么做。

    而且CLLocationManager变量一定要和CLLocationManagerDelegate实现方法在一个controller里,虽然很奇怪,但就是这样。

    我知道ios7以前是可以不这样的,我有提炼出来,估计这是ios8隐藏的bug吧。

    #import "ViewController.h"
    #import <CoreLocation/CoreLocation.h>
    @interface ViewController ()<CLLocationManagerDelegate>
    @property (nonatomic, strong) CLLocationManager  *locationManager;
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        self.locationManager = [[CLLocationManager alloc]init];
        _locationManager.delegate = self;
        _locationManager.desiredAccuracy = kCLLocationAccuracyBest;
        _locationManager.distanceFilter = 10;
        [_locationManager requestAlwaysAuthorization];
        [_locationManager startUpdatingLocation];
    }
    
    - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
    {
        CLLocation *currLocation = [locations lastObject];
        NSLog(@"经度=%f 纬度=%f 高度=%f", currLocation.coordinate.latitude, currLocation.coordinate.longitude, currLocation.altitude);
    }
    
    @end

    注意第一点,和一些细节。

  • 相关阅读:
    Java 二维数组
    JAVA——运算符
    JAVA——类与对象
    Eclipse无法自动编译出class文件 转
    引导入单用户模式
    安装sql server遇到问题解决方法
    数据结构和算法分析学习
    开源软件
    POP3、SMTP、IMAP和Exchange都是个什么玩意?
    邮件相关名词 MUA, MTA
  • 原文地址:https://www.cnblogs.com/MartinLi841538513/p/4148816.html
Copyright © 2011-2022 走看看