2012-04-15 4 views
2

Die Klasse GeoCoordinateWatcher ermöglicht es mir, ständig mit dem aktuellen Standort des Benutzers aktualisiert zu werden. Die WatcherOnPositionChanged Ereignis wird angehoben, sowohl wennAnhalten von GeoCoordinateWatcher, nachdem die genaue Position gefunden wurde

  1. Eine erste Lage
  2. gefunden wird
  3. Die Genauigkeit wird verbessert
  4. Der Benutzer physikalisch über die festgelegte Schwelle bewegt

Ich brauche die Benutzer Position zu finden so genau wie möglich, und dann stoppen Sie den Beobachter effektiv zu ignorieren, ob der Benutzer bewegt wird. Es scheint jedoch keine Möglichkeit zu geben, die letzten beiden Arten von Aktualisierungen zu löschen.

Mehrere Ansätze kommen in den Sinn. Das erste Update ist immer der Cache vom letzten GPS-Einsatz, das zweite scheint ein ungenauer Schätzwert zu sein und der dritte scheint der letzte genaue Ort zu sein (zumindest auf meinem Gerät). Abhängig davon gilt das für alle Geräte bestenfalls als unzuverlässig. Ein anderer Ansatz könnte darin bestehen, eine bestimmte Zeit zu warten, bevor der Standort festgelegt wird. Warten Sie zum Beispiel 10 Sekunden und nehmen Sie dann den neuesten Standort.

Meine erste Vorgehensweise bestand darin, die Daten jedes Mal zu aktualisieren und anzuzeigen, wenn sich der Standort änderte. Dies war jedoch aus zwei Gründen sehr mühsam. Die Position ändert sich einige Male in den ersten paar Sekunden und zweitens, wenn sich die Position des Benutzers schnell ändert, d.h. wenn das Sitzen in einem sich bewegenden Fahrzeug stattfindet, würde das Laden sehr störend werden.

Was ist der beste Ansatz, um den Standort des Benutzers so genau wie möglich zu finden, und dann den Watcher herunterzufahren?

Antwort

1

Auf dem GeoCoordinate-Objekt, das Sie vom GeoCoordinateWatcher erhalten, gibt es zwei Eigenschaften: VerticalAccuracy und HorizontalAccuracy, die das Fehler-Magin in Metern ergeben. Ignorieren Sie einfach die Koordinaten, bis die Genauigkeitseigenschaften für Ihre Anforderungen niedrig genug sind.

+0

Das ist nicht genug. Das GPS verbessert sich nicht weiter. Es verbessert sich irgendwann und dann hört es auf. Manchmal ist dies eine Genauigkeit von ~ 6/6 Metern, manchmal ist es eine viel geringere Genauigkeit. Wenn ich also auf eine hohe Genauigkeit warte, könnte ich ewig warten. –

+0

Starten Sie dann einen Hintergrund-Thread und lassen Sie ihn so lange schlafen, wie Sie warten möchten. Wenn Sie nach dieser Zeit immer noch keine genaue Position haben, nehmen Sie die letzte. Ich glaube nicht, dass es eine Möglichkeit gibt, vorherzusagen, ob das GPS eine genaue Lösung haben kann oder nicht, ich sehe nicht, wie es möglich wäre. –

Verwandte Themen