2011-07-23 5 views
1

Existe-t-il un moyen de contrôler l'intervalle de mise à jour du gestionnaire d'emplacement? J'ai utilisé le réglage le plus proche de 10 mètres pour la précision mais il semble que mon application reçoive une mise à jour toutes les secondes, ce que je pense est trop souvent. Je veux la bonne précision mais pas la fréquence.Intervalle de mise à jour du gestionnaire d'emplacement de contrôle

Merci.

+0

Possible duplication de [fréquence de mise à jour de Location Manager, iphone] (http://stackoverflow.com/questions/7385102/location-manager-update-frequency-iphone) –

Répondre

0

Je l'ai fait avec une minuterie:

dans l'en-tête ajouter:

ServerInterface *serverInterface; 

dans le fichier .m:

- (void)viewDidLoad 
{ 
... 
[frequentLocationUpdateTimer invalidate]; 
frequentLocationUpdateTimer = [NSTimer scheduledTimerWithTimeInterval:30 target:self selector: 
       @selector(reEnableLocationTick:) userInfo:nil repeats:YES]; 
... 
} 
- (void)reEnableLocationTick:(NSTimer *)theTimer 
{ 
    [locationGetter startUpdates]; //Maybe you have to change this line according to your code 
} 

et dans votre LocationManager ...:

- (void)locationManager:(CLLocationManager *)manage didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    ... 

     if (newLocation.horizontalAccuracy < 100) 
    { 
     [locationManager stopUpdatingLocation]; 
    } 
    ... 

    // let our delegate know we're done 
    [delegate newPhysicalLocation:newLocation]; 
} 

Le code arrête simplement la mise à jour l'emplacement après avoir atteint une précision minimale de 100m. Ensuite, toutes les 30 secondes, une minuterie réactive le gestionnaire de position à nouveau.

+0

Salut, Merci d'avoir répondu à ma question. Êtes-vous sûr d'arrêter la mise à jour est la bonne solution? J'ai découvert que lors du démarrage initial de la mise à jour, il a fallu 5-10 mises à jour pour obtenir l'emplacement précis. Si la mise à jour est arrêtée et redémarrée, elle peut également nécessiter une durée d'étalonnage. Cela peut ne pas être acceptable pour l'application. Quelqu'un a des commentaires? Merci ... – user675823

+0

Salut, sry j'ai oublié de vous dire quelque chose. Dans mon cas, -stopUpdatingLocation ne supprime que l'appel du délégué;). – Thomas

+1

Merci encore. Pourquoi dites-vous que "dans votre cas" il supprime l'appel du délégué? Est-il vrai que l'appel [locationManager stopUpdatingLocation] supprime la mise à jour de l'emplacement? Maintenant, le plus important, savez-vous que quand [locationManager startUpdatingLocation] est appelé à nouveau, l'emplacement mis à jour est appelé immédiatement et aucun temps d'étalonnage n'est nécessaire? – user675823

Questions connexes