停止返回缓存的CLLocationManager位置

PF1*_*PF1 5 iphone cocoa-touch location caching cllocationmanager

我想知道是否有某种方法来使它,所以CLLocationManager不会自动返回缓存的位置.据我所知,文档说"位置服务尽快返回初始位置,在可用时返回缓存信息"但这个缓存位置可能离用户当前位置非常远,如果可能的话我希望它更精确.

谢谢你的帮助!

Tom*_*ton 13

你不能阻止缓存,但过滤掉缓存的数据并不困难.核心位置包括其位置的时间戳.将位置的时间戳与应用程序启动时保存的时间戳进行比较,您将能够分辨哪些位置是旧的(缓存,在应用程序声明之前找到)以及哪些是新的.扔掉旧的.

位置时间戳是NSDate,因此只需获取[NSDate date]应用启动时的值,并在过滤位置时将其用作参考点.一旦开始获取新数据,您甚至可以丢弃参考值,并将零参考日期视为暗示应该信任新位置.


mrt*_*mrt 6

-(void)locationManager:(CLLocationManager*)manager didUpdateToLocation:(CLLocation*)newLocation fromLocation:(CLLocation *)oldLocation 
{
    if ([newLocation.timestamp timeIntervalSinceNow] > -10.0) // The value is not older than 10 sec. 
    { 
         // do something 
    } 
 }
Run Code Online (Sandbox Code Playgroud)