iOS学习之定位

以前一直觉得以Core开头的框架都挺难的。最近要搞一个项目要用到定位技术,所以就看了下CoreLocation框架。

简单地看了下技术资料,发现CoreLocation并不像想象中的那么难。其实在CoreLocation中核心的就是CLLocationManager类及其代理

CLLocationManagerDelegate了。只要把这个搞懂了,这个框架也就没什么大问题。而且常用的也就是那么一点点,好多功能平时也并不使用。

本文的目标就是做一个最简单的获取当前位置的实例,入门级的。

1.初始化一个CLLocationManager的实例。该类及代理用于设置定位的各参数(距离过滤,位置精确度,是否允许后台运行等),定位的方法等。

self.manager = [[CLLocationManageralloc]init];

2.获取当前设备定位按钮是否打开

[CLLocationManagerlocationServicesEnabled] //确保设备可以定位,如果返回NO,那就只能return了。

3.获取用户授权,用户是否愿意打开位置信息呢。想必大家都不会陌生,一用到定位类型的app,系统都会弹出对话框,让用户选择。

if ([CLLocationManagerauthorizationStatus] ==kCLAuthorizationStatusNotDetermined) {

        [self.managerrequestAlwaysAuthorization];

}

4.判断用户已经授权后,设置代理及开始位置更新。(当然在这里还可以有很多的设置可以做)

if ([CLLocationManagerauthorizationStatus] ==kCLAuthorizationStatusAuthorizedAlways || [CLLocationManagerauthorizationStatus] ==kCLAuthorizationStatusAuthorizedWhenInUse) {

        [self.managersetDelegate:self];

        [self.managerstartUpdatingLocation];

}

5.实现代理方法。

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{

    CLLocation *location = [locationslastObject];

    [self.geocoderreverseGeocodeLocation:locationcompletionHandler:^(NSArray<CLPlacemark *> *_Nullable placemarks,NSError *_Nullable error) {

        CLPlacemark *placemark = [placemarkslastObject];

        NSLog(@"%@",placemark);

    }];

}


6.还有一个很重要的地方需要设置。在plist中,增加一个Privacy - Location Always Usage Description的key


说明:self.geocoder是CLGeocoder的实例。这个类主要有两个功能:a.把位置信息(经纬度)反算成地址信息。 b.把地址信息计算出经位置信息(经纬度)。

self.geocoder = [[CLGeocoderalloc]init];


第一次写技术博客,也是受到网上说技术要多交流才会有进步的影响。感觉写得不怎么样,就当是抛砖引玉吧。请大家多多指正微笑微笑




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值