2010-02-01 35 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