ios7.0 ios8.0 ios9.0地图定位的变化
2016-03-07 14:47 lvjun70 阅读(104) 评论(0) 收藏 举报:colocation:区域监听,用于地理定位,地理编码(着重功能实现)
* MapKit:基于colocation,地图展示,例如大头针,路线,覆盖展示等(着重界面)
* LBS:Location Based Service(基于位置的服务)
* SoloMo:social Local Mobile(索罗门)社区,位置,移动
* 1.导入主头文件
* 2.CLcolacationManager
* 当访问用户隐私的时候会自动弹出提示框跪
*
* ios8.0后:
* 苹果进一步加强了对用户隐私的保护:当app想访问用户的隐私信息,系统不在自动弹出一个对话框让用户授权
* 解决方法:
* 1)掉用ios8.0的API 主动请求用户授权:- (void)requestAlwaysAuthorization // 请求前台后台都能获得用户的授权
* 2)- (void)
1.导入<CoreLocation/CoreLocation.h>
2.创建管理者
代码实现:
#import <CoreLocation/CoreLocation.h>
@interface ViewController ()<CLLocationManagerDelegate>
@property (nonatomic, strong)CLLocationManager *lm;
#pragma mark 懒加载
// dang 点击的时候就会进行地图定位
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
// 2.使用位置管理者
[self.lm startUpdatingLocation];
}
- (CLLocationManager *)lm
{
if (!_lm) {
// 1.创建位置管理者
_lm = [[CLLocationManager alloc] init];
// 1.1 用代理,通知,block等来实现获得位置的方法
_lm.delegate = self;
// 每隔多远定位一次
// _lm.distanceFilter = 100;
//cmd + c, cmd + f,cmd + v
/**
*kCLLocationAccuracyBestForNavigation // 最适合导航
kCLLocationAccuracyBest; // 最好的
kCLLocationAccuracyNearestTenMeters; // 附近10米
kCLLocationAccuracyHundredMeters; // 100m
kCLLocationAccuracyKilometer; // 1000m
kCLLocationAccuracyThreeKilometers; // 3000m
*/
// 精确度越高,越好点,定位时间越长(需要根据项目需求选者)
// 后台定位需要配置:
_lm.desiredAccuracy = kCLLocationAccuracyBest;
NSLocationWhenInUseUsageDescription
NSLocationAlwaysUsageDescription
/*****ios8.0+的适配,需要在info.pist导入NSLocationWhenInUse*/
if ([[UIDevice currentDevice].systemVersion floatValue] >=8.0) {
// +authorizationStatus != kCLAuthorizationStatusNotDetermined
// 这个方法不会有效
// 当前的授权状态为前台授权时,此方法也会有效
[_lm requestAlwaysAuthorization];
//
}
//ios9中需要允许后回去用户位置才能在后台进行定位
if ([[UIDevice currentDevice].systemVersion floatValue]>=9.0) {
// 允许后台获取用户位置(ios9.0)
_lm.allowsBackgroundLocationUpdates = YES;
}
// if (_lm respondsToSelector:@selector(requestAlwaysAuthorization)) {
// [_lm requestAlwaysAuthorization];
// }
// 前台授权
// 默认情况下不可以在前台获取位置,勾选后台模式,
//[_lm requestWhenInUseAuthorization];
// 前后太定位说明(在前后台都能够获取用户的信息)
//[_lm requestAlwaysAuthorization];
}
return _lm;
}
浙公网安备 33010602011771号