Почему у Android такие проблемы с запоминанием последнего известного местоположения?

Я никогда не мог понять, как Android запоминает свое последнее известное местоположение. Если кажется, что он помнит место несколько часов назад, но не несколько секунд назад. Думаю, лучше всего привести пример того, что я имею в виду.

Недавно я был в районе залива. Я использовал карты Google на своем Android и случайно оказался в кампусе Google в Маунтин-Вью. Я использовал карты с включенным GPS и через некоторое время получил правильную блокировку GPS, которую использовал для навигации по местности.

Когда я вернулся в Сан-Франциско позже, я использовал его, чтобы передвигаться по городу. Каждый раз, когда я включал карты, мое местоположение возвращалось в вид на горы. Примерно через 10 секунд после того, как он получил блокировку GPS, я получил свое реальное местоположение. Если я выключал телефон и снова включал его через несколько секунд, происходило то же самое — он думал, что я нахожусь там, где был часами ранее, а затем срабатывал с моим фактическим местоположением. Это происходит все время — вспоминая, где я был несколько часов назад, а не где я был несколько мгновений назад. После того, как я пробыл в каком-то районе определенное количество времени, он теперь становится новым «последним известным местом».

Почему, когда я получаю точную блокировку GPS, Android не регистрирует это как «последнее известное местоположение» вместо предыдущего?

Ответы (2)

Не полный ответ, но некоторая справочная информация:

  • У вашего устройства может быть более 1 провайдера определения местоположения, например, один на основе GPS, а другой на основе того, какие вышки мобильной связи оно может видеть.
  • У Android нет одной последней известной позиции. У каждого провайдера местоположения есть своя последняя известная позиция.
  • У местоположения есть дополнительные показатели, такие как точность, когда оно было записано, что было записано (например, есть ли у него компонент высоты и т. д.).

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

Это действительно хорошее, краткое объяснение. Спасибо.
Это также имеет смысл, поскольку, когда я вернулся в город, у меня не было Wi-Fi/мобильных данных. В кампусе Google был Wi-Fi. Таким образом, карты, должно быть, изначально использовали «грубое» (то есть Wi-Fi) последнее известное местоположение (которое было в Google), а затем, когда через несколько секунд включился GPS, он обновился. Я бы все же подумал, что GPS lasknownlocation был бы более свежим / лучшим чтением.
этот ответ больше похож на комментарий. и если бы грубое местоположение имело меньший приоритет, это еще меньше объясняло бы, почему телефон позже возвращал вид mnt.

Насколько я понимаю, Android использует грубые и детализированные обновления местоположения, и эти обновления также могут иметь разные показатели качества. Возможно, приложение Google Maps не имело сигнала GPS и Wi-Fi достаточно долго в вашем новом местоположении, чтобы иметь достаточно высокое качество, чтобы быть последним известным местоположением.

Документация для разработчиков по адресу http://developer.android.com/guide/topics/location/obtaining-user-location.html содержит несколько примеров моделей для получения местоположений пользователей, которые могут дать некоторое представление о том, как это работает. Но я предполагаю, что карты Google и, возможно, другие карты делают свое дело.