一、Core Location确定物理位置

利用以下3种技术:

1、GPS(最精确的)

2、蜂窝基站ID定位(cell ID Location)

3、WPS(Wi-Fi Positioning Service,Wi-Fi定位服务)

这3种方法都很耗电,使用Core Location时要注意这一点,尽量只在必要时进行定位。使用时,我们可以根据需要指定精度。注意,在指定绝对最低精度级别时要谨慎,避免不必要的电力消耗。

Core Location所依赖的技术对于应用来说是隐藏的。我们不需要指定哪种技术,只需要指定精度级别,它就会自动从可用的技术中选择可以更好满足请求的那种。

二、如何使用Core Location API?

(一)创建位置管理器

使用到的主类是CLLocationManager

CLLocationManager *locationManager = [[CLLocationManager alloc] init];

(二)设置精度

避免指定任何大于绝对需要的精度

精度通过设定CLLocationAccuracy的值进行指定,类型为双浮点型,单位为米(m)

示例:

// 设置委托

locationManager.delegate = self;

// 请求特定精度级别

locationManager.desireAccuracy = KLLocationAccuracyBest;

如果指定的desireAccuracy的值为10,就表示要求Core Location在尝试确定当前位置时尽量达到10米的精度。

其他指定精度的方法

KLLocationAccuracyBestForNavigation

KLLocationAccuracyNearestTenMeters

KLLocationAccuracyKilometer

KLLocationAccuracyThreeKilometer

(三)设置距离筛选器

默认情况下,位置管理器会把检测到的位置更改通知给委托。指定距离筛选器意味着告知位置管理器不要将每个更改都通知你,仅当位置更改超过特定大小时通知。

如设置1000米

locationManager.distanceFilter = 1000.;

如果希望位置管理器恢复为没有赛选器的默认设置

locationManager.distanceFilter = KCLDistanceFilterNone;

(四)获取使用定位服务的权限

(五)启动位置管理器

[locationManager startUpdatingLocation];

(六)合理使用位置管理器

如果只需要确定当前位置而不需要持续更新,那么获取完当前位置信息后应该让委托停止位置管理器。如果需要轮询,则需要确保在肯能的情况下停止轮询。

[locationManager stopUpdatingLocation];

(七)获取位置更新

使用locationManager:didUpdateLocations方法。该方法接受两个参数

1、调用改方法的位置管理器

2、一个CLLocation对象数组,用于描述设备的当前位置,可能还有之前的几个位置。无论何时,数据的最后一项都表示当前位置。

(八)使用CLLocation获取位置信息

该类有应用可能感兴趣的6个属性:

1、coordinate(地理坐标)—>(latitude)纬度和(longitude)纬度

2、horizontalAccuracy(水平精度)

3、altitude(海拔高度)

4、verticalAccuracy(垂直精度)

5、floor(地面)

6、timestamp(时间戳)

示例:

CLLocation latitude = theLocation.coordinate.latitude;

(九)错误通知

如果Core Location需要向应用程序报告错误,则调用locationManager:didFailWithError:的委托方法。

1、用户拒绝访问:调用并传递kCLErrorDenied错误代码。

2、无法确定位置:kCLErrorLocationUnknown

kCLErrorLocationUnknown错误表示是问题可能是临时的,而kCLErrorDenied或其他错误可能表示在当前会话的其余时间内,应用都将无法访问Core Location

3、网络相关错误:kCLErrorNetwork

iOS开发-Core Location和Map Kit的更多相关文章

  1. ios中Core Location跟Map Kit的基本使用

    地图类开发应用中,离不开地理位置跟MKMapView的使用,下面就记录下自己在使用这两个东西中学到的. 不过并不是所有苹果的设备都支持地理位置,我们在使用前应该做个判断,代码如下: BOOL loca ...

  2. IOS开发——Core Graphics & Core Animation

    好久没写过blog了.首先了解下近期苹果和IOS方面的最新消息. 1.WWDC2014在上个月举行了,与2013年一样.今年WWDC没公布硬件产品和新品(假设你懂cook你就会期待今年秋季公布会.估计 ...

  3. iOS开发 - Core Animation 核心动画

    Core Animation Core Animation.中文翻译为核心动画,它是一组很强大的动画处理API,使用它能做出很炫丽的动画效果.并且往往是事半功倍. 也就是说,使用少量的代码就能够实现很 ...

  4. 精通iOS开发(第5版)

    <精通iOS开发(第5版)> 基本信息 原书名:Beginning ios 6 development:exploring the ios sdk 作者: (美)David Mark   ...

  5. Core Location Framework学习

    在Apple开发中,尤其是移动设备开发,经常会使用Core Location Framework,这个框架可以使得iOS设备获取当前的地理位置.本文就具体到Core Location 框架中,查看其声 ...

  6. 《精通iOS开发》书籍目录

    1.欢迎来到iOS和Swift世界 2.创建一个新项目 3.实现基本交互 4.更丰富的用户界面 5.自动旋转和自动调整大小 6.多视图应用 7.分页栏与选取器 8.表视图简介 9.导航控制器和表视图 ...

  7. iOS开发拓展篇—CoreLocation简单介绍

    iOS开发拓展篇—CoreLocation简单介绍 一.简介 1.在移动互联网时代,移动app能解决用户的很多生活琐事,比如 (1)导航:去任意陌生的地方 (2)周边:找餐馆.找酒店.找银行.找电影院 ...

  8. ios开发——实用技术OC篇&地图与定位

    地图与定位 11.1 iOS定位服务 11.2 iOS地图 11.3 Web地图 1 iOS定位服务 iOS中有三个定位服务组件: Wifi定位,通过查询一个Wifi路由器的地理位置的信息.比较省电, ...

  9. iOS开发---iPhone SDK 包含哪些东西?

    第一部分: 在使用Intel芯片的Macintosh计算机开发iOS应用程序所需的全部接口.工具以及资源全都包含于iPhone SDK. 苹果公司将大部分系统接口发布在框架这种特殊的数据包.一个框架就 ...

随机推荐

  1. Java Web编程的主要组件技术——MVC设计模式

    参考书籍:<J2EE开源编程精要15讲> MVC(Model View Controller),Model(模型)表示业务逻辑层,View(视图)代表表述层,Controller(控制)表 ...

  2. UVA 11090 Going in Cycle!!(二分答案+判负环)

    在加权有向图中求平均权值最小的回路. 一上手没有思路,看到“回路”,第一想法就是找连通分量,可又是加权图,没什么好思路,那就转换题意:由求回路权值->判负环,求最小值->常用二分答案. 二 ...

  3. cocos2d-x中的Jni使用(C++与Andriod方法互调)

    作者:何卫 转载请注明,原文链接:http://www.cnblogs.com/hewei2012/p/3376616.html 前提条件: 1.操作的游戏工程和cocos2d_x游戏引擎是一个目录的 ...

  4. UVA 10801 Lift Hopping 电梯换乘(最短路,变形)

    题意: 有n<6部电梯,给出每部电梯可以停的一些特定的楼层,要求从0层到达第k层出来,每次换乘需要60秒,每部电梯经过每层所耗时不同,具体按 层数*电梯速度 来算.问经过多少秒到达k层(k可以为 ...

  5. javascript一些有用但又不常用的特性

    1.onclick="save();return false;" 取消“浏览器默认行为”.     比如一个链接     <a href="http://zhida ...

  6. 连接Excel文件时,未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

    问题与解决 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序 错误. string strCon = " Provider = Microsoft.Jet.OL ...

  7. strcpy函数和strncpy函数的区别

    strcpy函数和strncpy函数的原型介绍在我的另一篇文章中介绍了,见strcpy,strncpy,strlen等函数原型 strcpy:字串复制 原型:char *strcpy(char *de ...

  8. ie对行高line-height的诡异解释

    切 游戏页面真地是要求太精细了,做按钮的时候我犯了一个错误,居然用span的内联元素的行高和padding来控制,虽然有很多好处,但是IE对 line-height的解释导致按钮经常下边会缺一小部分, ...

  9. 翻译【ElasticSearch Server】第一章:开始使用ElasticSearch集群(3)

    运行ElasticSearch(Running ElasticSearch) 让我们运行我们的第一个实例.转到bin目录并从命令行运行以下命令: ./elasticsearch –f (Linux o ...

  10. iOS数据存储之属性列表理解

    iOS数据存储之属性列表理解 数据存储简介 数据存储,即数据持久化,是指以何种方式保存应用程序的数据. 我的理解是,开发了一款应用之后,应用在内存中运行时会产生很多数据,这些数据在程序运行时和程序一起 ...