地图定位

//1.导入库







//2.配置info.plist




//如果设置了后台定位



#import "ViewController.h"

#import <CoreLocation/CoreLocation.h>


@interface ViewController ()<CLLocationManagerDelegate>


@property (nonatomic , strong)CLLocationManager *manager;


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    //1. 创建位置管理器(注意:生命周期)

    self.manager = [CLLocationManager new];

    

    //2.请求授权(注意:配置info.plist)

    //应用使用期间定位

    [self.manager requestWhenInUseAuthorization];

    //一直定位(app在后台使依然请求定位)

//    [self.manager requestAlwaysAuthorization];

    

    //距离筛选器(),当移动超过上次定位5米之后,才会调用更新定位的函数

//    self.manager.distanceFilter = 5;

    

    /*

     extern const CLLocationAccuracy kCLLocationAccuracyBestForNavigation    导航专用

     extern const CLLocationAccuracy kCLLocationAccuracyBest;                最佳精准度

     extern const CLLocationAccuracy kCLLocationAccuracyNearestTenMeters;    十米误差

     extern const CLLocationAccuracy kCLLocationAccuracyHundredMeters;       百米误差

     extern const CLLocationAccuracy kCLLocationAccuracyKilometer;           千米误差

     extern const CLLocationAccuracy kCLLocationAccuracyThreeKilometers;     三千米误差

     */

    //设置期望精准度

//    self.manager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;

//    

//    //app进入后台继续定位

    if([self.manager respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) {

        self.manager.allowsBackgroundLocationUpdates = YES;

    }


    //3.设置代理

    self.manager.delegate = self;

    

    //4.开始定位

    [self.manager startUpdatingLocation];

}


#pragma mark

#pragma mark 更新定位

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

    

    //取出最后一次定位

    CLLocation *location = locations.lastObject;

    //如果无法打印,重启模拟器

    NSLog(@"经度:%f,纬度:%f",location.coordinate.longitude,location.coordinate.latitude);

    

    //停止定位

//    [manager stopUpdatingLocation];

    

    /*

     typedef struct {

     CLLocationDegrees latitude;     // 纬度

     CLLocationDegrees longitude;    // 精度

     } CLLocationCoordinate2D;

     // 坐标

     @property(readonly, nonatomic) CLLocationCoordinate2D coordinate;

     

     // 海拔

     @property(readonly, nonatomic) CLLocationDistance altitude;

     

     // 水平精准度(经纬度)

     @property(readonly, nonatomic) CLLocationAccuracy horizontalAccuracy;

     

     // 垂直精准度(海拔)

     @property(readonly, nonatomic) CLLocationAccuracy verticalAccuracy;

     

     // 朝向 (正北 0

     @property(readonly, nonatomic) CLLocationDirection course __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_2_2) __TVOS_PROHIBITED __WATCHOS_PROHIBITED;

     

     // 速度 m/s

     @property(readonly, nonatomic) CLLocationSpeed speed __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_2_2) __TVOS_PROHIBITED __WATCHOS_PROHIBITED;

     

     // 时间戳

     @property(readonly, nonatomic, copy) NSDate *timestamp;

     

     // 楼层

     @property(readonly, nonatomic, copy, nullable) CLFloor *floor __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_8_0);

     

     // 描述

     @property (nonatomic, readonly, copy) NSString *description;

     

     // 计算距离

     - (CLLocationDistance)getDistanceFrom:(const CLLocation *)location __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_NA,__MAC_NA,__IPHONE_2_0,__IPHONE_3_2) __TVOS_PROHIBITED __WATCHOS_PROHIBITED;

     

     // 计算距离

     - (CLLocationDistance)distanceFromLocation:(const CLLocation *)location __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_2);

     */

}


@end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值