地图定位
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
//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
相关文章推荐
- Swift 语言面面观(二)
- 51Nod-1315-合法整数集
- Swift 语言面面观(一)
- 使用 Swift 创建简单的二维码扫描应用
- IntelliJ IDEA 常用设置讲解3
- webpack(二)配置
- Objective-C isa 指针 与 runtime 机制
- just a test
- Centos 7 下LAMP环境调试搭配(+phpmyadmin+phpstorm)
- Swift 3 新特性
- Android Studio安装MonkeyTalk Agent小记
- Installing Powerline on OS X + homebrew
- 小幸运
- 基于RelativeLayout实现自动换行标签控件
- android视图动画、属性动画、自定义动画、5.X SVG矢量动画机制详解
- IntelliJ IDEA 常用设置讲解2
- Linux - IP数据报报头及个字段的意义
- MFC如何获取控件的坐标
- Snackbar使用详解及其相关框架TSnackbar
- 多线程编程入门(15):线程同步工具之Semaphore(信号量)