| 
    
 
地图位置刷新的代理didUpdateLocations会持续调用,手机非常耗电  
 
但是在实际开发中,有一些APP确实需要用到持续定位的功能,比如:运动类, 导航类, 天气类等等  
   
如何进行持续定位呢?保证持续定位的前提下降低APP的耗电量呢?  
   
   
   
   
distanceFilter:距离过滤器  
在生成更新事件之前, 设备的最小距离(以米为单位), 必须是水平移动.  
这句就是设置这个值会在执行didUpdateLocations方法前判断水平移动距离是否达到这个值  
   
   
   
   
   
 当然仅仅这样还是不够的. 我们还可以设置GPS的精度  
    
   
译文:  
 
 
 
 
  
   
    
    位置数据的准确性。  
    概述 
     
     接收机尽力达到要求的准确度; 然而,实际的准确性并不保证。  
     您应该为此属性指定适合您的使用情景的值。例如,如果您仅在一公里内需要当前位置,您应该指定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;  
     
    
   
  
   |