2012-04-15 2 views
2

La classe GeoCoordinateWatcher me permet d'être continuellement mis à jour avec l'emplacement actuel des utilisateurs. L'événement WatcherOnPositionChanged sera élevé à la fois lorsqueArrêt de GeoCoordinateWatcher après la localisation exacte

  1. Un emplacement initial se trouve
  2. La précision est améliorée
  3. L'utilisateur déplacé physiquement au-delà du seuil défini

Je dois trouver la position des utilisateurs aussi précis que possible, puis arrêtez l'observateur en ignorant si l'utilisateur bouge. Cependant, il semble qu'il n'y ait aucun moyen d'éteindre les deux derniers types de mises à jour.

Plusieurs approches me viennent à l'esprit. La première mise à jour est toujours le cache de la dernière fois que le GPS a été utilisé, le second semble être une supposition inexacte et le troisième semble être l'emplacement précis final (au moins sur mon appareil). Selon ce qui est vrai pour tous les appareils semble peu fiable au mieux. Une autre approche pourrait être d'attendre un certain temps avant de s'installer pour l'emplacement. Par exemple, attendez 10 secondes, puis prenez la dernière position.

Ma première approche consistait à mettre à jour et afficher les données chaque fois que l'emplacement changeait. Cependant, c'était très gênant pour deux raisons. L'emplacement change plusieurs fois les premières secondes et, deuxièmement, lorsque la position des utilisateurs change rapidement, c'est-à-dire lorsque vous êtes assis dans une voiture en mouvement, le chargement devient très gênant.

Quelle est la meilleure approche pour trouver l'emplacement de l'utilisateur aussi précisément que possible, puis éteignez l'observateur?

Répondre

1

Sur l'objet GeoCoordinate provenant de GeoCoordinateWatcher, il existe deux propriétés: VerticalAccuracy et HorizontalAccuracy, qui donnent l'erreur magin en mètres. Ignorez simplement les coordonnées jusqu'à ce que les propriétés de précision soient suffisamment faibles pour vos besoins.

+0

Ce n'est pas tout à fait suffisant. Le GPS ne continue pas à s'améliorer. Il s'améliore à un certain point et ensuite il s'arrête. Parfois, ceci est à une précision de ~ 6/6 mètres, parfois c'est une précision beaucoup plus faible. Donc, si j'attends une grande précision, je pourrais attendre pour toujours. –

+0

Puis démarrez un thread d'arrière-plan et faites-le dormir autant de fois que vous êtes prêt à attendre. Après ce temps, si vous n'avez toujours pas une position assez précise, prenez la dernière. Je ne crois pas qu'il existe un moyen de prédire si le GPS sera en mesure d'avoir une correction précise ou non, je ne vois pas comment cela serait possible. –

Questions connexes