2009-11-27 18 views
1

Je me souviens d'avoir lu quelque part (j'oublie où) que si une application iPhone fonctionnait simplement une fois, le CLLocationManager ne donnait pas les résultats les plus précis.Comment trouver les résultats GPS les plus précis de l'iPhone

Est-ce exact, et si oui, comment puis-je lutter contre ce problème? Je veux arriver avec les résultats GPS les plus précis, et je me demande si une seule fois va créer les meilleurs résultats.

Merci pour toute aide!

Répondre

2
CLLocationManager *locationManager.desiredAccuracy = kCLLocationAccuracyBest; 

renverra le meilleur résultat possible pour vous. La méthode du délégué

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 

continuera à renvoyer l'emplacement de l'utilisateur en fonction des préférences de précision que vous avez définies.

Si vous avez seulement besoin de l'emplacement une fois, vous devez vous rappeler d'appeler stopUpdatingLocation sur self. Si vous devez mettre à jour l'emplacement de l'utilisateur en continu, n'appelez pas stopUpdatingLocation

J'utilise CoreLocation pour obtenir l'emplacement d'un utilisateur, et c'est assez précis pour mon utilisation.

0

Ce que vous lisez est probablement de la iPhone Application Programming Guide:

Pour récupérer emplacement actuel de l'utilisateur, créez une instance de la classe de CLLocationManager et configurer avec la précision souhaitée et paramètres de seuil. Pour commencer recevoir des notifications d'emplacement, affecter un délégué à l'objet et appeler la méthode startUpdatingLocation pour commencer la détermination de l'emplacement actuel de l'utilisateur . Lorsque de nouvelles données d'emplacement sont disponibles, le gestionnaire d'emplacement notifie son objet délégué . Si une mise à jour de position a déjà été remise, vous pouvez également obtenir les données de localisation les plus récentes directement à partir de l'objet CLLocationManager sans attendre qu'un nouvel événement soit livré.

[...]

Vérification de l'horodatage d'un événement est recommandé parce que l'emplacement service renvoie souvent le dernier événement en cache lieu immédiatement. Il peut prendre prendre quelques secondes pour obtenir une correction d'emplacement approximative de sorte que les anciennes données simplement servent à refléter le dernier emplacement connu . Vous pouvez également utiliser la précision pour déterminer si vous souhaitez accepter un événement. Lorsqu'il reçoit des données plus précises, le service de localisation peut renvoyer des événements supplémentaires, avec les valeurs de précision reflétant les améliorations en conséquence.