《从零开始学iOS7开发系列3-我的地盘我做主-Cha9》.pdf

《从零开始学iOS7开发系列3-我的地盘我做主-Cha9》.pdf

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《从零开始学iOS7开发系列3-我的地盘我做主-Cha9》.pdf

从零开始学iOS7开发系列3-我的地盘我做主-Cha9 原⽂及⽰例代码来⾃raywenderlich store中的iOS Apprentice 系列3教程,经过翻译和改编。 版权归原作者所有,本系列教程仅供学习参考使⽤,感兴趣的朋友建议购买原英⽂教程教程(The iOS Apprentice Second Edition: Learn iPhone and iPad Programming via Tutorials!)。 购买链接: /store 最近玩炉⽯有点迷,顺便看了下⽐较⽕的⼏个⽆节操(⾮贬义)游戏解说视频,⽐如夏⼀可,星际 少帮主,毕游侠神⻢的,推荐⼤家假期可以好好看看,玩玩。 神⻢?你竟然问我天梯排名多少?这不是拍脸⾄死的节奏吗?! 那啥,我们还是开始学习本课的内容吧,看我怎么⽤各种SY (术 语)虐死你。 ⾸先还是回顾下上期节⺫内容。恩,怎么觉得哪⾥有点不对。 在上⼀期节⺫中,我们学习了如何利⽤Core Location框架来获取⼀个CLLocation对象,⽽且了解了 如何处理不同的错误信息。接下来该肿么办? 好吧,如果你够细⼼,会看到Core Location⼀直在努⼒寻找新的位置信息对象,⼀直在努⼒,⼀直 在努⼒即便最终的坐标已经不再发⽣任何变化了,还是⼀直在努⼒,⼀直在努⼒…这是因为⽤户 可能会时不时⾛两步,然后他们的位置信息也的确发⽣变化了。不过这⾥我们不打算搞⼀个导航应 ⽤,因此当我们觉得位置信息已经⾜够准确了以后,就需要通知location manager停⽌发送位置信息 更新。 这⼀点很重要,因为获取位置信息更新很耗电,因为在这个过程中需要保持GPS/Wi-Fi/蜂窝⺴络信 号的开启。⽽我们这款应⽤并不需要随时请求GPS信息,因此当位置信息差不多了的时候就该消停 ⼀会⼉了。 问题在于,怎么来判断这个位置信息已经⾜够精确了呢? 这个的确要动⼀下脑⼦。这⾥给出的解决办法是:如果最后获得的⼏个坐标信息没有明显的变化, 那么就说明位置信息基本上就差不多准确了,此时就可以让定位的硬件元件休息下省省电了。 在CurrentLocationViewController.m中更改didUpdateLocations⽅法如下: -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{ CLLocation *newLocation = [locations lastObject]; NSLog(@ 已更新坐标,当前位置:%@,newLocation); if([newLocation.timestamp timeIntervalSinceNow] -5.0){ return; } if(newLocation.horizontalAccuracy 0){ return; } if(_location == nil || _location.horizontalAccuracy newLocation.horizontalAccuracy){ _lastLocationError = nil; _location = newLocation; [self updateLabels]; if(newLocation.horizontalAccuracy = _locationManager.desiredAccuracy){ NSLog(@*** ⺫标诺森德!成功完成定位); [self stopLocationManager]; } } } 上⾯这段代码有点⻓,我们还是⼀步步来看吧: if([newLocation.timestamp timeIntervalSinceNow] -5.0){ return; } 如果获取最近⼀个位置信息对象的时间太⻓(这⾥设置的阀值是5秒),那么它就是⼀个所谓的 cached (缓存)结果。location manager并⾮⼀直向

文档评论(0)

wgvi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档