Google Maps и приложения с mapview имеют различные текущие позиции

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

У меня есть выполнение приложения Google Maps, а также мое выполнение приложения.

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

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

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 Maps не обновляет lastKnownLocation поставщика?

3) Google Maps использует другого пользовательского поставщика местоположения (т.е. из-за лицензирования причин) кроме GPS_PROVIDER или NETWORK_PROVIDER, как они находятся в SDK?

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

8
задан Mathias Conradt 20 July 2010 в 10:27
поделиться

2 ответа

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

Координаты плиток карты кажутся не очень точными, как и в публичных google maps web api / tiles.

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

Карта, использующая публичные карты api, отличается на несколько сотен метров. Похоже, с этим придется смириться! :(

2
ответ дан 6 December 2019 в 00:04
поделиться

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

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

  • GPS
  • Сеть
  • WIFI

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

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

0
ответ дан 6 December 2019 в 00:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: