У меня есть карта, где я хочу отслеживать текущее местоположение пользователя. GPS, а также «использование беспроводных сетей» активируется в настройках моего телефона. Тем не менее, поскольку я внутри, я не получаю GPS-исправление, поэтому местоположение определяется по сети; Wi-Fi место доступно.Google Maps & apps с mapview имеют разные текущие позиции
У меня работает приложение Google Maps, а также мое приложение.
Странно, что текущее местоположение отличается между Google Maps и моим приложением, где Карты Google очень точны, в то время как в моем приложении местоположение находится как-то с нескольких метров на 100 метров.
В моем приложении я в принципе сделать следующее (для отладки сейчас):
1) первоначально разместить один маркер на карте: GeoPoint извлекаться через 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, которые также показывают местоположение текущего пользователя. Текущие местоположения, отображаемые в этих приложениях, равны таковым в моем приложении - и все они находятся на расстоянии около 100 метров - но, по крайней мере, все равно.
Смотрите скриншот здесь: screenshot 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?
Возможно ли, что карты google используют только последнее место, полученное от GPS, поскольку через сеть известно, что вы далеко не ушли? Другими словами, приложение google maps знает, что вы вошли внутрь (поскольку GPS ушел, но сетевое местоположение по-прежнему доступно), и поэтому он хранит последнюю известную точку GPS и использует ее? – Nate
Я так не думаю. Одновременно я запускал все приложения, поэтому позиция не должна отличаться в одно и то же время. Всего несколько минут назад я также проверил его снаружи, а также отправился на автобусе на более длительное расстояние. API-интерфейсы API Google Maps определенно неточны, см. Мой ответ, ниже которого в основном это доказывает. Также я тестировал с GPS полностью с использованием только GSM/Wi-Fi, все это приводит к тому же. Кроме того, getLastKnowLocation является общесистемной, а не прикладной. Если Google Maps использует его, я должен также получить ту же позицию в своем приложении. –
На самом деле, я, вероятно, получаю тот же lat/lng из getLastKnowLocation, что и Карты Google, но он просто отображается неверно на разных неточных точках карты (см. Ответ ниже в качестве примера из веб-api). –