Используйте векторные карты вместо предварительной загрузки или кэширования отрисованных фрагментов карты.
Векторные карты против растровых, предварительно отрисованных, плиточных карт
Вот в чем разница: кэширование Google Maps или любых других предварительно отрендеренных карт хранит от десятков до тысяч плиток (растровых) изображений на вашем устройстве. Несмотря на то, что они сжаты, они занимают гигабайты памяти, особенно если вы собираетесь хранить карты для всей страны.
Кроме того, растровые изображения - это просто изображения. Картирование и особенно навигационные приложения не могут интерпретировать то, что отображается на изображении. Поэтому они не знают о ближайшей заправке, автобусной остановке, реке, на которой вы гуляете, и т. Д.
Векторная карта в каком-то специальном формате данных. Чтобы быть отображенным, он должен быть представлен, что означает, что изображение должно быть сначала вычислено из необработанных данных. Таким образом, самым большим недостатком является то, что приложения, использующие их, могут быть более ресурсоемкими. Однако, в зависимости от качества и функций векторной карты, а также от качества и возможностей приложения, вы можете запросить карту для навигации по машине, пешком, при загрузке, на велосипеде. Вы можете получить информацию о ближайших ресторанах или ближайший почтовый ящик.
Другим основным преимуществом векторных карт является его гораздо меньший размер по сравнению с растровыми данными. Хотя предварительно визуализированное изображение мозаичного изображения карты может содержать некоторые зеленоватые и изменяющиеся данные пикселей для представления лесистой области, которая линейно пропорциональна покрытой области, эта же векторная карта может просто сказать «лесная область» и сохранить координаты границы.
Таким образом, другое преимущество заключается в том, что приложение решает, как визуализировать указанную лесную область, и, таким образом, пользователь имеет некоторое влияние на то, как ему нравятся карты. Возможно, вы сможете указать вашему картографическому приложению переключиться на красную / синюю / черную цветовую схему ночью, не загружая второй набор растровых плиток. Он просто пересчитывается на лету при изменении некоторых настроек и не занимает никакой дополнительной памяти.
Объем хранилища и доступный набор функций ограничены данными, содержащимися в векторной карте. Таким образом, в зависимости от ваших потребностей и потребностей ваших приложений, некоторые могут захотеть иметь полностью открытые данные карты улиц, в то время как другие обходятся простым набором.
Кроме того, благодаря векторным картам и небольшому объему хранилища, а также возможности настраивать их рендеринг внутри приложений нет необходимости использовать какое-либо дополнительное приложение на рабочем столе для подготовки карт. Скачивайте файлы и начинайте. Хотя теоретически это работает, на практике исходные файлы данных проекта OpenStreetMap должны быть преобразованы в синтаксически другой формат. См. ниже.
Возвращаясь к Howtos и приложениям, я все еще начинающий на Android. Вот что я использую сегодня.
Open Street Map - проект, который предоставляет полнофункциональные векторные карты бесплатно. Как и в Википедии, данные карты могут быть улучшены пользователями, и это происходит постоянно.
Mapsforge Векторные карты
Предварительно собранные векторные карты открытых карт улиц можно найти в проекте mapsforge по адресу http://download.mapsforge.org/maps/.
Использование оригинальных файлов Open Street Map
Вышеуказанные файлы mapsforge могут использоваться как есть и, таким образом, являются наиболее удобным решением. Однако, если вы хотите начать с исходных файлов Open Street Map, вы можете следовать этому руководству, чтобы преобразовать исходные файлы из формата PBF в формат карты с помощью Osmosis . Типичный пример командной строки:
osmosis --read-pbf "hungary.osm.pbf" --mapfile-writer file="hungary.osm.map"
годограф
В качестве картографического приложения вы можете использовать Locus Free . Загрузить и установить.
Скачайте любой файл векторных карт и сохраните его на своем телефоне в папке /mnt/sdcard/Locus/MapsVector/_themes/
. Лично я загружаю карты на свой настольный компьютер, храню их в папке, которой делюсь с помощью Samba в Linux, или делюсь ими на компьютере с Windows. Затем я использую любой файловый менеджер Android ( Ghost Commander с плагином Samba , ES File Explorer File Manager ) на своем телефоне, чтобы скопировать файлы из общего расположения в папку сопоставления Locus на устройстве Android.
OruxMaps
Вы также можете использовать приложение OruxMaps . К сожалению, я еще не нашел способ использовать оба приложения без необходимости дважды хранить данные карты. ( SD-карты не поддерживают символические ссылки . Если у вас есть данные во внутренней памяти, вы можете использовать их и хранить карты только один раз). Вы можете снова использовать предпочитаемый файловый менеджер на Android, чтобы скопировать *.map
файлы из вышеупомянутой папки Locus в папку, где OruxMaps хранит свои файлы карт. По умолчанию это/mnt/sdcard/oruxmaps/mapfiles
Переключиться на новую карту:
- Нажмите верхнюю правую иконку "карта"
- Нажмите «Новая карта» во всплывающем меню.
- Нажмите «оффлайн» в правом верхнем углу
- Выберите любой из файлов карты * .map
Обратите внимание, что в OruxMaps вы можете перемещаться по подпапкам. Поэтому, если хотите, вы можете использовать свой файловый менеджер для организации карт в подпапках. Подсказка: вы можете полностью скопировать данные mapsforge в вашу папку карт OruxMaps и больше не беспокоиться :-)
Также обратите внимание, что если у вас открыто приложение OruxMaps, когда вы копируете новые файлы карт в его папку данных, вам, возможно, придется нажать «Сбросить источники карт» в диалоговом окне «Новая карта», чтобы убедиться, что оно перечитывает папку карты для новых файлы.
Вот инструкции по этим двум приложениям для создания карт ваших карт . Как упоминалось ранее, в зависимости от приложения вы можете влиять на способ отображения векторных карт. Это включает в себя настройки цвета, а также то, какие данные должны быть включены в дисплей, а какие нет.