定位 - CoreLocation - 打印位置信息
1. 导入框架 <CoreLocation.framework>, 引入头文件 import <CoreLocation/CoreLocation.h>;
2. 创建管理者对象 (strong)
#import "ViewController.h"
@interface ViewController ()<CLLocationManagerDelegate>
/** 定位管理者 ***/
@property (nonatomic, strong) CLLocationManager *mgr;
@end
@implementation ViewController
/** 懒加载 ***/
- (CLLocationManager *)mgr{
if (!_mgr) {
_mgr = [[CLLocationManager alloc] init];
}
return _mgr;
}
- (void)viewDidLoad {
[super viewDidLoad];
// 1. 创建CoreLocation管理者
// 2. 成为CoreLocaltion管理者的代理, 监听获取的位置
self.mgr.delegate = self;
// 3. 设置属性
// 设置多久 获取一次位置
// self.mgr.distanceFilter = 500;
/**
kCLLocationAccuracyBestForNavigation -- 最佳导航
kCLLocationAccuracyBest; -- 最精准
kCLLocationAccuracyNearestTenMeters; -- 十米
kCLLocationAccuracyHundredMeters; -- 百米
kCLLocationAccuracyKilometer; -- 千米
kCLLocationAccuracyThreeKilometers; -- 三千米
*/
// 设置定位精确度
self.mgr.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
/**
* ios7 , 只要开始定位, 系统就会自动要求用户对你的应用程序授权. 但是从ios8开始, 想要定位自己必须主动要求用户授权,而且必须再info.plist文件中配置一项属性, 才能弹出授权窗口.
NSLocationWhenInUseDescription,允许在前台获取GPS的描述
NSLocationAlwaysUsageDescription,允许在后台获取GPS的描述
*/
// 4. 请求授权定位
if(IOS8){
LogRed(@"ios 8");
// 主动要求用户授权, 授权成功以后会调用对应的代理方法.
[self.mgr requestAlwaysAuthorization]; // 请求前台和后台定位权限
// [self.mgr requestWhenInUseAuthorization]; // 请求前台定位权限
}else{
LogMagenta(@"ios 7");
// 3. 开始监听
[self.mgr startUpdatingLocation];
}
}
/**
* 当授权状态改变时, 调用此方法
*
* @param manager 触发事件的对象
* @param status 授权状态
*/
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
{
//
// kCLAuthorizationStatusNotDetermined ---- 等待授权
// kCLAuthorizationStatusRestricted, ---- 受限 -- 未授权
// kCLAuthorizationStatusDenied ---- 拒绝授权
// kCLAuthorizationStatusAuthorizedAlways --- 前台 后台都授权
// kCLAuthorizationStatusAuthorizedWhenInUse - 前台授权
if (status == kCLAuthorizationStatusNotDetermined) {
LogWhite(@"等待用户授权");
}else if (status == kCLAuthorizationStatusAuthorizedAlways ||
status == kCLAuthorizationStatusAuthorizedWhenInUse)
{
LogRed(@"授权成功");
// 开始定位
[self.mgr startUpdatingLocation];
}else
{
LogGreen(@"授权失败");
}
}
#pragma mark - CLLocationManagerDelegate
/**
* 获取到位置信息后就会调用
*
* @param manager 触发事件的对象
* @param locations 获取到的位置
*/
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
/**
* // CLLocation
location.coordinate; 坐标, 包含经纬度
location.altitude; 设备海拔高度 单位是米
location.course; 设置前进方向 0表示北 90东 180南 270西
location.horizontalAccuracy; 水平精准度
location.verticalAccuracy; 垂直精准度
location.timestamp; 定位信息返回的时间
location.speed; 设备移动速度 单位是米/秒, 适用于行车速度而不太适用于不行
*/
LogRed(@"%@",locations);
// 1. 获取最后一次定位的位置信息
CLLocation *location = [locations lastObject];
LogYellow(@"%f --- %f ---%f",location.coordinate.latitude,location.coordinate.longitude,location.speed);
// [self.mgr stopUpdatingLocation];
}
定位 - CoreLocation - 打印位置信息的更多相关文章
- android GPS 定位,取位置信息
现在很多app ,需要取位置信息,所以我也做了一个模块用来取位置信息: 加入位置服务所需的权限: <uses-permission android:name="android.pe ...
- Android 集成GoogleMap,实现定位和获取位置信息
1.准备 我使用的是AS2.2.2,首先FQ注册google开发者帐号,准备获取API Key,网上有许多相关资料我就不再赘述,这里讲一个比较小白级的获取方法,可以减少许多输入 1.1. AS创建项目 ...
- ios 定位获取当前位置信息
啊,倦怠的人生啊~~ 什么事情都没做一眨眼就2点半了啊!!赶紧爬起来写博客啊. 诸位看官会鄙视我么,表示我真心不是把这当技术文章写的啊. 啊,下午我们来第二篇.获取地理位置信息.嗯嗯,秘籍上说叫逆向地 ...
- IOS CLLocationManager定位反编码位置信息
//获取位置和坐标#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_7_1 if (IOS_VERSION >= 8.0) { ...
- iOS开发----地图与导航--定位和位置信息获取
要实现地图.导航功能,往往需要先熟悉定位功能,在iOS中通过Core Location框架进行定位操作.Core Location自身可以单独使用,和地图开发框架MapKit完全是独立的,但是往往地图 ...
- iOS项目开发实战——使用CoreLocation获取当前位置信息
随着基于位置服务LBS和移动互联网的兴起,你的位置是越来越重要的一个信息.位置服务已经是当前的热门应用如微信.陌陌等社交应用的杀手锏.而在iOS开发中,苹果已经给我们提供了一个位置接口.CoreLoc ...
- iOS定位和位置信息获取
要实现地图.导航功能,往往需要先熟悉定位功能,在iOS中通过Core Location框架进行定位操作.Core Location自身可以单独使用,和地图开发框架MapKit完全是独立的,但是往往地图 ...
- android黑科技系列——微信定位聊天记录中照片的位置信息插件开发详解
一.前言 最近关于微信中,朋友之间发送原图就可能暴露你的位置信息,其实这个问题不在于微信,微信是为了更好的体验效果,才有发送原图功能,而对于拍照,发送普通图片微信后台都会过滤图片的exif信息,这样就 ...
- HTML5 Geolocation位置信息定位总结
现在定位功能很常用,所以抽出一些时间将这个功能的知识总结一下作为知识梳理的依据.HTML5 Geolocation的定位用法很简单,首先请求位置信息,用户同意,则返回位置信息.HTML5 Geoloc ...
随机推荐
- Linux ps aux指令詳解--转
linux上进程有5种状态: 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有 ...
- .Net设计模式_工厂模式(3)
3.抽象工厂模式 引言: 我们知道汽车需要很多部件才能组装成一辆成品的车,那么我们需要汽车厂生产很多东西,如:马达.车轴.轮胎等,这些东西组装起来后成为了一辆车. 这些东西就是产品族,图解:(出之ht ...
- Java client 访问 memcached
在测试项目中引入了memcached作为缓存层,以下是memcached的缓存配置和调用过程. linux下memcached安装过程 直接参考以前的博文linux下安装memcached过程 不再 ...
- shell记录
查看linux服务器有哪些人曾经ssh登陆过,以及他们的登录信息 who查看当前正在ssh链接中的 last查看最近被链接过的 who last netstat -nltp -an ...
- sublime中使用markdown
#为知笔记##为知笔记###为知笔记 1. 列表12. 列表23. 列表35. 顺序错了不用担心3. 写错的列表,会自动纠正 为知笔记---------------------- ```cpp int ...
- asterisk webrtc使用SIPML5初体验
一直尝试,web呼叫xlite终端没有,主要是配置问题: 其中sip.conf配置如下: [general] context=public ; Default context for incoming ...
- 图灵API
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine( ...
- 理解C#中的继承
继承 1.创建子类对象的时候,在子类对象中会为子类对象的字段开辟空间,也会为父类对象的所有字段开辟空间.只不过父类私有的成员访问不到而已. 2.base关键字可以调用父类的非私有成员. 3.子类的访问 ...
- MVC3中使用AuthorizeAttribute特性来完成登陆权限的验证
以前判断用户是否登录,判断用户Session是否为空,一般会在这个页面写使用: if (HttpContext.Session.IsNewSession) { //todo Login } 每个需要验 ...
- 通过javascript库JQuery实现页面跳转功能代码
通过javascript库JQuery实现页面跳转功能代码的四段代码实例如下. 实例1: 1 2 3 4 $(function(){ var pn = $("#gotopagenum&quo ...