您的位置:首页 > 移动开发 > IOS开发

iOS 定位 <CoreLocation/CoreLocation.h>

2016-04-20 13:23 447 查看
- (void)viewDidLoad {

[super viewDidLoad];

_manager = [[CLLocationManager alloc] init];

//从IOS8(Xcode6)开始,定位权限必须主动申请,首先在info.plist中添加NSLocationWhenInUseUsageDescription或NSLocationAlwaysUsageDescription字段,然后调用此方法。

[_manager requestWhenInUseAuthorization];

_manager.delegate = self;

//headingAvailable判断设备是否支持方向识别。

if ([CLLocationManager headingAvailable]) {

NSLog(@"设备支持方向识别");

//设置监视精确度(当方向该变量达到多少时才调用代理方法)。

_manager.headingFilter = 1;

//开启方向监视。当设备方向发生变化时,就会调用方向更新的代理方法。

//[_manager startUpdatingHeading];

}else{

NSLog(@"设备不支持方向识别");

}

//判断设备的定位功能是否可用。

if ([CLLocationManager locationServicesEnabled]) {

NSLog(@"定位可用");

//设置调用位置改变方法的最小移动距离。

_manager.distanceFilter = kCLDistanceFilterNone;

//设置定位的精确度,最小可以精确到米。

_manager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;

//如果定位可用,开启位置监视。

[_manager startUpdatingLocation];

}else{

NSLog(@"定位不可用");

}

//创建一个坐标点

CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(34.729420, 113.746134);

//根据坐标点和半径生成一个圆形区域。

CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:coordinate radius:50 identifier:@"region1"];

//开启区域监视。当设备进入区域或者离开区域时都会调用对应的协议方法。

[_manager startMonitoringForRegion:region];

}

当设备方向发生变化时调用

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading{

//北:0,东:90,南:180,西270.

NSLog(@"磁力计方向%f",newHeading.magneticHeading);

NSLog(@"真实方向%f",newHeading.trueHeading);

}

当设备位置发生变化时调用

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

//CLLocation表示一个定位信息

CLLocation *location = [locations lastObject];

//timestamp表示这次定位的时间

NSDate *date = location.timestamp;

//判断定位的时间是否距离现在过长,

double time = [date timeIntervalSinceNow];

if (ABS(time)<10) {

//location.coordinate,坐标。

NSLog(@"纬度%f",location.coordinate.latitude);

NSLog(@"经度%f",location.coordinate.longitude);

}

}

当设备进入某个区域时调用

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region{

}

当设备离开某个区域时调用

- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region{

}

当定位失败时调用

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{

[_manager stopUpdatingHeading];

[_manager stopUpdatingLocation];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: