一、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. 如何在Asp.Net WebApi接口中,验证请求参数中是否携带token标识!

    [BasicAuthentication] public abstract class ApiControllerBase : ApiController { #region Gloal Proper ...

  2. Java [Leetcode 238]Product of Array Except Self

    题目描述: Given an array of n integers where n > 1, nums, return an array output such that output[i]  ...

  3. 2013.11.15 初学ant构建

    该做的事情都差不多做完了,今天开始用ant构建,所以学了下ant,其实要不是因为ubuntu时不时的抽风我应该早就可以开始构建了,但重写的时候也想清楚了一些逻辑,优化了一些地方.下面是我这辈子写的第一 ...

  4. 门户网站架构Nginx+Apache+MySQL+PHP+Memcached+Squid

    服务器的大用户量的承载方案 一.前言二.编译安装三. 安装MySQL.memcache四. 安装Apache.PHP.eAccelerator.php-memcache五. 安装Squid六.后记 一 ...

  5. TCP/IP详解学习笔记(7)-广播和多播,IGMP协议

    1.单播,多播,广播的介绍 1.1.单播(unicast) 单播是说,对特定的主机进行数据传送.例如给某一个主机发送IP数据包.这时候,数据链路层给出的数据头里面是非常具体的目的地址,对于以太网来 说 ...

  6. JAVA数据库处理(连接,数据查询,结果集返回)

    package john import java.io.IOException; import java.util.*; public class QueryDataRow { public Hash ...

  7. wifi详解(一)

    1        WLAN技术 WLAN是英文WirelessLAN的缩写,就是无线局域网的意思.无线以太网技术是一种基于无线传输的局域网技术,与有线网络技术相比,具有灵活.建网迅速.个人化等特点.将 ...

  8. hdu 5335 Walk Out(bfs+斜行递推) 2015 Multi-University Training Contest 4

    题意—— 一个n*m的地图,从左上角走到右下角. 这个地图是一个01串,要求我们行走的路径形成的01串最小. 注意,串中最左端的0全部可以忽略,除非是一个0串,此时输出0. 例: 3 3 001 11 ...

  9. 有关T-SQL的10个好习惯(转)

    1. 在生产环境中不要出现Select * 这一点我想大家已经是比较熟知了,这样的错误相信会犯的人不会太多.但我这里还是要说一下. 不使用Select *的原因主要不是坊间所流传的将*解析成具体的列需 ...

  10. http://jingyan.baidu.com/article/4dc40848e7b69bc8d946f127.html

    http://jingyan.baidu.com/article/4dc40848e7b69bc8d946f127.html