2010-02-01 5 views
3

Je développe une application iPhone qui est une application de localisation. Currentlly l'application fonctionne bien, sauf la mise en cache de l'emplacement précédent. La première fois que je lance le gestionnaire d'emplacement d'application, il récupère l'emplacement actuel, puis j'affiche les objets à proximité en fonction de l'emplacement actuel. Mais à partir de la prochaine, il utilise l'emplacement récupéré précédemment et jusqu'à ce que je redémarre le téléphone, il ira chercher le même emplacement. Donc, jusqu'à ce point, je suis clair que le gestionnaire de l'emplacement met en cache l'emplacement.Comment supprimer le cache de cllocation?

Donc, ma question est de savoir comment supprimer ce cache et forcer le gestionnaire d'emplacement pour chercher un nouvel emplacement grâce

Répondre

7

En fait, je ne pense pas que vous pouvez: il est à vous (dans votre CLLocationManagerDelegate exemple) pour filtrer la position que vous recevez en fonction de son horodatage (pour vous assurer que la position sur laquelle vous travaillez est récente et non en cache).

 

-(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

Je vous demande simplement de suggetion que ce qui devrait être mis en SEC_OLD_MAX? – harshalb

+0

Aussi, que faire si l'intervalle est plus grand que les secondes? – harshalb

+1

Habituellement, la différence de temps à un emplacement actuel est bien inférieure à une seconde. Si la différence de temps est maintenant supérieure à une seconde, il s'agit probablement d'un emplacement en cache. – FelixLam

Questions connexes