iOS 检测定位服务

来源:互联网 发布:英雄杀2017探宝数据 编辑:程序博客网 时间:2024/06/05 16:11

Core Location是开发定位服务应用程序的框架。我们要在Xcode中添加“CoreLocation.framework”存在的框架。主要使用的类是:CLLocationManager,通过CLLocationManager实现定位服务。


注意:

1、添加“CoreLocation.framework”存在的框架

2、导入头文件  #import <CoreLocation/CoreLocation.h>


1、检测是否开启了定位功能

//检测定位开关有没有打开if (![CLLocationManager locationServicesEnabled]){    [[[UIAlertView alloc] initWithTitle:@"提示:"                                message:@"定位服务已被关闭,请前往设置页面打开!"                               delegate:nil                      cancelButtonTitle:nil                      otherButtonTitles:@"确定", nil] show];}


2、设置协议 CLLocationManagerDelegate


3、创建实例

CLLocationManager *locationManager;locationManager = [[CLLocationManager alloc] init];locationManager.delegate = self;locationManager.desiredAccuracy = kCLLocationAccuracyBest;locationManager.distanceFilter = kCLDistanceFilterNone;[locationManager startUpdatingLocation];


4、使用回调

//代理回调 检测是何种原因导致定位失败- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{    NSString *errorString;    [manager stopUpdatingLocation];    NSLog(@"Error: %@",[error localizedDescription]);    switch ([error code])    {        case kCLErrorDenied:        {            errorString = @"Access to Location Services denied by user";            [[[UIAlertView alloc] initWithTitle:@"提示:"                                        message:@"请打开该app的位置服务!"                                       delegate:nil                              cancelButtonTitle:nil                              otherButtonTitles:@"确定", nil] show];        }            break;        case kCLErrorLocationUnknown:        {            errorString = @"Location data unavailable";            [[[UIAlertView alloc] initWithTitle:@"提示:"                                        message:@"位置服务不可用!"                                       delegate:nil                              cancelButtonTitle:nil                              otherButtonTitles:@"确定", nil] show];        }            break;        default:        {            errorString = @"An unknown error has occurred";            [[[UIAlertView alloc] initWithTitle:@"提示:"                                        message:@"定位发生错误!"                                       delegate:nil                              cancelButtonTitle:nil                              otherButtonTitles:@"确定", nil] show];        }            break;    }}//实现位置的更新- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{    NSString *latitudeStr = [NSString stringWithFormat:@"%3.5f",newLocation.coordinate.latitude];    NSString *longitudeStr = [NSString stringWithFormat:@"%3.5f",newLocation.coordinate.longitude];    [locationManager stopUpdatingLocation];    NSLog(@"location ok");}


0 0