Сколько раз должен срабатывать GeoCoordinateWatcher?
Моему приложению Wp7 (Mango) необходимо знать местоположение пользователя, чтобы искать ближайший объект в базе данных. Но я хочу отобразить результат на экране приветствия, поэтому мне нужно как можно скорее указать свое местоположение. Я написал код, который запускает GeoCoordinateWatcher
(с высокой точностью и минимальным порогом), и при первом срабатывании останавливает его и отправляет местоположение в веб-сервис, который возвращает рассматриваемый объект.
После того, как я проверил это, я пошел, чтобы представить это, в другой конец города. Я начал это, и для всеобщего удовольствия это показало совершенно неправильный результат - я знаю почему: он все еще думал, что я был дома!
Сколько времени занимает обновление GPS? Как я узнаю, что наконец-то получил свое текущее местоположение? Сколько раз я должен позволить GeoCoordinateWatcher
уволить, прежде чем остановить его?
2 ответа
Проверьте ответ здесь:
http://awkwardcoder.blogspot.com/2011/09/geo-location-on-wp7-dont-trust-first.html
По сути, продолжайте запрашивать обновления, пока они не окажутся в диапазоне от момента, когда вы начали их запрашивать.
in PositionChanged
if ( (DateTime.Now - e.Position.TimeStamp.DateTime) < LocationTimeout)
{
//recent enough.
}
У тебя есть StatusChanged
событие для обработки, таких как старое местоположение пользователя (дома). Когда статус устройства готов - у вас есть текущее местоположение (но оно может быть неточным). Итак, используйте HorizontalAccuracy
если вам нужна высокая точность позиции;)