Я программировал приложение, используя мапкит и SDK 3.0. Все работает хорошо, кроме одной детали. Я заметил, что при отображении местоположения пользователя я получаю разные позиции пользователя на карте в зависимости от текущей сети. Я прочитал об этой проблеме и понимаю, что она распространена? В моей WLAN правильно отображается позиция пользователя. При использовании сети 3G (T-Mobile) положение находится примерно в 100 метрах от моего фактического местоположения. Я понимаю, что это связано с сетью сотового телефона, использующей триангуляцию, а в WLAN используется точка доступа GPS или WiFi. Итак, на мой вопрос. Есть ли способ обойти это? Мое приложение показывает позиции в городе, а также расстояние до этих позиций. Это очень очевидно, а также вводит в заблуждение, если позиция ложная из-за коротких расстояний. Есть ли способ (в коде) установить, какой метод использовать для получения позиции пользователя? Я протестировал все другие приложения на своем iPhone с использованием карт, и проблема у них у всех одна и та же. (Если кто-то хочет протестировать мое приложение, оно есть в магазине приложений бесплатно под car2go, и другие комментарии, конечно, интересны) Заранее спасибо! -петля-
GPS или триангуляция при установке положения пользователя на карте?
Ответы (3)
Core Location предоставляет информацию о вертикальной и горизонтальной точности местоположения, о котором сообщается. Следует использовать эту точность, чтобы сообщить пользователю, если местоположение подозрительно. Карты Google делают это, увеличивая размер синего круга вокруг маркера местоположения. Существуют и другие способы указать пользователю, что местоположение является подозрительным, предупреждающие окна, не показывать местоположение, если оно выходит за пределы некоторой заданной точности и т. д.
Использовать альтернативный источник для вашего местоположения? Портативные устройства GPS помогут.
Реальный вопрос заключается в том, как вы можете исправить данные, указанные триангуляцией 3G. Интересно, можете ли вы сделать дифференциал, чтобы исправить ошибки местоположения 3G.
1) В заданном городе откалибруйте ошибки местоположения 3G, нанеся график города. Это может быть исправлено сетями 3G в любое время, поэтому у вас должен быть способ проверки и повторной калибровки.
2) Откалибруйте местоположение сети 3G, используя известное местоположение — местоположение 3G вместе с местоположением GPS. Воспринимайте это как разницу, которую можно применить к другим местоположениям 3G. Это предполагает постоянное смещение в расчете триангуляции, что, вероятно, не соответствует действительности.
3) Подождите, пока 3G-сети исправят это, и ничего не делайте в это время.
4) Предоставьте провайдеру сети 3G информацию об ошибках в их триангуляции и посмотрите, является ли это приоритетом для них.
Других приемлемых вариантов не могу придумать...
Возможно, вы можете использовать CoreLocation напрямую. CLLocationManager
дает вам CLLocation
объектов, кроме их точности. Если вы получаете точность ниже 50 метров, это местоположение, вероятно, пришло из GPS.