我正在開發一個iPhone應用程序,它是一個位置感知應用程序。 目前該應用程序工作正常,除了先前位置的緩存。 我第一次啓動應用程序位置管理器獲取當前位置,然後根據當前位置顯示附近的東西。如何刪除cllocation的緩存?
但是從下一個它使用以前提取的位置,直到我重新啓動手機它將獲取相同的位置。所以到目前爲止,我很清楚位置管理者緩存了位置。
所以我的問題是如何刪除這個緩存,並迫使位置管理器來獲取新的位置 感謝
我正在開發一個iPhone應用程序,它是一個位置感知應用程序。 目前該應用程序工作正常,除了先前位置的緩存。 我第一次啓動應用程序位置管理器獲取當前位置,然後根據當前位置顯示附近的東西。如何刪除cllocation的緩存?
但是從下一個它使用以前提取的位置,直到我重新啓動手機它將獲取相同的位置。所以到目前爲止,我很清楚位置管理者緩存了位置。
所以我的問題是如何刪除這個緩存,並迫使位置管理器來獲取新的位置 感謝
其實我不認爲你可以:這是由你(在你的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 ! } .... ....
我只是問你suggetion那又該SEC_OLD_MAX設置? – harshalb 2010-02-01 11:38:56
如果時間間隔大於秒,那麼該怎麼辦? – harshalb 2010-02-01 11:52:38
通常與當前位置的時差遠低於一秒。如果時間差現在大於一秒,那麼它可能是一個緩存位置。 – FelixLam 2010-02-01 12:28:18