Карты Google и приложения с просмотром карты имеют разные текущие позиции - PullRequest
8 голосов
/ 20 июля 2010

У меня есть карта, где я хочу отслеживать текущее местоположение пользователя. GPS, а также «использовать беспроводные сети» активируется в настройках моего телефона. Тем не менее, поскольку я нахожусь в помещении, я не получаю починку GPS, поэтому местоположение определяется через сеть; Wi-Fi доступно.

У меня запущено приложение Google Maps и мое приложение.

Как ни странно, текущее местоположение отличается между Google Maps и моим приложением, где Google Maps очень точны, в то время как в моем приложении это положение несколько смещено на несколько сотен метров.

В моем приложении я в основном делаю следующее (для целей отладки сейчас):

1) изначально разместить один маркер на карте: геопоинт получен через locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

2) изначально разместить на карте еще один маркер: геопоинт получен через locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

Это поместит последние известные местоположения обоих провайдеров на карту (в конце концов, последнее известное извне моего приложения).

3) затем для регулярных обновлений (так как я не получаю починку GPS в любом месте здесь), я делаю:

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, baseLocationListener);

Вы можете видеть частоту и расстояние, которое я передаю 0 в обоих случаях.

В манифесте приложения предоставляются следующие разрешения:

android.permission.ACCESS_COARSE_LOCATION
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_MOCK_LOCATION

На самом деле мой baseLocationListener действительно вызывается, что я вижу в журнале, но обновленное местоположение как-то совпадает с последней известной текущей позицией (LocationManager.NETWORK_PROVIDER), то же самое lat / lng.

Я подумал, что, может быть, я что-то упустил или пропустил параметр или настройку, или в моем коде есть ошибка. Поэтому я установил несколько других (всего 3) приложений LBS с Android Market, которые также показывают местоположение текущего пользователя. Текущие местоположения, отображаемые в этих приложениях, равны расположению в моем приложении - и все они находятся на расстоянии около 100 метров - но, по крайней мере, одинаковы.

Смотрите скриншот здесь: скриншот http://img33.imageshack.us/img33/8679/mapproblem.png

http://img33.imageshack.us/img33/8679/mapproblem.png

Теперь мне интересно:

1) как я понимаю, getLastKnowLocation распространяется на всю систему, а не на приложения, почему существуют различия между местоположением на картах Google и всеми другими приложениями?

2) Карты Google не обновляют последнее известное местоположение поставщика?

3) Использует ли Google Карты другой пользовательский провайдер местоположения (т. Е. По причинам лицензирования), отличный от GPS_PROVIDER или NETWORK_PROVIDER, как они есть в SDK?

4) как добиться такого же точного результата с NETWORK_PROVIDER, как это делает Google Maps?

Ответы [ 3 ]

2 голосов
/ 23 июня 2011

Я знаю, что вашему посту исполнился год, но я думаю, что ответ таков: данные карты Google в Китае смещены или искажены.Я заметил, что вы находитесь в Южном Китае.Правительство Китая требует этого по ряду соображений безопасности. Вот результаты поиска Google .

Алгоритм преобразования неизвестен.Вероятно, вы можете Google и пожелать удачи.

2 голосов
/ 20 июля 2010

Я думаю, что нашел ответ, хотя и не нашел решения. Кажется, что проблема заключается в качестве данных разных поставщиков карт, которые используются для Google Maps и MapView в SDK, которые отличаются.

Кажется, что координаты листов карты не очень точные, как в общедоступных веб-интерфейсах / плитах Google Maps.

См. Этот снимок экрана для примера, где я закрепил ту же географическую точку. скриншот http://img339.imageshack.us/img339/2793/gmaps2.png http://img339.imageshack.us/i/gmaps2.png/

Карта с использованием публичной карты API находится на расстоянии нескольких сотен метров. Кажется, нам просто с этим жить ?! (

0 голосов
/ 22 июля 2010

Карты и спутниковые изображения в Картах Google отключены на пару метров, но я не думаю, что это должно быть слишком много.Похоже, что это пара сотен метров.

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

  • GPS
  • Сеть
  • WIFI

GPS и сетьопределяется триангуляцией.GPS самый точный.WIFI выполняется с помощью «whois», адрес получается, а затем геокодируется, время от времени совершенно неточно.

Некоторые телефоны говорят, что они GPS, но они, скорее всего, псевдо-GPS, как iPhone 1.

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