美文网首页iOS 开发
iOS使用苹果自带定位功能

iOS使用苹果自带定位功能

作者: 改变自己_now | 来源:发表于2015-12-03 22:03 被阅读2642次

    由于公司的项目中只需要一个定位的功能,于是想到了苹果自带定位功能。废话不多说,直接上代码。

    实现、

    1、导入头文件,并且遵循CLLocationManagerDelegate协议
    #import <CoreLocation/CoreLocation.h>
    2、声明一个全局的定位管理者变量

    @property (nonatomic,strong) CLLocationManager *manager;
    

    3、实例化对象,设置代理,请求授权(不经过授权不能适应定位)

      // 实例化对象
    _manager = [[CLLocationManager alloc] init];
    
    _manager.delegate = self;
    
    // 请求授权,记得修改的infoplist,NSLocationAlwaysUsageDescription(描述)
    [_manager requestAlwaysAuthorization];
    

    4、实现其代理方法

    #pragma mark - 代理方法,当授权改变时调用
    - (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
    
    
    // 获取授权后,通过
    if (status == kCLAuthorizationStatusAuthorizedAlways) {
        
        //开始定位(具体位置要通过代理获得)
        [_manager startUpdatingLocation];
        
        //设置精确度
        _manager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
        
        //设置过滤距离
        _manager.distanceFilter = 1000;
        
        //开始定位方向
        [_manager startUpdatingHeading];
    }
    
    
    }
    
    
    
    #pragma mark - 方向
    - (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading {
    
    //输出方向
    
    //地理方向
    NSLog(@"true = %f ",newHeading.trueHeading);
    
    // 磁极方向
    NSLog(@"mag = %f",newHeading.magneticHeading);
    
    
    
    }
    
    #pragma mark - 定位代理
    - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
    
    //    NSLog(@"%@",locations);
    
    //获取当前位置
    CLLocation *location = manager.location;
    //获取坐标
    CLLocationCoordinate2D corrdinate = location.coordinate;
    
    //打印地址
    NSLog(@"latitude = %f longtude = %f",corrdinate.latitude,corrdinate.longitude);
    
    // 地址的编码通过经纬度得到具体的地址
    CLGeocoder *gecoder = [[CLGeocoder alloc] init];
    
    [gecoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {
        
        CLPlacemark *placemark = [placemarks firstObject];
        
        //打印地址
        NSLog(@"%@",placemark.name);
    }];
    
    // 通过具体地址去获得经纬度
    CLGeocoder *coder = [[CLGeocoder alloc] init];
    
    [coder geocodeAddressString:@"天河城" completionHandler:^(NSArray *placemarks, NSError *error) {
       
        
        
        NSLog(@"_________________________反编码");
        
        CLPlacemark *placeMark = [placemarks firstObject];
        
        
        
        NSLog(@"%@ lati = %f long = %f",placeMark.name,placeMark.location.coordinate.latitude,placeMark.location.coordinate.longitude);
        
        
    }];
    
    
    //停止定位
    [_manager stopUpdatingLocation];
    
    }
    

    哈哈,,,简单的四部就能简单的使用苹果自带的定位功能了!!!

    相关文章

      网友评论

        本文标题:iOS使用苹果自带定位功能

        本文链接:https://www.haomeiwen.com/subject/hbjshttx.html