Как повысить точность GPS-координат? - PullRequest
1 голос
/ 18 ноября 2011

У меня есть приложение, в котором я должен изобразить положение пользователя и положение его друга на одной и той же карте, но проблема в том, что эти позиции не точны. Например, две координаты, такие как: 81.445679 25.678998 и 81.448902 25.670123.В моем приложении я получаю свое местоположение и затем рисую то же самое на карте, но я думаю, что приведение типов от double к int делает эти различия. Код для этой части показан ниже:

 locationManager = (LocationManager)this.getSystemService(LOCATION_SERVICE); 
 Location location=locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
 location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

 int latitude = (int)(location.getLatitude() * 1000000);
 int longitude = (int)(location.getLongitude() * 1000000);

 point = new GeoPoint(latitude,longitude);
 mapController.animateTo(point);

Ичтобы отправить эти координаты другу пользователя, я отправляю эти координаты в виде строкового текста, что-то вроде этого:

 private double longitude,latitude;
 latitude=location.getLatitude();
 longitude=location.getLongitude();
 String message = latitude + " " + longitude ; 

, а затем отправляю это сообщение другу и на стороне друга, извлекая это местоположение, взломав этосообщение в double.So может быть разбор от двойной до строки, а затем строка до двойной является одной из причин отсутствия точности.

Я не ясно. Так может кто-нибудь дать мне некоторое представление об этом?Или можете рассказать мне о том, какие модификации можно внести в существующие коды?

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 18 ноября 2011

В вашем коде вы задаете свое местоположение из locationManager с помощью провайдера GPS, затем вы перезаписываете его местоположением из locationManager с помощью провайдера NETWORK. Поставщик NETWORK обычно предоставляет наименее точное местоположение. Если вы используете провайдера GPS, вы можете получить точность определения местоположения в радиусе от 50 до 2 м.

Это не имеет ничего общего с ошибками приведения.

Вы можете проверить, программно , чтобы увидеть, включен ли GPS или нет - если нет, вы можете выдать предупреждение пользователю, чтобы включить его.

1 голос
/ 18 ноября 2011

Вы, вероятно, не получите точную позицию с сотового телефона.

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

Для точногоположения, которые пользователь должен иметь прямой взгляд на небо.Он не должен стоять рядом с высокими домами и т. Д.

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

0 голосов
/ 18 ноября 2011

Если вам действительно нужно использовать двойники, отправляйте их косвенно.Если вы хотите отправить их как String, конвертируйте их корректно, посмотрите здесь - Умножение двойного числа без точности и запятых

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