地图定位

来源:互联网 发布:redhat yum 编辑:程序博客网 时间:2024/05/29 02:21

//1.导入库







//2.配置info.plist




//如果设置了后台定位



#import "ViewController.h"

#import <CoreLocation/CoreLocation.h>


@interface ViewController ()<CLLocationManagerDelegate>


@property (nonatomic ,strong)CLLocationManager *manager;


@end


@implementation ViewController


- (void)viewDidLoad {

    [superviewDidLoad];

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

    self.manager = [CLLocationManagernew];

    

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

    //应用使用期间定位

    [self.managerrequestWhenInUseAuthorization];

    //一直定位(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.managerrespondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) {

        self.manager.allowsBackgroundLocationUpdates = YES;

    }


    //3.设置代理

    self.manager.delegate =self;

    

    //4.开始定位

    [self.managerstartUpdatingLocation];

}


#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


0 0
原创粉丝点击