标签:
学习目标:
—定位功能
—地理编码
—用户位置跟中
—大头针
在IOS开发中,要加入定位和地图 必须导入2个框架进行开发。
map kit:用于地图展示
core Location:用于地理定位
要实现地图、导航功能,往往需要先熟悉定位功能,在iOS中通过Core Location框架进行定位 操作。Core Location自身可以单独使用,和地图开发框架MapKit完全是独立的,
但是往往地图开发要配合定位框架使用。在Core Location中主要包含了定位、地理编码(包括反编码)功能。
实现定位
#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>
@interface ViewController ()<CLLocationManagerDelegate>
@property (nonatomic, strong)CLLocationManager *manager;
@end
@implementation ViewController
//使用定位之前 先导入CoreLocation.framework框架 在相应的类中导入CoreLocation/CoreLocation.h
- (void)viewDidLoad {
[super viewDidLoad];
//判断服务器是否打开
BOOL isOpen = [CLLocationManager locationServicesEnabled];
if (isOpen) {
NSLog(@"定位服务打开");
}else{
NSLog(@"亲,您手机定位服务没打开");
}
//判断认证状态
/*
1.用户没有做出任何判断
kCLAuthorizationStatusNotDetermined = 0,
2.用户禁用位置服务信息
kCLAuthorizationStatusDenied = 2
3.在后台访问位置服务
kCLAuthorizationStatusAuthorizedAlways = 3 NS_ENUM_AVAILABLE(NA, 8_0)——————此枚举值是在iOS8.0之后添加上的,就是iOS7,6,...没有这个枚举值,
4.在前台访问位置服务
kCLAuthorizationStatusAuthorizedWhenInUse = 4
*/
//获取认证状态
NSInteger stuatus = [CLLocationManager authorizationStatus];
NSLog(@"%ld",stuatus);
switch (stuatus) {
case 0:
NSLog(@"kCLAuthorizationStatusNotDetermined--没有决定");
break;
case 1:
NSLog(@"kCLAuthorizationStatusRestricted--没有许可");
break;
case 2:
NSLog(@"kCLAuthorizationStatusDenied--禁止使用");
break;
case 3:
NSLog(@"kCLAuthorizationStatusAuthorizedAlways--始终允许");
break;
case 4:
NSLog(@"kCLAuthorizationStatusAuthorizedWhenInUse--开启允许");
break;
default:
break;
}
//3.请求app访问手机的定位服务
// 3.1 修改plist文件
//NSLocationAlwaysUsageDescription---我想在后台还访问您的位置
//NSLocationWhenInUseUsageDescription---我想在我的app开启的时候使用您的位置,可以吗?
_manager = [[CLLocationManager alloc]init];
_manager.delegate = self;
float version = [[[UIDevice currentDevice] systemVersion] floatValue];
NSLog(@"%f %@",version,[[UIDevice currentDevice] systemName]);
if (version >= 8.0) {
[_manager requestAlwaysAuthorization];
}
}
// 用户许可状态改变的时候调用此方法
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
{
NSLog(@"认证状态改变");
}
@end
标签:
原文地址:http://www.cnblogs.com/ahoy/p/4904755.html