CoreLocation.framework 定位要用到这个框架
import <CoreLocation/CoreLocation.h>
info 设置 NSLocationWhenInUseUsageDescription boolean YES
创建对象 》设置代理 >设置》开的更新位置
@property (nonatomic,strong) CLLocationManager * manger;
// ios8要定位,要请求定位的权限
if ([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0) {
[manager requestWhenInUseAuthorization];
}
//完整代码
#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>
@interface ViewController ()<CLLocationManagerDelegate>
@property (nonatomic,strong) CLLocationManager * manger;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//1>CLLocationManager对象
CLLocationManager *manager = [[CLLocationManager alloc] init];
// 设置代理
manager.delegate = self;
// 距离过滤 设置多少米定位一次
manager.distanceFilter = 1000;
// 设置定位的精确度,误差不超过10米,定位越精确,越耗电
manager.desiredAccuracy = 10;
//2>调用 startUpdatingLocation方法进入定位
[manager startUpdatingLocation];
// ios8要定位,要请求定位的权限
if ([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0) {
[manager requestWhenInUseAuthorization];
}
//赋值
self.manger = manager;
}
#pragma mark 定位到经纬后调用
/*
* 这方法调用非常频烦,时刻定位你当前的位置
* 导航时需要时刻定位,但是,只是获取当前位置信息,不需要时时定位
*/
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
// CLLocation 是一个位置对象
for (CLLocation *loc in locations) {
// 经纬度
CLLocationCoordinate2D coordinate = loc.coordinate;
NSLog(@"定位到经度 %lf,纬度 %lf",coordinate.longitude,coordinate.latitude);
// 当前位置是广州,计算距离北京距离,单位是米 / 1000
CLLocation *bjLocation = [[CLLocation alloc] initWithLatitude:23.05 longitude:113.15];
double distance = [loc distanceFromLocation:bjLocation];
NSLog(@"当前位置与北京的距离 %lf 公里",distance / 1000);
}
// 停止定位
[manager stopUpdatingLocation];
}
@end