参考文章:http://blog.devzeng.com/blog/ios8-corelocation-framework.html
在iOS8中,苹果已经强制开发者在请求定位服务时获得用户的授权,此外iOS状态栏中还有指示图标,提示用户当前应用是否正在使用定位服务。另外在iOS8中,苹果进一步改善了定位服务,让开发者请求定位服务时需要向用户提供更多的透明。此外,iOS8中还支持让应用开发者调用全新的“访问监控”功能,当用户允许后应用才能获得更多的定位数据。
iOS8以前使用CoreLocation定位
1、首先定义一个全局的变量用来记录CLLocationManager对象,引入CoreLocation.framework
使用#import <CoreLocation/CoreLocation.h>
@property (nonatomic, strong) CLLocationManager *locationManager;
2、初始化CLLocationManager并开始定位
self.locationManager = [[CLLocationManager alloc]init];
_locationManager.delegate = self;
_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
_locationManager.distanceFilter = 10;
[_locationManager startUpdatingLocation];
3、实现CLLocationManagerDelegate的代理方法
(1)获取到位置数据,返回的是一个CLLocation的数组,一般使用其中的一个
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
CLLocation *currLocation = [locations lastObject];
NSLog(@"经度=%f 纬度=%f 高度=%f", currLocation.coordinate.latitude, currLocation.coordinate.longitude, currLocation.altitude);
}
(2)获取用户位置数据失败的回调方法,在此通知用户
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
if ([error code] == kCLErrorDenied)
{
//访问被拒绝
}
if ([error code] == kCLErrorLocationUnknown) {
//无法获取位置信息
}
}
4、在viewWillDisappear
关闭定位
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[_locationManager stopUpdatingLocation];
}
iOS8中使用CoreLocation定位
1、在使用CoreLocation前需要调用如下函数【iOS8专用】:
iOS8对定位进行了一些修改,其中包括定位授权的方法,CLLocationManager增加了下面的两个方法:
(1)始终允许访问位置信息
- (void)requestAlwaysAuthorization;
(2)使用应用程序期间允许访问位置数据
- (void)requestWhenInUseAuthorization;
示例如下:
self.locationManager = [[CLLocationManager alloc]init];
_locationManager.delegate = self;
_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
_locationManager.distanceFilter = 10;
[_locationManager requestAlwaysAuthorization];//添加这句
[_locationManager startUpdatingLocation];
2、在Info.plist文件中添加如下配置:
(1)NSLocationAlwaysUsageDescription
(2)NSLocationWhenInUseUsageDescription
这两个键的值就是授权alert的描述,示例配置如下[勾选Show Raw Keys/Values后进行添加
]:
相关推荐
iOS,corelocation,定位,通过经纬度计算距离
主要介绍了iOS开发中使用CoreLocation框架处理地理编码的方法,代码基于传统的Objective-C,需要的朋友可以参考下
iOS中coreLocation实现定位,搜索定位,poi和路线显示...
Core Location是iOS SDK中一个提供设备位置的框架。可以使用三种技术来获取位置:GPS、蜂窝或WiFi。在这些技术中,GPS最为精准,如果有GPS硬件,Core Location将优先使用它。如果设备没有GPS硬件(如WiFi iPad)或使用...
使用说明,需要引用定位类库CoreLocation和添加定位权限,具体说明和最新版本在github:https://github.com/panyaorui/CityList
ios7.0 以上定位 使用xcode自带的 corelocation
首先你要在你的Xcode中添加两个连接库,MapKit和CoreLocation,如图 core location提供了定位功能,能定位装置的当前坐标,同时能得到装置移动信息,最重要的类是CLLocationManager,定位管理。 iOS8开始,Core ...
1.iOS开发检测是否开启定位: 需要导入: #import <CoreLocation> 代码如下: + (void)openLocationServiceWithBlock:(ReturnBlock)returnBlock { BOOL isOPen = NO; if ([CLLocationManager ...
用CoreLocation实现简单定位,获取当前经纬度和地理名称,海拔高度等
iOS定位 – 普通定位(没有地图) – 反地理编码(得到具体位置),下面通过代码给大家详解,代码如下: #import <CoreLocation> 使用到的头文件 要引入CoreLocation这个包 <CLLocationManagerDelegate> 使用的代理名称...
iOS定位服务Core Location使用详解
8.0以后的GPS定位问题,添加的一些配置信息
CoreLocation是iPhone、iPad等开发定位服务应用程序的框架,主要使用的类是:CLLocationManager,通过CLLocationManager实现定位服务。是定位服务管理类,可以设置定位服务的参数、获取经纬度等
使用最近的位置數據點結合 AR 世界中的移動知識,顯著提高了定位精度。 ARKit 需要 iOS 11,並支持以下設備: iPhone 6S 及以上 iPhone SE iPad (2017) 所有 iPad Pro 型號 iOS 11 可以從 Apple 的開發者網站下載。
CoreLocation :使用wifi和GPS数据来确定您的全球位置,但准确性较低。 ARKit + CoreLocation :将AR的高精度与GPS数据的规模相结合。 结合这些技术的潜力是巨大的,它在许多不同领域具有许多潜在的应用。 该库...
定位和反查位置信息要加载两个动态库 CoreLocation.framework 和 MapKit.framework 一个获取坐标一个提供反查 代码如下: // appDelgate.h #import #import <CoreLocation> #import @interface AppDelegate : ...
主要是结合我的博客中文章而上传的代码,看了我的博客后再下载这个案例就好理解些了
通过CoreLocation定位,获取到用户当前位置,跟地图中的定位不同。 一、导入CoreLocation.framework 二、#import <CoreLocation> 三、声明代理 四、代码实现 1、声明 CLLocationManager *locationManager;//定义...