2010-08-12 11 views
0

Dans la documentation, il est indiqué qu'il obtient un emplacement approximatif et qu'il continue de mettre à jour avec une précision de plus en plus fine. J'ai un bouton qui neComment obtenez-vous un emplacement ponctuel à une précision spécifiée?

[locManager startUpdatingLocation]; 

puis je mettre en œuvre

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{ 
    [locManager stopUpdatingLocation]; 
} 

et l'ont somwhere obtenir les directions. Pour une raison quelconque, ce n'est pas la mise à jour des emplacements lorsque je conduis quelque part. Je suppose que c'est parce qu'il obtient «l'emplacement général», et ensuite n'a pas assez de temps pour obtenir une lecture précise. J'ai aussi

locManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation; 

Des pensées? juste besoin d'une fois des lectures précises. perplexe. Merci.

Répondre

2

solution hack rapide:

if (newLocation.horizontalAccuracy > 2*locManager.desiredAccuracy) { 
    return; 
} 

Une meilleure solution est peut-être attendre jusqu'à ce que la précision cesse d'améliorer, en moyenne au cours des 5 dernières mises à jour environ.

+0

donc vous dites mettre un compteur dans la méthode didUpdateLocation et laissez-le aller 5 fois avant de s'arrêter? Pourrait fonctionner. Je vais l'essayer. – marty

+0

Non, vous comparez les cinq valeurs horizontalAccuracy et attendez qu'il cesse de s'améliorer. Coller un compteur devrait fonctionner aussi, à condition que vous ayez une bonne réception GPS (vous ne pourriez pas, et alors que devrait-il faire?), Mais 5 pourrait être trop peu. –