解决iOS地图持续定位耗电问题
地图位置刷新的代理didUpdateLocations会持续调用,手机非常耗电
但是在实际开发中,有一些APP确实需要用到持续定位的功能,比如:运动类, 导航类, 天气类等等
如何进行持续定位呢?保证持续定位的前提下降低APP的耗电量呢?
distanceFilter:距离过滤器
在生成更新事件之前, 设备的最小距离(以米为单位), 必须是水平移动.
这句就是设置这个值会在执行didUpdateLocations方法前判断水平移动距离是否达到这个值
当然仅仅这样还是不够的. 我们还可以设置GPS的精度
译文:
desired Accuracy
位置数据的准确性。
概述
接收机尽力达到要求的准确度; 然而,实际的准确性并不保证。
您应该为此属性指定适合您的使用情景的值。例如,如果您仅在一公里内需要当前位置,您应该指定kCLLocationAccuracyKilometer
而不是kCLLocationAccuracyBestForNavigation
。确定更精确的位置需要更多的时间和更多的功率。
当请求高精度位置数据时,由位置服务传递的初始事件可能不具有您请求的准确性。定位服务尽快提供初始事件。然后,随着数据可用,您可以根据需要继续确定所请求的准确性,并提供其他事件。
对于iOS和MacOS,此属性的默认值为kCLLocationAccuracyBest
。对于watchOS,默认值为kCLLocationAccuracyHundredMeters
。
此属性仅与标准位置服务结合使用,并且在监视重大位置更改时不使用。
/**
kCLLocationAccuracyBest; //最好的,米级
kCLLocationAccuracyNearestTenMeters; //十米
kCLLocationAccuracyHundredMeters; //百米
kCLLocationAccuracyKilometer; //一公里
kCLLocationAccuracyThreeKilometers; //三公里
*/
//持续定位
/**
1.开启开始定位之后,不关闭,让其持续定位
2.设置距离筛选器:坐标移动到指定距离才会调用代理方法
3.设置精准度:通过降低计算的过程(GPS),来达到省电的目的
**/
//iOS定位方法:1.GPS全球定位系统(24颗) 2.移动基站 3.Wifi
//传入的是double值,单位是米,这里传入10,表示距离移动超过十米,才会调用代理方法
self.locationManager.distanceFilter = 10;
//GPS精准度 默认值:kCLLocationAccuracyBest 最精准:kCLLocationAccuracyBestForNavigation
self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
解决iOS地图持续定位耗电问题的更多相关文章
- iOS 后台持续定位详解(支持ISO9.0以上)
iOS 后台持续定位详解(支持ISO9.0以上) #import <CoreLocation/CoreLocation.h>并实现CLLocationManagerDelegate 代理, ...
- iOS开发雕虫小技之傻瓜式定位神器-超简单方式解决iOS后台定时定位
1.概述 由于公司一款产品的需求,最近一直在研究iOS设备的后台定位.主要的难点就是,当系统进入后台之后,程序会被挂起,届时定时器.以及代码都不会Run~ 所以一旦用户将我的App先换到了后台,我的定 ...
- IOS地图及定位使用
1.定位 定位使用CoreLocation库,引入CoreLocation/CoreLocation.创建CLLocationManager对象,使用startUpdatingLocation方法开始 ...
- [OC][地图] 高德地图之定位初探(一)
使用前的说明 高德地图开放平台的iOS定位模块网址-->http://lbs.amap.com/api/ios-location-sdk/summary/ 高德地图有Web端.android平台 ...
- iOS UI进阶-4.0 地图与定位
在移动互联网时代,移动app能解决用户的很多生活琐事,比如 导航:去任意陌生的地方 周边:找餐馆.找酒店.找银行.找电影院 在上述应用中,都用到了地图和定位功能,在iOS开发中,要想加入这2大功能 ...
- iOS开发系列--地图与定位
概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个 ...
- iOS 地图定位及大头针的基本使用
地图 Part1 - 定位及大头针的基本使用 一.MapKit 作用 : 用于地图展示 如大头针,路线,覆盖层展示等(着重界面展示) 使用步骤 导入头文件 #import <MapKit/Map ...
- iOS开发之地图与定位
无论是QQ还是微信的移动客户端都少不了定位功能,之前在微信demo中没有添加定位功能,今天就写个定位的小demo来了解一下定位和地图的东西.地图和定位看上去是挺高大上一东西,其实用法比TableVie ...
- iOS进阶_地图上定位的标志——大头针
一.添加大头针 地图使用的框架是MapKit 大头针走的是MKAnnotation协议 /* 注意:因为是满足协议MKAnnotation,所以没有MKAnnotation的系统大头针类,必须自定义大 ...
随机推荐
- JVM GC监控
一.jps常看java进程 Java版的ps命令,查看java进程及其相关的信息,如果你想找到一个java进程的pid,那可以用jps命令替代linux中的ps命令了,简单而方便. [root@tsp ...
- PHP http_response_code 网络函数
定义和用法 http_response_code - 获取/设置响应的 HTTP 状态码 版本支持 PHP4 PHP5 PHP7 不支持 支持 支持 语法 http_response_code ([ ...
- PHP intdiv 数学函数
定义和用法 intdiv - 对除法结果取整 版本支持 PHP4 PHP5 PHP7 不支持 不支持 支持 语法 intdiv ( int $dividend , int $divisor ) int ...
- 使用NodeJS模块-第三方提供的模块(什么是npm)
第三方开发者提供的模块 第三方模块是由NodeJS社区或第三方个人开发的功能模块,这些功能模块以软件包的形式存在.被发布在npmjs注册表中.npmjs是一个注册中心,所有软件包的信息都会被记录到该注 ...
- QT无窗口状态下对键盘事件的监听
Question:最近在搞linux下的一个客户端项目,需要接收键盘事件,但是又不能有界面,这种情况怎么处理呢? int main(int argc, char *argv[]) { QApplica ...
- ansible 流程控制
ansible 流程控制 使用when判断主机名 - hosts: rsync_server tasks: - name: Install rsyncd Server yum: name: rsync ...
- python脚本实现音频m4a格式转成MP3格式
群里看到有人询问:谁会用python将微信音频文件后缀m4a格式转成mp3格式,毫不犹豫回了句:我会.然后就私下聊起来了 解决方法介绍如下: 工具:windows系统,python2.7,转换库ffm ...
- 网络管理和nmcli命令的使用——网络接口配置-bonding实验步骤
(实验)网络接口配置-bonding Bonding 将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡.直接给两块网卡设置同\一IP地址是不可以的.通过bonding,虚拟一块网 ...
- Linux 和 Windows 查看当前运行的 python 进程及 GPU、CPU、磁盘利用率
目录 查看当前 python 进程 Linux Windows 查看 GPU 利用率 Linux Windows Linux CPU 利用率 Linux 磁盘利用率 查看当前 python 进程 Li ...
- 子传父flase注意点
1==>在子传递数据给父亲的时候, closeBottom(){ this.$emit("closeBottom",false) } false不加引号. 2==>