iOS - 定位服务
2015-10-22 11:37
513 查看
定位用到
本篇只是做简单的定位测试
在plist文件中添加弹窗询问是否定位的属性:
该属性下可以填写弹窗信息,下图为效果:
<CoreLocation/CoreLocation.h>和
CLLocationManagerDelegate
本篇只是做简单的定位测试
#import "AppDelegate.h" #import <CoreLocation/CoreLocation.h> @interface AppDelegate ()<CLLocationManagerDelegate> { CLLocationManager *_locationManager;//用于定位获取用户信息 CLLocation *_location;//用于保存位置信息 } /** 纬度 */ @property (nonatomic, assign) double latitude; /** 经度 */ @property (nonatomic, assign) double longitude; @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [self setUpLocationInfomation]; return YES; } - (void)setUpLocationInfomation { _locationManager = [[CLLocationManager alloc]init]; if ([CLLocationManager locationServicesEnabled]) { NSLog(@"--------------开始定位---------------"); // distanceFilter是距离过滤器,为了减少对定位装置的轮询次数,位置的改变不会每次都去通知委托,而是在移动了足够的距离时才通知委托程序 // 它的单位是米,这里设置为至少移动200再通知委托处理更新; _locationManager.delegate = self; _locationManager.distanceFilter = 200.0; // kCLLocationAccuracyBest:设备使用电池供电时候最高的精度 _locationManager.desiredAccuracy = kCLLocationAccuracyBest; //ios8+以上要授权,并且在plist文件中添加NSLocationWhenInUseUsageDescription,NSLocationAlwaysUsageDescription,值可以为空 if ([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0) { //ios8+,不加这个则不会弹框 [_locationManager requestWhenInUseAuthorization];//使用中授权 [_locationManager requestAlwaysAuthorization]; } [_locationManager startUpdatingLocation]; }else{ NSLog(@"--------------定位失败---------------"); } } - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations { //此处locations存储了持续更新的位置坐标值,取最后一个值为最新位置,如果不想让其持续更新位置,则在此方法中获取到一个值之后让locationManager stopUpdatingLocation if (_latitude) { // 这里我测试了获取经度后stop,发现并不能有效停止,也许是因为速度较慢再次update了,若理解有误望指正 [_locationManager stopUpdatingLocation]; }else{ NSLog(@"didUpdateLocations ++++++++++ "); CLLocation * cl = [locations lastObject]; _latitude = cl.coordinate.latitude; _longitude = cl.coordinate.longitude; NSLog(@"纬度 ----- %f",_latitude); NSLog(@"经度 ----- %f",_longitude); } } - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { NSLog(@"定位失败"); }
在plist文件中添加弹窗询问是否定位的属性:
NSLocationWhenInUseUsageDescription NSLocationAlwaysUsageDescription
该属性下可以填写弹窗信息,下图为效果:
相关文章推荐
- iOS如何把所有界面的状态栏的字体颜色都设置为白色
- iOS开发 字体适配
- IOS—两个ViewController间传值(逆向传值)
- iOS开发——文本高度
- iOS9适配常见问题
- vios 虚拟光驱 安装vioc
- iOS设置圆角矩形和阴影效果
- IOS—两个ViewController间传值
- iOS开发之ViewController页面跳转和弹出模态
- 关于iOS的自动化测试
- 【iOS】系统地图MapKit服务
- iOS 知识大全
- iOS 9适配系列教程
- iOS 9 适配出现的问题
- iOS 蓝牙编程
- Xocde7 里面Xib的使用
- iOS 中数字的格式化处理
- iOS开发 实战篇---Xcode7免费真机测试流程
- IOS- 如何集成支付宝
- iOS 状态蓝颜色设置和隐藏