Навигация для Android, руководство для чайников и не только - Дневники - Форум Velomania.ru
RSS лента

Delpher

Навигация для Android, руководство для чайников и не только

Рейтинг: 5.00. Голосов: 3.
Цитата Сообщение от gospodinpg Посмотреть сообщение
Вступление.

Поскольку Android OS очень быстро распространяется не только по умам техноманьяков, но и по карманам и сумочкам простых граждан тоже, веломаньяки также не стали исключением. Имея аппарат с этой ОС и встроенным GPS-приемником (а его имеют все современные аппараты на Android), логично использовать его в качестве спутникового навигатора для ориентирования, записи трека. Я и сам стал пользователем этой ОС, имея одной из целей осуществление навигации при велопоездках. В поисках идеального софта я углубился в изучение темы, а теперь хочу поделиться с вами своими наработками.
Обилие софта позволяет решать различные задачи, связанные с навигацией. Это простейший просмотр и навигация по онлайн-картам с подгрузкой карт из интернета, навигация по предварительно кешированным картам, запись трека, навигация по путевым точкам, спортивный тренер и т.д.
Но не все сразу! Будем разбираться по порядку, а значит, с азов. Добро пожаловать в Шао-Линь навигации.

Часть 1. «Чипы-чипики-чипочки.»

Для начала давайте разберемся, как работает встроенный GPS приемник, и как его используют приложения.

В современных PDA используется система A-GPS. Ее назначение в том, чтобы помогать при холодном старте чипу быстрее находить спутники. Информацию о текущем положении последних она черпает из интернета. Включив мобильный интернет на время инициализации можно существенно сократить время поиска спутников. (Практика показывает, что без интернета спутники могут и вовсе не найтись, очень уж слабые чипы ставят в ПДА). После готовности мобильный интернет можно спокойно отключать, чтобы не жрал батарею. Дальше GPS чип будет держать спутники сам по себе. Не стоит пренебрегать этой функцией и надеяться на возможности голого GPS – можно спалить себе мозги, как это сделал я по неопытности...

В ОС Андроид функция GPS активируется в настройках (можно поставить виджет на хоумскрин для удобства доступа), но сам чип просыпается лишь тогда, когда активно приложение, использующее GPS. Т.е. простое включение GPS в настройках еще не запустит чип, а лишь разрешит его запуск программам. Это сделано для экономии батареи (чтобы он не работал тогда, когда он никому не нужен), но может доставить некоторые неудобства. Например, мы включили ЖПС, запустили Карты, в статус-баре появился значок мигающей антенны (поиск спутников), убрали аппарат в карман. Телефон заснул, Карты ушли в фон, GPS чип отключился, спутники не нашлись. Облом! Достали телефон, разблокировали экран, автоматически вернулись к Картам, чип проснулся и стал снова искать спутники. Поэтому, надо помешать аппарату уснуть, пока он не нашел спутники (перестанет мигать значок GPS).

GPS не будет отлючаться даже при отключенном экране, если его использует какой-либо сервис. Например, включив запись трека в программе навигации, мы запустим сервис, работающий в фоне. Этот сервис постоянно нуждается в показаниях GPS-приемника и он, соответственно, заставит его работать все время. Даже если вам не нужно писать трек, это все равно удобно тогда, когда приходится часто сверяться с картой, ведь GPS не отключается, и спутники не теряются. В любой момент вы видите свое положение на карте, не ожидая, пока приемник догонит разбежавшиеся спутники.


Фух, надеюсь, с этим все понятно. Кстати, в Маркете есть хорошая программа “GPS Status”, которая отображает работу чипа – количество используемых спутников, координаты, погрешность позиционирования и т.д.

Часть 2. «Софтопроблемы».

В Маркете и на разных форумах слишком много программ для туристической навигации. Слишком много ненужных программ, я бы сказал. Описания копируют друг друга: «Программа для навигации по онлайн-картам с/без возможности оффлайн-навигации и т.п» Почти все они бесплатные и написаны энтузиастами, что приводит обычно к слабой функциональности, багам, забросу проекта... Зайдя на форум, чтобы «скачать себе программку для навигации», можно долго бродить по темам и читать дебаты, вместо того чтобы заполучить действительно стоящее приложение. На самом деле, если откинуть весь заведомо отстойный софт, не так много останется вариантов для выбора. Тем проще для нас. Я кратко описал несколько программ, которые я считаю достойными, все они являются действительными проектами, постепенно улучшаются, шлифуются. Все они могут «на лету» грузить карты из интернета, как и использовать заранее подготовленные и закачанные на флешку карты. Последнее особенно важно, т.к. позволяет экономить трафик, пользоваться картами при отсутствии интернета. Да и там, где интернет есть, проще быстро просмотреть готовую карту, чем ждать подгрузки из сети. Вот и они:

RMaps. Популярнейшая программа для онлайн и оффлайн навигации. Онлайн навигация по всем популярным картам: Yandex, Google, Microsoft, Yahoo, Open Street Map… Поддерживает встроенный цифровой компас. Можно добавлять POI, импортировать их, записывать трек, а также экспортировать и импортивать его. Отличная (если не лучшая) программа для ориентирования на местности.

OruxMaps. Программа того же типа, что и RMaps, работает с онлайн и оффлайн картами. Имеет несколько более продвинутые возможности, но слегка запутанный и неинтуитивный интерфейс. Фишка крайних версий – возможность создавать оффлайн карты прямо на аппарате, без использования десктопа и другого софта.

Maverick. Все то же самое, но есть один существенный недостаток, заставивший меня отказаться от этой программки – работа с оффлайн картами организована не слишком удобно. В предыдущих двух программах для сохранения карты используется удобный формат SQlite, на выходе карта упакована в одиночный файл .sqlitedb, что делает работу с картами удобнее. В этой же программе кеш карт имеет тайловую структуру, т.е. это папки с хранящимися в них кусочками карты (тайлами). Огромное количество этих файлов тормозит работу системы с флешкой, к тому же они занимают гораздо больше места из-за размера кластера на карте памяти.

Locus Pro. Весьма недурственная программа, на которую я наткнулся уже при написании этой статьи. Также позволяет использовать онлайн и оффлайн карты, но по умолчанию может использовать только открытые карты типа OpenStreetMaps (можно вылечить). Как и OruxMaps, позволяет качать карты прямо на аппарате. Формат карт совпадает с таковым у RMaps, что делает эту программу претендентом на замену RMaps в моем смарте. Одно НО. Программа в полном варианте платная. Бесплатный вариант урезан. Конечно, есть варианты получения платной версии бесплатно, но лично я не зажму 150р хорошему человеку, если сия программа у меня приживется.

Если хотите просто нормальную программу для ориентирования на местности с возможностью заранее на компьютере готовить атласы, то ставьте RMaps, с ней не прогадаете. Она использует удобный формат карт .sqlitedb, бесплатна, по ней много информации в интернете. Запутаться в ней нельзя. OruxMaps после знакомства с Locus я даже не запускаю. Locus же еще подлежит тщательному изучению и тестированию. Maverick неплохая программа, но по описанным выше причинам не стану ее советовать.

Я постоянно исследую разные новые приложения в поисках идеала. Буду держать вас в курсе.

Часть 3. «Выпекаем пирожки»

Пришло время рассказать, как создать с помощью компьютера оффлайн карты для использования их на смартфоне.

Я пробовал использовать две популярные программы для этого. Первая - TrekBuddy Atlas Creator, которая нынче зовется Mobile Atlas Creator. Программа написана в виде ява-апплета, так что для ее работы нужно установить яву на компьютер. С помощью этого приложения можно легко создать карту в формате SQlite, который использют RMaps, Locus Pro, OruxMaps (с небольшими отличиями) и многие другие программы. С определенной версии программа перестала использовать карты из коммерческих источников (яндекс, гугл и прочие), остались только Open Street Maps и еще какие-то открытые карты. Это печально. Поэтому, советую качать старую версию TrekBuddy 1.6 beta2.

Руководство:

1. Качаем и устанавливаем Java Runtime Enviroment тут.
2. Качаем TrekBuddy тут.
3. Запускаем.
4. В Map Source выбираем карту.
5. Выделяем нужный участок на карте.
6. Галочками в Zoom Levels отмечаем требуемые масштабы.
7. В строке Name пишем любое название
8. Нажимаем кнопочку Clear и затем Add Selection
9. В «Atlas Format» выбираем BigPlanet SQLite
10. Нажимаем Create Atlas и ждем завершения.
11. В папке Atlases появился файл .sqlitedb – это и есть наша карта.


Вторая программа – SAS Планета. Я считаю, что она во многом превосходит TrekBuddy и использую только ее. В ней есть поддержка абсолютно всех карт в новых версиях, а не только открытых. В ней реализована простым для пользователя способом возможность добавления и обновления версий источников карт (выкладываются на сайте), что дает пользователю всегда свежайшие карты. В ней реализована возможность избегать бана на сервере с картами (об этом ниже). Программа создана российскими разработчиками, так что с поддержкой вопросов нет. Минус ее в том, что в ней нет по умолчанию поддержки формата .sqlitedb (но по словам разработчиков, работы над этим ведутся), так что для подготовки карт приходится пока пользоваться небольшой дополнительной утилиткой. Хотя, в этом ничего сложного нет.

Руководство:

1. Качаем и устанавливаем SAS Планета крайней версии с сайта программы.
2. Качаем мини-утилиту gmv2sqlite.exe тут и распаковываем.
3. Запускаем SAS.
4. В панели инструментов выбираем нужную карту.
5. Выбираем Файл - Выделить область, выделяем область.
6. Открывается окно «Операция с выделенной областью».
7. Снимаем внизу окна галочку «Закрыть после старта».
8. Выбираем нужный масштаб и жмем Начать.
9. Появляется окно загрузки, после ее завершения это окошко можно закрыть, а в предыдущем окне выбираем следующий масштаб и загружаем его тоже. Повторяем операцию для всех нужных масштабов.
10. После загрузки всех масштабов переходим на вкладку Экспорт.
11. Выбираем формат “Упаковка в tar”, путь сохранения атласа, карту (ту, которую вы грузили), галочками отмечаем масштабы. Нажимаем Начать.
12. После окончания создания атласа по указанному пути появится .tar с картой.
13. Распаковываем .tar. У вас получится папка с вложенными папками, которые содержат кусочки карт.
14. Далее расчехляем gmv2sqlite.exe
15. Нажимаем Пуск – Выполнить ( в Семерке пишем прямо в нижнем окошке меню Пуск)
16. Прописываем путь к программе gmv2sqlite, дальше пробел, дальше путь к папке с картами. Должно получиться наподобие этого: D:\gmv2sqlite.exe D:\mymap
17. Ждем окончания обработки, после чего в папке с картами появится файл .sqlitedb Хоть он и называется rmaps, использовать его могут все программы, работающие с этим форматом.


Я выбрал для себя SAS Планету, хотя она и несколько сложнее. Зато в ней больше возможностей, в т.ч. необходимых по нынешним временам.

КАК "ПРИКРУТИТЬ" КАРТУ К ПРОГРАММЕ НА АППАРАТЕ?

Независимо от того, каким из описанных способов создания атласа вы воспользуетесь, на выходе получается файл в формате .sqlitedb. Его нужно положить на карту памяти в папку, которая предусмотрена приложением для хранения карт. Обычно это “sdcard/appname/maps”, где appname – название приложения. Затем карта активируется в меню приложения, и ей можно пользоваться.

Есть один момент. У разных карт бывает разная проекция. Например, у Яндекс карт проекция отличается от Гугл карт. Если проекция установлена неправильно, то карта будет отображаться со сдвигом (большим). Выбрать проекцию обычно можно в меню программы.

Опишу процесс подключения карт к RMaps для примера:

1. Кидаем файл .sqlitedb в папку sdcard/rmaps/maps
2. Заходим в RMaps
3. Настройки – Оффлайн карты
4. В списке видим свою карту, тапаем по ней
5. В открывшемся меню ставим галочку «Включить карту»
6. Выбираем проекцию. (Кроме Яндекс карт все остальные используют проекцию как у Гугл)
7. Возвращаемся на основной экран
8. Теперь у нас в списке карт есть наша оффлайн-карта.


Часть 4. «Старость – не радость»

Если открыть Яндекс карты в браузере и, например, в свежескаченной SAS планете, навести их на один и тот же участок в одинаковом масштабе, то иногда можно заметить, что на сайте Яндекс карт прорисовка лучше, а то и вовсе SAS не отображает многих дорог или зданий, которые отображает карта на родном сайте. Это происходит потому, что карты регулярно обновляются. При этом меняется параметр в URL доступа к карте. И если программа обращается к URL со старым параметром номера версии, то и карты будут отображаться соответственно старые. Плохая новость: в SAS Планете URL’ы пока автоматически не обновляются. Хорошая новость: мы можем обновить их сами, благо свежие URL’ы постоянно выкладываются хорошими людьми. Их можно обновить и не только в SAS, а в любой программе, где источники карт хранятся в доступном для редактирования виде. Приступим же к изучению матчасти.
Доступ к онлайн-карте осуществляется с помощью строки, содержащей адрес и параметры.

Строка может иметь следующий вид:

Код:
http://vec01.maps.yandex.net/tiles?l=map&v=2.19.5&x=
(из конфигурационного файла SAS)

Может быть и чуть длиннее. Это не важно, важно вот это: “v=2.19.5”. Это и есть номер версии. Обычно достаточно его аккуратно заменить на новый.

Обновляем источники карт в SAS Планете:

В SAS планете не обязательно ковыряться в файлах. Достаточно выполнить простые шаги:
1. Скачать архив http://bitbucket.org/vdemidov/sas.maps/get/tip.zip
2. Распаковать его. Внутри будут папки с названиями карт.
3. Переместить эти папки кучей в папку sasplanet\maps\sas.maps
4. Подтвердить замену всех файлов.
5. Все, теперь у нас обновленные версии.


Обратите внимание, что каждая папка из этой кучи объединяет в себе карты из одного источника, а внутри вложены папки уже для каждой конкретной карты. В каждой такой вложенной папке есть файл Params, в котором можно увидеть параметры, в т.ч. и адрес с номером версии. Это можно использовать для обновления URL в других программах. Например, Orux Maps хранит информацию об источниках в файле sdcard/oruxmaps/mapfiles/onlinemapsources.xml. Корректируйте версии в нем, и OruxMaps будет грузить вам свежие карты.

Об этом все, добавить на первый взгляд нечего...

Часть 5. «Слово о бане».

Яндекс и Гугл ребята обидчивые. Обижаются, когда кэшируешь их карты, и даже могут забанить. Обычно сервер детектирует скачку большого количества тайлов на высокой скорости и банит юзера на пару часов. Пока единственная известная мне программа, где реализована защита от бана – это SAS Планета. Работает она просто: делает задержку после скачивания каждого тайла.

Задержка задается в файле Params, т.е. индивидуально для каждой карты. Открыв файл, видим параметр Sleep=x, где x – задержка в мс. Для Яндекса я выставил задержку в 500мс, т.е.полсекунды, и он меня теперь не банит.
Возможно, и меньшая задержка сгодится, надо испытывать.

В этом же файле есть еще один параметр UseAntiban. Его значения – это 1 для активации или 0 для деактивации. При включении этой функции программа будет останавливаться после 900 загруженных тайлов. Говорят, что в крайних версиях этот параметр уже не используется. В любом случае, его лучше выставить на 0.

За антибан еще 1 плюс в копилочку SAS.


PS

Я рассказал все, что необходимо знать новичку, чтобы начать пользоваться своим Android-смартфоном как навигатором на онлайн-картах. Многое осталось неохваченным: растровые карты генштаба, векторные программы автонавигации, спортивные программы... Об этом я планирую рассказывать постепенно и дальше, по мере проникновения моего мозга в пучину незнакомого софта.

© gospodinpg
Метки: Нет Добавить / редактировать метки
Категории
Без категории

Комментарии