iOS地图

iOS8.0的CoreLocation定位

2015-11-12  本文已影响174人  iOS_成才录

一、简介

ios8.0-.png

二、标准定位服务 与 监听重大位置的改变(基于基站)

1、 标准定位服务(基于gps/wifi/基站)

[self.locationM startUpdatingLocation];

2、 监听重大位置的改变(基于基站进行定位)

[self.locationM startMonitoringSignificantLocationChanges];
```

应用场景

三、iOS8.0- 的定位实现

1、前台定位

import <CoreLocation/CoreLocation.h>

    ``` 

-(void)locationManager:(nonnull CLLocationManager *)manager didUpdateLocations:(nonnull NSArray<CLLocation *> *)locations
```

基本使用

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

@interface ViewController ()<CLLocationManagerDelegate>

/** 位置管理者 */
@property (nonatomic, strong) CLLocationManager *locationM;
@end

@implementation ViewController

#pragma mark -懒加载
-(CLLocationManager *)locationM
{
    if (!_locationM) {
              //1 创建位置管理者
        _locationM = [[CLLocationManager alloc] init];
        // 1.1 告诉外界位置的方案: 代理, block 通知
        _locationM.delegate = self;
        
        // 设置每隔多远定位一次(1次  111km/100m)
        // 最新的位置距离上一次位置之间的距离大于100m, 才会通过代理告诉外界
//        _locationM.distanceFilter = 100;
        
        
//         kCLLocationAccuracyBestForNavigation // 最适合导航
//         kCLLocationAccuracyBest; // 最好的
//         kCLLocationAccuracyNearestTenMeters; // 附近10米
//         kCLLocationAccuracyHundredMeters; // 100米
//         kCLLocationAccuracyKilometer; // 1000米
//         kCLLocationAccuracyThreeKilometers; // 3000米
        // 定位精确度
        // 定位精确度越高, 越耗电, 而且, 定位时间越长
        _locationM.desiredAccuracy = kCLLocationAccuracyBest;
    }
    return _locationM;
}


- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
        // 2. 使用位置管理者, 开始获取用户位置
        // 开发经验: start 开始某个服务  stop 停止某个服务
    // 一旦调用了这个方法, 那么就会不断的获取用户位置信息, 然后告诉外界
    // 默认情况,只能在前台获取用户位置信息, 如果我们想要在后台获取位置, 必须勾选后台模式 location updates
    // 标准定位服务(基于gps/wifi/基站)
    [self.locationM startUpdatingLocation];

    
    // 监听重大位置的改变(基于基站进行定位 , 要求, 设备必须有电话模块)
  //  [self.locationM startMonitoringSignificantLocationChanges];
}

#pragma mark -CLLocationManagerDelegate
// 当获取到用户位置信息时调用
// manager : 位置管理者
// locations: 位置数组
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    
    NSLog(@"定位到了");
    
    // 一般我们开发中, 获取到用户位置信息之后, 做一些业务逻辑操作
    // 针对于定位一次的情况, 可以在定位到之后 停止获取用户位置
//    [manager stopUpdatingLocation];
    
}
@end

2、后台定位

勾选后台模式.png
上一篇 下一篇

猜你喜欢

热点阅读