2010-02-01 66 views
3

我正在开发一个iPhone应用程序,它是一个位置感知应用程序。 目前该应用程序工作正常,除了先前位置的缓存。 我第一次启动应用程序位置管理器获取当前位置,然后根据当前位置显示附近的东西。如何删除cllocation的缓存?

但是从下一个它使用以前提取的位置,直到我重新启动手机它将获取相同的位置。所以到目前为止,我很清楚位置管理者缓存了位置。

所以我的问题是如何删除这个缓存,并迫使位置管理器来获取新的位置 感谢

回答

7

其实我不认为你可以:这是由你(在你的CLLocationManagerDelegate实例)过滤您根据时间戳得到的位置(以确保您所处的位置是最近的位置,而不是缓存的位置)。

 

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{ NSDate *eventDate = newLocation.timestamp; NSTimeInterval howRecent = [eventDate timeIntervalSinceNow]; //Is the event recent and accurate enough ? if (abs(howRecent) < SECS_OLD_MAX) { //WORK WITH IT ! } .... ....

+0

我只是问你suggetion那又该SEC_OLD_MAX设置? – harshalb 2010-02-01 11:38:56

+0

如果时间间隔大于秒,那么该怎么办? – harshalb 2010-02-01 11:52:38

+1

通常与当前位置的时差远低于一秒。如果时间差现在大于一秒,那么它可能是一个缓存位置。 – FelixLam 2010-02-01 12:28:18