精通IOS开发-Core Location和Map Kit

一、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

时间: 2025-01-04 16:14:50

精通IOS开发-Core Location和Map Kit的相关文章

精通iOS开发》书籍目录

1.欢迎来到iOS和Swift世界 2.创建一个新项目 3.实现基本交互 4.更丰富的用户界面 5.自动旋转和自动调整大小 6.多视图应用 7.分页栏与选取器 8.表视图简介 9.导航控制器和表视图 10.集合视图 11.分割视图和浮动窗口 12.应用设置和用户默认设置 13.数据持久化基础知识 14.文档和iCloud 15.Grand Central Dispatch和后台处理 16.使用Core Graphics绘图 17.Sprite Kit游戏框架 18.轻点.触摸和手势 19.Cor

IOS开发——Core Graphics & Core Animation

好久没写过blog了,首先了解下最近苹果和IOS方面的最新消息. 1.WWDC2014在上个月举行了,与2013年一样,今年WWDC没发布硬件产品和新品(如果你懂cook你就会期待今年秋季发布会,预计10中旬举行) 今年WWDC有一个最令人兴奋的新语言发布--Swift,小编也花了将近半个月来学习新语言,发现Swift与反人类语言objective-c不同的是完全抛弃了C,更像是js+lua+python+各种脚本语言的集合,这也是时间上最新最先进的开发语言,小道消息说swift今年4岁,也就是

盘点国内程序员不常用的热门iOS第三方库:看完,还敢自称”精通iOS开发”吗?【转载】

综合github上各个项目的关注度与具体使用情况,涵盖功能,UI,数据库,自动化测试,编程工具等类型,看完,还敢自称”精通iOS开发”吗? https://github.com/syedhali/EZAudio 基于核心音频,有助于进行实时,低延迟音频处理和可视化的iOS和OSX音频可视化框架. https://github.com/bang590/JSPatch JSPatch使用Objective-C运行时桥接Objective-C和Javascript.你可以只包括一个此库,就可以通过Ja

学习ios(必看经典)牛人40天精通iOS开发的学习方法

学习ios(必看经典)牛人40天精通iOS开发的学习方法 描述 这是一套从一个对iOS开发感兴趣的学员到iOS开发高手的系统.专业的课程体系.以培养企业开发真正需要的人才为目标,每个知识点都用案例来讲解.也适合想提升技能的已从事iOS开发的工作人员以最短时间内提升技能的从业者. 目标 通过本系列课程的学习,希望使一个对iOS开发感兴趣,想从事iOS开发的学员,成为一名真正iOS开发人员,iOS从业者,iOS技术大牛,最重要的是学会解决开发中遇到困难的方法. 建议 建议学员,尤其是初学者,一定要打

IOS开发——Core Graphics & Core Animation

好久没写过blog了.首先了解下近期苹果和IOS方面的最新消息. 1.WWDC2014在上个月举行了,与2013年一样.今年WWDC没公布硬件产品和新品(假设你懂cook你就会期待今年秋季公布会.估计10中旬举行) 今年WWDC有一个最令人兴奋的新语言公布--Swift,小编也花了将近半个月来学习新语言.发现Swift与反人类语言objective-c不同的是全然抛弃了C,更像是js+lua+python+各种脚本语言的集合,这也是时间上最新最先进的开发语言,小道消息说swift今年4岁.也就是

【精通iOS开发(第7版)】读书笔记01(P1~90)

初次拿到这本书,看到目录,内容确实挺多的,阅读过程发现代码讲解也特别详实.本笔记主要是记录阅读的心得以及对当天知识的回顾,帮助自己提高理解.扯淡的话不说了,进入正题. =====================================================================================================================前面主要是对iOS开发语言以及开发环境XCode做了介绍,草草翻了下略过. 首先提到的是APP图标

iOS开发 - Core Bluetooth蓝牙开发

Core Bluetooth Core Bluetooth测试比较麻烦,正常情况下,得至少有2台真实的蓝牙4.0设备 如何让iOS模拟器也能测试蓝牙4.0程序? 买一个CSR蓝牙4.0 USB适配器,插在Mac上 在终端输入sudo nvram bluetoothHostControllerSwitchBehavior="never" 重启Mac 用Xcode 4.6调试代码,将程序跑在iOS 6.1的模拟器上 (苹果把iOS 7.0模拟器对BLE的支持移除掉了) Core Bluet

iOS开发 - Core Animation 核心动画

Core Animation Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍.也就是说,使用少量的代码就可以实现非常强大的功能. Core Animation可以用在Mac OS X和iOS平台. Core Animation的动画执行过程都是在后台操作的,不会阻塞主线程. 要注意的是,Core Animation是直接作用在CALayer上的,并非UIView. 乔帮主在2007年的WWDC大会上亲自为你演

精通IOS开发-note1

关于调试,查看Xcode Overview文档相关部分:http://developer.apple.com/library/ios/documentation/ToolsLanguages/Conceptual/Xcode_Overview/DebugYourApp.html ??LLVM(Low Level Virtual Machine底层虚拟机)编译器 取代之前使用的GCC(GNU Compiler Collection)作为底层编译器.LLVM的代码生成速度远比GCC快,还知道更多与代