Я никогда не мог понять, как Android запоминает свое последнее известное местоположение. Если кажется, что он помнит место несколько часов назад, но не несколько секунд назад. Думаю, лучше всего привести пример того, что я имею в виду.
Недавно я был в районе залива. Я использовал карты Google на своем Android и случайно оказался в кампусе Google в Маунтин-Вью. Я использовал карты с включенным GPS и через некоторое время получил правильную блокировку GPS, которую использовал для навигации по местности.
Когда я вернулся в Сан-Франциско позже, я использовал его, чтобы передвигаться по городу. Каждый раз, когда я включал карты, мое местоположение возвращалось в вид на горы. Примерно через 10 секунд после того, как он получил блокировку GPS, я получил свое реальное местоположение. Если я выключал телефон и снова включал его через несколько секунд, происходило то же самое — он думал, что я нахожусь там, где был часами ранее, а затем срабатывал с моим фактическим местоположением. Это происходит все время — вспоминая, где я был несколько часов назад, а не где я был несколько мгновений назад. После того, как я пробыл в каком-то районе определенное количество времени, он теперь становится новым «последним известным местом».
Почему, когда я получаю точную блокировку GPS, Android не регистрирует это как «последнее известное местоположение» вместо предыдущего?
Не полный ответ, но некоторая справочная информация:
Таким образом, это зависит от того, какого провайдера местоположения использует приложение, и это может зависеть или даже изменяться в зависимости от динамических параметров. Например, при запуске он может запросить у Android самого быстрого провайдера определения местоположения, а затем переключиться на наиболее точного, чтобы постепенно получить лучшее исправление.
Насколько я понимаю, Android использует грубые и детализированные обновления местоположения, и эти обновления также могут иметь разные показатели качества. Возможно, приложение Google Maps не имело сигнала GPS и Wi-Fi достаточно долго в вашем новом местоположении, чтобы иметь достаточно высокое качество, чтобы быть последним известным местоположением.
Документация для разработчиков по адресу http://developer.android.com/guide/topics/location/obtaining-user-location.html содержит несколько примеров моделей для получения местоположений пользователей, которые могут дать некоторое представление о том, как это работает. Но я предполагаю, что карты Google и, возможно, другие карты делают свое дело.
Ник Диксон
Тим
gcb