您的位置:首页 > 其它

地图定位

2016-08-04 01:48 375 查看
//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
requestWhenInUseAuthorizati
4000
on];

   
//一直定位(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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: