GPS или триангуляция при настройке положения пользователя на карте? - PullRequest
1 голос
/ 25 августа 2009

Я программировал приложение, используя mapkit и SDK 3.0. Все работает хорошо, за исключением одной детали. Я заметил, что при отображении местоположения пользователя я получаю разные позиции пользователей на карте в зависимости от текущей сети. Я читал об этой проблеме и понимаю, что это распространено? В моем WLAN правильно отображается позиция пользователя. При использовании сети 3G (T-mobile) позиция находится примерно в 100 метрах от моей реальной позиции. Я понимаю, что это связано с сотовой телефонной сетью с использованием триангуляции, а в WLAN используется точка доступа GPS или WiFi. Итак, на мой вопрос. Есть ли способ обойти это? Мое приложение показывает позиции в городе, а также расстояние до этих позиций. Это очень очевидно и также неправильно, если позиция ложна из-за коротких расстояний. Есть ли способ (в коде), чтобы установить, какой метод будет использоваться для получения позиции пользователя? Я протестировал все другие приложения на своем iPhone, используя карты, и проблема кажется одинаковой для всех. (Если кто-то хочет протестировать мое приложение, оно бесплатно находится в магазине приложений под car2go, другие комментарии, конечно, интересны) Заранее спасибо! -loop-

Ответы [ 3 ]

1 голос
/ 25 августа 2009

Базовое местоположение предоставляет информацию о вертикальной и горизонтальной точности местоположения, о котором оно сообщает. Следует использовать эту точность, чтобы сообщить пользователю, если местоположение подозрительно. Google maps делает это, увеличивая размер синего круга вокруг маркера местоположения. Существуют и другие способы указать пользователю, что местоположение является подозрительным, окна предупреждений, не отображающие местоположение, если оно выходит за пределы некоторой заданной точности и т. Д.

См .: http://developer.apple.com/iphone/library/documentation/CoreLocation/Reference/CLLocation_Class/CLLocation/CLLocation.html#//apple_ref/occ/instp/CLLocation/horizontalAccuracy

0 голосов
/ 25 августа 2009

Возможно, вы можете использовать CoreLocation напрямую. CLLocationManager дает вам CLLocation объектов, которые включают их точность. Если вы получаете точность ниже 50 метров, то это местоположение, вероятно, пришло от GPS.

0 голосов
/ 25 августа 2009

Использовать альтернативный источник для вашего местоположения? Портативные устройства GPS сделали бы свое дело.

Реальный вопрос в том, как вы можете исправить данные, указанные в триангуляции 3G. Интересно, можно ли сделать дифференциал для исправления ошибок местоположения 3G.

1) В данном городе откалибруйте ошибки местоположения 3G, построив город. Это может быть исправлено сетями 3G в любое время, поэтому вам потребуется способ проверки и повторной калибровки.

2) Откалибруйте местоположение сети 3G, используя известное местоположение - местоположение 3G вместе с местоположением GPS. Возьмите это как дифференциал, который может быть применен к другим местоположениям 3G. Это предполагает последовательное смещение в расчете триангуляции, которое, вероятно, не соответствует действительности.

3) Дождитесь, пока сети 3G исправят это, и ничего не сделайте.

4) Предоставьте провайдеру сети 3G информацию об ошибках в их триангуляции и посмотрите, является ли это приоритетом для них.

Я не могу придумать другие жизнеспособные варианты ...

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