Защита кэша карт от очистки –
решение проблемы оффлайн-карты в iOS 5

В iOS 5 изменился формат MapTiles.sqlitedb – базы данных, в которой хранится кэш карты. Чтобы перекодировать базу данных в новый формат, старые конвертеры не годятся, а новых в интернете нет. Поэтому затея с изготовлением оффлайн-карты для iOS 5 бессмысленна.
Заранее нужный кэш изготовить не получится, и по достижении размера примерно 20 Mb старые тайлы карты будут затираться новыми.

Nick Adams предлагает решение, как кэш карт защитить от стирания. Это не решает проблему с изготовлением нужной карты заранее, зато позволяет сэкономить трафик при просмотре уже кэшированной ранее области карты.
В базе данных создаётся триггер (переключатель), суть работы которого состоит в том, чтобы обнулить выборку строк базы данных, предназначенных для удаления. То есть приложение „Карты“ будет, как всегда, выполнять транзакцию по удалению старых строчек, но по ходу дела выборка окажется нулевой, и из базы ничего не удалится.

Чтобы выполнить эту хитрую операцию, нужно выгрузить из телефона кэш карты, который хранится там по адресу:
/var/mobile/Library/Caches/Maps/MapTiles/MapTiles.sqlitedb
можно воспользоваться DiskAid или другим файловым менеджером, который умеет подсоединяться к айфону.
После этого следует открыть файл базы данных в каком-нибудь приложении, поддерживающем формат SQLite. Я воспользовался SQLite Manager (есть и для Windows, и для OS X).

Здесь создаём новый триггер, который защитит базу данных кэша карт от затирания:
CREATE TRIGGER prevent_delete BEFORE DELETE ON image
BEGIN SELECT raise(IGNORE);
END

Читать далее «Защита кэша карт от очистки - решение проблемы оффлайн-карты в iOS 5»

Мега-карта для iPhone:
как сделать свою сложную карту для айфона

English users sorry. Currently I have no plans with translation. I will be thankful if someone would translate the article to English and publish it with a link to original.

В статье объясняется, как изготовить свою собственную сложную карту для iPhone 3G (jailbreak, OS 2.2+). Сложная карта включает в себя разные масштабы, разные слои и разные источники картографической информации с наложением. В статье описывается процесс создания своей карты на примере Мега-карты для iPhone с обзорной картой мира, России, подробной карты Ленинградской области и Московской области, детальных планов Санкт-Петербурга и Москвы, карт России и двух столиц из Яndex, а также слоя транспортной схемы Google Transit для Санкт-Петербурга и Москвы. Объясняется, как сделать индекс улиц для поиска из базы данных OpenStreetMap.

Читать далее «Мега-карта для iPhone: как сделать свою сложную карту для айфона»