Moja aplikacja Wp7 (Mango) musi znać lokalizację użytkownika, aby wyszukać najbliższy obiekt w bazie danych. Ale chcę wyświetlić wynik na ekranie powitalnym, więc potrzebuję mojej lokalizacji JAK NAJSZYBCIEJ. Napisałem kod, który uruchamia GeoCoordinateWatcher (z wysoką precyzją i minimalnym progiem), a przy pierwszym uruchomieniu zatrzymuje go i wysyła lokalizację do usługi sieciowej, która zwraca dany obiekt.

Po przetestowaniu poszedłem go zaprezentować na drugą stronę miasta. Zacząłem i ku uciesze wszystkich pokazał zupełnie błędny wynik - wiem dlaczego: wciąż myślał, że jestem w domu!

Jak długo trwa aktualizacja GPS? Skąd będę wiedzieć, że wreszcie uzyskałem swoją aktualną lokalizację? Ile razy powinienem pozwolić GeoCoordinateWatcher na odpalenie przed jego zatrzymaniem?

0
TDaver 18 styczeń 2012, 17:21

2 odpowiedzi

Najlepsza odpowiedź

Sprawdź odpowiedź tutaj:

http://awkwardcoder.blogspot.com/2011/09/geo-location-on-wp7-dont-trust-first.html

Zasadniczo proś o aktualizacje, dopóki jedna z nich nie znajdzie się w zakresie od momentu, w którym zacząłeś o nie prosić.

in PositionChanged

if ( (DateTime.Now - e.Position.TimeStamp.DateTime) < LocationTimeout)
  {
         //recent enough.
  } 
3
William Melani 18 styczeń 2012, 21:33
Właśnie miałem ten dokładny problem wczoraj, więc problem był na końcu mojego języka :)
 – 
William Melani
19 styczeń 2012, 02:49

Masz StatusChanged zdarzenie do obsługi, takie jak stara lokalizacja użytkownika (w domu). Gdy stan urządzenia jest gotowy - masz aktualną lokalizację (ale może być niedokładna). Więc użyj HorizontalAccuracy, jeśli potrzebujesz wysokiej precyzji pozycji ;)

0
Ku6opr 18 styczeń 2012, 17:43
Tak, ale pierwsze (nieliczne) zdarzenia StatusChanged nadal będą zawierały STARĄ lokalizację! Skąd będę wiedzieć, że został zaktualizowany?
 – 
TDaver
18 styczeń 2012, 18:25