美文网首页
iOS----定位

iOS----定位

作者: GrayMantis | 来源:发表于2017-07-31 18:34 被阅读0次

#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>
@interface ViewController ()<CLLocationManagerDelegate>
@property (nonatomic, strong) CLLocationManager *locationManager;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // 需求 : 根据用户的移动距离  决定是否定位
    
    // 1.创建位置管理器
    CLLocationManager *locationManager = [[CLLocationManager alloc] init];
    self.locationManager = locationManager;
    
    // 2.请求用户授权  -->iOS8之后才有的     
    //必须要配置info.plist文件------->参见文章后面注释1
    // 无论app在前台还是后台运行,都可以定位
//    [locationManager requestAlwaysAuthorization];
    // 只有app在前台运行时,才可以定位
    [locationManager requestWhenInUseAuthorization];
    // 3.设置代理
    locationManager.delegate = self;
    
    // 设置属性
    // 位置筛选器   单位:米    用户移动了100米后再更新定位  (调用对应的代理方法)
//    locationManager.distanceFilter = 100;
//    // 期望精度   单位:米      表示系统将100.3范围内当做一个位置
//    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    
    if ([UIDevice currentDevice].systemVersion.floatValue >= 9.0) {
        // 临时开启后台定位  一定需要配置info.plist文件----->参见文章后面注释2
        locationManager.allowsBackgroundLocationUpdates = YES;
    }
    // 4.开始定位
    [locationManager startUpdatingLocation];
//    [locationManager startUpdatingHeading];  移动方向
    [self compareDistance];
}
// 比较两点的距离    比较的是两点之间的直线距离
- (void)compareDistance
{
    // 1.北京的位置
    CLLocation *location = [[CLLocation alloc] initWithLatitude:39 longitude:115];
    
    // 2.上海的位置
    CLLocation *location1 = [[CLLocation alloc] initWithLatitude:30 longitude:120];
    
    // 比较位置  单位 米
    double distance = [location distanceFromLocation:location1];
    NSLog(@"%f",distance * 0.001);

}
/// 定位成功后调用
/// 持续调用   耗电
/// locations:放着CLLocation的数组
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations
{
    NSLog(@"%@",locations);
     //停止定位 (省电)
    [manager stopUpdatingLocation];
}
@end

  • 注释1:
    请求用户授权使用定位权限
image.png
  • 注释2
Requeired background modes.png

也可以用简便的可视化方法

location update.png

相关文章

  • iOS----定位

    注释1:请求用户授权使用定位权限 注释2 也可以用简便的可视化方法

  • iOS----如何检查域名是否支持ipv6

    一、iOS----如何检查域名是否支持ipv6 iOS----------如何检查域名是否支持ipv6 1.检查你...

  • iOS----涂鸦

    一个简单的涂鸦Demo,实现了撤回以及橡皮檫功能的简单操作。(自己在基础上慢慢优化) 下载链接 https://g...

  • iOS----通知

    监听下一个页面传回来的广播,修改当前页面的标题名称 播放广播 [NSNotificationCenter defa...

  • iOS----属性

    声明属性 Objective-C声明的属性特性提供了一种简单的方法来声明和实现对象的访问器方法。 概述 ...

  • iOS----应用图标

    1.iOS应用图标需要是PNG形式的,而且不应包含任何透明区域和圆角。如下 2.iOS-iPhone-应用图标Ap...

  • iOS----启动图

    iOS启动图有两种设置方式,分别为Launch Images Source和Launch Screen File,...

  • iOS----手势冲突

    项目中我们经常会用到弹框,如京东客服的订单功能,底部一个半透明view,view上添加一个tableview。点击...

  • iOS----音频播放--AVAudioPlayer

    所有的iOS App都具有默认的音频会话,它定义了以下行为:可以播放音频,但是不能录制音频。静音模式下App播放的...

  • iOS----点赞动画

    -(void)praiseAnimateWithView:(UIView *)view{[UIView anima...

网友评论

      本文标题:iOS----定位

      本文链接:https://www.haomeiwen.com/subject/chirlxtx.html