码迷,mamicode.com
首页 > 其他好文 > 详细

UI高级___定位,地图

时间:2015-10-23 16:18:15      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

学习目标:

—定位功能

—地理编码

—用户位置跟中

—大头针

       在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

 

 

 

UI高级___定位,地图

标签:

原文地址:http://www.cnblogs.com/ahoy/p/4904755.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!