iOS8 地图定位手把手指导100%获取经纬度

最近做项目,牵扯到地图定位问题,因为之前iOS7上是可以用的,但是iOS8之后不知道什么原因定位的时候就是不弹出那个什么允许访问地址什么的了,然后百度了一下,发现iOS8中改了一些东西,具体代码如下,要是看不明白可以给我留言。

CLLocationManager这个系统定位的类在iOS8之前要实现定位,只需要遵守CLLocationManagerDelegate这个代理即可:


- (void)startLocate


{  


     if([CLLocationManager locationServicesEnabled]){


        _locManager = [[CLLocationManager alloc]init];


         [self.locManager setDelegate:self];


        [self.locManager setDesiredAccuracy:kCLLocationAccuracyBest];


        [self.locManager startUpdatingLocation];


    }


}


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


{


  [_locManager stopUpdatingLocation];


    CLLocation *currentLocation = [locations lastObject];


    CLLocationCoordinate2D coor = currentLocation.coordinate;


    NSString *latitude =  @(coor.latitude).description;


    NSString *longitude = @(coor.longitude).description;


}


iOS8之前以上两个方法正常的情况下,已经能够正常获取经纬度了。但是在iOS8下,则需要在startLocate这个方法中在CLLocationManager这个类实例化后添加如下代码:


        if([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)


        {


            [ self.locManager requestAlwaysAuthorization];


        }


但是仅仅添加以上代码还不行,还需要在工程的info.plist文件中添加键值对:


                  Key                                                           Type                                                      Value


NSLocationAlwaysUsageDescription              Array/Dictionary/Boolean/Data/Date/Number/String              


注意上方对应的Type,这七种类型都支持,我重点说说String和Boolean类型:


1.Type为String时:Value这个地方开发者可以根据需要说明定位的具体目的,让用户清楚的知道开启定位后用于做什么,更加透明化,清晰化;



弹框中"定位"两字即为Type为String时Value设置的值为"定位"时的展示。


当Value的值为空时,弹框显示如下:



 


2.Type为Boolean时:Value填YES即可。弹框显示如下:



 


而iOS8以前,定位提示的弹框显示如下:



 在iOS8下如果不做以上两处的处理,系统CLLocationManager这个类即时指定了代理,其获取经纬度的代理方法也不会走。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值