iOS 开发

iOS使用苹果自带定位功能

2015-12-03  本文已影响2642人  改变自己_now

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

实现、

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];

}

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

上一篇下一篇

猜你喜欢

热点阅读