iMapsManager.com

Офф-лайн карты для iPhone

О карте в iPhone

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

Для успешного овладевания тайнами офф-лайн просмотра карт достаточно прочитать первый раздел.

Для новичков

Как вы уже, вероятно, заметили, приложение "Карты"  в iPhone для своей работы постоянно подгружает данные из интернета. В частности, подгружается сама карта, данные о вашем местоположении (в том случае, когда не используется встроенный GPS приемник). Сеть используется и при поиске адресов и прокладке маршрутов.

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

Помните, для того чтобы иметь возможность загружать файлы в телефон, для него должна быть выполнена процедура джейлбрейка (англ. jailbreak - побег из тюрьмы), после которой вы получаете доступ к файловой системе телефона. Все iPhone первого поколения, находящиеся в нашей стране, прошли через нее. Для iPhone3G, официально продающиеся в салонах сотовой связи, вам, возможно, придется проделать джейлбрейк самостоятельно. Подробнее об этом можно прочитать, например, на этом сайте. Обратите внимание - нажатие кнопки "Восстановить" приведет к удалению всех ваших данных. Рекомендуем полностью пропустить шаг "Подготовка iPhone".

Когда вы загружаете из сети или изготавливаете самостоятельно карту, вы, обычно, имеете дело с тремя файлами:

Рассмотрим подробнее каждый из них.

MapTiles.sqlitedb

Карта в iPhone представлена в виде набора квадратных фрагментов. Для каждого уровня детализации используется свой набор, фрагменты не масштабируются. Спутниковая  фотография и гибрид, каждый имеют свой независимый набор фрагментов или, как их иногда называют, тайлов (от англ. tile - плитка). Скаченные из сети фрагменты приложение Карты помещает в память телефона, все они хранятся в специальном файле с названием MapTiles.sqlitedb, который иногда называют кешем (от англ. cache - нечто припрятанное, "заначка"). Прежде чем скачивать фрагмент из сети, приложение проверят, нет ли его в кеше, и если есть - достает оттуда.

Владелец телефона может подменить этот файл своим, заранее наполненным нужной ему информацией. Отмечу, что поскольку карта - это всего лишь картинка, кеш может содержать фрагменты, полученные не только из Карт Google, но и из других источников, например Яндекс.Карт.

Как говорилось выше, для каждого масштаба и типа изображения используются свой набор фрагментов. Каждый следующий уровень детализации содержит их в 4 раза больше, чем предыдущий. Поэтому, например, карта Москвы до предпоследнего масштаба занимает около 300 Мб, а до последнего - уже около гигабайта. Спутниковая фотография добавит еще столько же к объему кеша.

Чтобы кеш не рос до бесконечности, программисты Apple поставили ограничение - когда размер файла приближается к 40 Мегабайтам (в прошивке 2.2 пороговое значение было увеличено до 130 Мб), из него начитают удаляться фрагменты, скаченные самим первыми, размер файла стабилизируется на этой отметке. Такое поведение создает проблемы при загрузке собственных карт: обычно их размер превосходит указанную отметку и при попытке пополнить кеш новыми данными "Карты" удаляют часть фрагментов, загруженных вами.

У приложения "Карты" есть еще одна особенность. Если при обращении к серверу оно обнаруживает, что на нем сменилась версия карт (а это происходит примерно раз в 2-3 недели), оно стирает ранее закешированную информацию и начинает загрузку заново.  При этом вы будете вынуждены искать компьютер и в очередной раз закачивать в телефон свою карту.

Для борьбы с таким поведением можно либо модифицировать приложение "Карты", либо заблокировать файл на запись, тогда "Карты" не смогут удалить фрагменты. Впрочем, при этом они потеряют и возможность дописывать в кеш вновь загруженные данные. Кроме того существует радикальное решение - никогда не запускать приложение "Карты" при включенном GPRS или Wi-Fi. Тогда оно не узнает актуальную версию карт и не будет пытаться добавить новые фрагменты.

В прошивке телефона версии 2.2 формат файла MapTiles.sqlitedb был изменен, старые кеши, которые в изобилии разбросаны в сети, не подходят для этой прошивки. Однако, вы можете загрузить конвертер, с помощью которого возможно преобразовать карты в новый формат. При этом их размер уменьшится на 10-30%. С помощью конвертера также возможно определить, какой формат имеет имеющийся у вас кеш - старый (v4) или новый (v5).

В прошивке 3.2/4.0 формат файла MapTiles.sqlitedb был изменен еще раз, при этом формат кешей для iPhone4/iPad из-за более высокого разрешения их экранов отличается от формата, используемого предыдущими поколениями продукции Apple. Конвертер карт поможет вам преобразовать любую скаченную из сети карту в формат, подходящий для вашего устройства.

Bookmarks.plist

Как говорилось выше, для поиска адресов приложение "Карты" обращается к серверу. Поэтому в режиме оффлайн такой поиск невозможен. Но "Карты" предоставляют нам возможность создавать закладки (установите "булавку" на карте, нажмите ">" и выберите "Закладка"). Мы можем заранее создать по закладке на каждую улицу в нужном нам регионе и закачать их в телефон. Как вы поняли, все закладки сохраняются в файле Bookmarks.plist. Обычно он содержит список улиц нужного вам города, поиск по закладкам осуществляется по первым вводимым буквам.

com.apple.Maps.plist

В файле com.apple.Maps.plist приложение "Карты" при выходе запоминает координаты, масштаб и тип карты для просматриваемой области. И из него оно их считывает при запуске. Если подменить этот файл, то при следующем запуске карта откроется на нужном вам месте и не придется искать, где же находятся закешированные данные.

 

Все 3 файла являются независимыми друг от друга. Поэтому ничего страшного не будет, если вы загрузите их из разных источников или если у вас не хватает одного или нескольких из них.

iLM, JasonKit, MapsOffline, OfflineMaps

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

Maps Enchancer

Данная программа, устанавливаемая из Cydia как раз модифицирует прошивку, запрещая ей удалять кеш карты. Кроме того, она позволяет ограничить максимальный уровень приближения карты, чтобы вам не пришлось оплачивать трафик, скачивая ненужные вам данные. К сожалению, она работает лишь на прошивках 3.х и пока что не была портирована на iPad или iOS 4.x.

Приведенной выше информации должно быть достаточно для того, чтобы начать работать с картами при помощи приложения iMapsManager. Если же слова "выставить права" не звучат для вас полной бессмыслицей, переходите к разделу для продвинутых.