Точность GeoCoordinateWatcher для Windows Phone 7 - PullRequest
4 голосов
/ 26 ноября 2010

вот моя проблема: я хочу получить данные GPS от антенны на моем телефоне, и каждый раз, когда я смотрю, я нахожу почти один и тот же пример (например, Получение координат GPS на телефоне Windows 7 ).Это все ясно и просто, но не хватает одной вещи - точности.Что я имею в виду, как я могу узнать, является ли возвращенная позиция на самом деле показанием из GPS, а не из триангуляции CellID?Для меня не проблема ждать, пока я не получу хорошее чтение, но как я могу знать, когда остановиться?Я не знаю, был ли я исчерпывающим в своем воздействии, я просто хочу знать, есть ли какой-то способ убедиться, что позиция не является приближением, сделанным триангуляцией некоторых вышек сотовой связи.Спасибо

[Обновить]
Я сейчас провожу какой-то тест из своего дома с помощью устройства, и странно то, что я получаю в результате координаты, указывающие прямо за воротами, с отметкой времени, сообщающей мнеэто чтение 2 часа назад.Это не проблема с механизмом кэширования, я всегда могу проверить эту метку времени и сбросить старые значения, но я действительно не понимаю параметр HorizontalAccuracy: его значение равно 10000. Построение координат широты и долготы на карте показывает мой дом.и, таким образом, это не может быть триангуляция CellID (обычно с триангуляцией GSM самое точное положение, которое я получаю, составляет приблизительно 300 - 400 метров отсюда).Итак, что означает это значение 10000?Еще раз спасибо:)

Ответы [ 4 ]

6 голосов
/ 26 ноября 2010

GeoCoordinateWatcher deliberatley абстрагирует источник информации, которую он использует для определения источника (ей) информации о местоположении, которую он возвращает для простоты использования.

На данный момент вам просто нужно доверять точности наблюдателя, основываясь на GeoPositionAccuracy , который вы указываете в конструкторе.

Однако, я подозреваю, что, как и в большинстве систем на основе GPS, вы можете получить более точный результат, если снова запросите местоположение после небольшого времени работы Watcher (поскольку он мог бы использовать информацию с большего количества спутников в триангуляции).

В зависимости от страны, в которой вы находитесь, и местной географии может повлиять на точность информации GPS на основе количества спутников, которые могут использоваться в триангуляции.

Точность точки доступа WiFi может иметь разные уровни точности.

Точность определения местоположения вышки сотовой связи может варьироваться в зависимости от зоны, покрываемой ячейкой, в которой находится телефон, или в пределах досягаемости нескольких вышек.

Это учет сочетания всех этих переменных, от которых QCW пытается защитить вас.

Если вы действительно должны использовать только информацию GPS, то это то, чего в данный момент нет в SDK.

3 голосов
/ 03 декабря 2010

Согласно документации точность в метрах: http://msdn.microsoft.com/en-us/library/system.device.location.geocoordinate.horizontalaccuracy.aspx

2 голосов
/ 27 ноября 2010

Просто используйте этот код:

var watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);   // High mean GPS

Я также рекомендую это:

wartcher.MovementThreshold = 0.5;

Это сложно объяснить, но если у вас есть обработка событий в Warcher, например PositionChnged, тогдаон будет автоматически срабатывать при каждом движении.
Если вы установите MovementThreshold равным 0,5 или даже больше, например, 1 или 2, событие сработает, если кто-то переместится на 0,5 метра или 1 метр и т. Д.

2 голосов
/ 26 ноября 2010

GeoCoordinate сам содержит точность в свойстве HorizontalAccuracy. И, конечно, когда вы запускаете наблюдателя, вы можете указать желаемую точность.

Правда, я не знаю уровней точности, связанных с вышками сотовой связи, точками доступа Wi-Fi и GPS - но я подозреваю, что вы могли бы поэкспериментировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...