码迷,mamicode.com
首页 > 移动开发 > 详细

iOS定位和地图

时间:2015-01-24 06:42:34      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

iOS定位和地图功能要用到两个框架:mapkitcoreLocation

 

两个专门术语:lbs(Location Based Service)基于定位服务的APP和solomo(Social Local Mobile)社交+本地+手机。

 

  • CoreLocation

1.导入框架,导入头文件。

2.创建CALocationManager对象。

3.设置代理。

4.实现方法

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations这个方法调用频率很高,一般情况下需要在该方法下写

停止语句。

#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>

@interface ViewController () <CLLocationManagerDelegate>

@property (nonatomic,strong) CLLocationManager *manager;//注意点

@end

@implementation ViewController

- (CLLocationManager *)manager
{
    if(!_manager)
    {
        _manager = [[CLLocationManager alloc]init];
        _manager.delegate = self;
    }
    return _manager;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.manager startUpdatingLocation];//开启定位
}

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    NSLog(@"%@",locations);
    [self.manager stopUpdatingLocation];//停止定位
}

注意点:要把CoreLocation对象设为全局变量,不然方法走完就被销毁了。

在info.plist里添加Privacy - Location Usage Description,增加描述(非必选)。

 iOS8实现方法定位服务 

#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>

@interface ViewController () <CLLocationManagerDelegate>

@property (nonatomic,strong) CLLocationManager *manager;

@end

@implementation ViewController

- (CLLocationManager *)manager
{
    if(![CLLocationManager locationServicesEnabled])
    {
        NSLog(@"不可用");
    }
    if(!_manager)
    {
        _manager = [[CLLocationManager alloc]init];
        _manager.delegate = self;
        if([[[UIDevice currentDevice]systemVersion]doubleValue]>8.0)
        {
            [_manager requestWhenInUseAuthorization];//前台定位。
            
            //[_manager requestAlwaysAuthorization];//前后台同时定位。
        }
    }
    return _manager;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.manager startUpdatingLocation];//开启定位
}

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    NSLog(@"%@",locations);
    [self.manager stopUpdatingLocation];//停止定位
}

在 info.plist里加入对应的缺省字段 ,值设置为YES(前台定位写上边字段,前后台定位写下边字段)

          NSLocationWhenInUseUsageDescription   //允许在前台获取GPS的描述
          NSLocationAlwaysUsageDescription   //允许在前、后台获取GPS的描述

为了严谨期间,应该先判断用户是否打开了定位服务,在进行后续的代码。

 

if(![CLLocationManager locationServicesEnabled])
    {
        NSLog(@"服务不可用");
        return nil;
    }

 

iOS定位和地图

标签:

原文地址:http://www.cnblogs.com/congliang/p/4245352.html

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