地图位置刷新的代理didUpdateLocations会持续调用,手机非常耗电

但是在实际开发中,有一些APP确实需要用到持续定位的功能,比如:运动类, 导航类, 天气类等等

如何进行持续定位呢?保证持续定位的前提下降低APP的耗电量呢?

distanceFilter:距离过滤器

在生成更新事件之前, 设备的最小距离(以米为单位), 必须是水平移动.

这句就是设置这个值会在执行didUpdateLocations方法前判断水平移动距离是否达到这个值

当然仅仅这样还是不够的. 我们还可以设置GPS的精度

译文:

实例属性

desired Accuracy

位置数据的准确性。

概述

接收机尽力达到要求的准确度; 然而,实际的准确性并不保证。

您应该为此属性指定适合您的使用情景的值。例如,如果您仅在一公里内需要当前位置,您应该指定k​CLLocation​Accuracy​Kilometer而不是k​CLLocation​Accuracy​Best​For​Navigation。确定更精确的位置需要更多的时间和更多的功率。

当请求高精度位置数据时,由位置服务传递的初始事件可能不具有您请求的准确性。定位服务尽快提供初始事件。然后,随着数据可用,您可以根据需要继续确定所请求的准确性,并提供其他事件。

对于iOS和MacOS,此属性的默认值为k​CLLocation​Accuracy​Best。对于watchOS,默认值为k​CLLocation​Accuracy​Hundred​Meters

此属性仅与标准位置服务结合使用,并且在监视重大位置更改时不使用。

  /**

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地图持续定位耗电问题的更多相关文章

  1. iOS 后台持续定位详解(支持ISO9.0以上)

    iOS 后台持续定位详解(支持ISO9.0以上) #import <CoreLocation/CoreLocation.h>并实现CLLocationManagerDelegate 代理, ...

  2. iOS开发雕虫小技之傻瓜式定位神器-超简单方式解决iOS后台定时定位

    1.概述 由于公司一款产品的需求,最近一直在研究iOS设备的后台定位.主要的难点就是,当系统进入后台之后,程序会被挂起,届时定时器.以及代码都不会Run~ 所以一旦用户将我的App先换到了后台,我的定 ...

  3. IOS地图及定位使用

    1.定位 定位使用CoreLocation库,引入CoreLocation/CoreLocation.创建CLLocationManager对象,使用startUpdatingLocation方法开始 ...

  4. [OC][地图] 高德地图之定位初探(一)

    使用前的说明 高德地图开放平台的iOS定位模块网址-->http://lbs.amap.com/api/ios-location-sdk/summary/ 高德地图有Web端.android平台 ...

  5. iOS UI进阶-4.0 地图与定位

    在移动互联网时代,移动app能解决用户的很多生活琐事,比如 导航:去任意陌生的地方 周边:找餐馆.找酒店.找银行.找电影院   在上述应用中,都用到了地图和定位功能,在iOS开发中,要想加入这2大功能 ...

  6. iOS开发系列--地图与定位

    概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个 ...

  7. iOS 地图定位及大头针的基本使用

    地图 Part1 - 定位及大头针的基本使用 一.MapKit 作用 : 用于地图展示 如大头针,路线,覆盖层展示等(着重界面展示) 使用步骤 导入头文件 #import <MapKit/Map ...

  8. iOS开发之地图与定位

    无论是QQ还是微信的移动客户端都少不了定位功能,之前在微信demo中没有添加定位功能,今天就写个定位的小demo来了解一下定位和地图的东西.地图和定位看上去是挺高大上一东西,其实用法比TableVie ...

  9. iOS进阶_地图上定位的标志——大头针

    一.添加大头针 地图使用的框架是MapKit 大头针走的是MKAnnotation协议 /* 注意:因为是满足协议MKAnnotation,所以没有MKAnnotation的系统大头针类,必须自定义大 ...

随机推荐

  1. The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone.

    介绍 再使用spring操作mysql数据库报错 @Test public void test() { try { //创建连接池,先使用spring框架内置的连接池 DriverManagerDat ...

  2. 关于mybtis 使用过程中发生There is no getter for property named 'id' in class 'java.lang.String' 错误

    今天在修改一个关于mybtis语句时,偶然发现的一个错误  There is no getter for property named 'id' in class 'java.lang.String' ...

  3. SQLi-LABS Page-1(Basic Challenges) Less11-Less22

    Less-11 GET - Blind - Time based - double quotes http://10.10.202.112/sqli/Less-11/ 尝试登录: username:a ...

  4. Oracle数据库创建只读用户

    创建一个只读用户user2,只能查询管理员用户user1下的表,不能增删改. 操作环境:PL/SQL Developer 1.用管理员用户user1登录,创建用户user2.并授权 --创建用户use ...

  5. 转战物联网·基础篇06-深入理解MQTT协议之基本术语

      通过上一节我们对MQTT协议已经有了初步的印象,这一节我们开始深入的理解一下MQTT协议,介绍常用的MQTT 3.1.1版本,5.0版本后面指介绍新增部分即可.这一节我们先介绍MQTT里常用的术语 ...

  6. Druid-代码段-4-2

    所属文章:池化技术(一)Druid是如何管理数据库连接的? 本代码段对应流程4.1,连接池瘦身: //连接池瘦身 public void shrink(boolean checkTime, boole ...

  7. python 1 默写用递归实现无限极分类 2 默写用树实现无限极分类

    data=[ {"cat_id":3,"name":"沙河","parent_id":1}, {"cat_id ...

  8. 面向对象程序设计(JAVA) 第13周学习指导及要求

    2019面向对象程序设计(Java)第13周学习指导及要求 (2019.11.19-2019.11.25)   学习目标 (1) 掌握事件处理的基本原理,理解其用途: (2) 掌握AWT事件模型的工作 ...

  9. c++ 命令行执行

    常用命令如下 g++ -g -std=c++ a.cpp -std 指定c++的版本 -g 在可执行程序中包含标准调试信息 -o FILE 指定输出文件名,在编译为目标代码时,这一选项不是必须的.如果 ...

  10. 详解 Redis 应用场景及原理

    本文转自https://blog.csdn.net/niucsd/article/details/50966733,描述了redis实现原理和应用场景,篇幅较长,有意学习redis的同学可耐心阅读. ...