Заставляем iPhone хранить кэш карт вечно

1315133960_5fc23d20f8_mПриложение «Карты» на iPhone работает весьма странно, не говоря уже о всяческих проблемах с GPS. Оно имеет отвратительное свойство каждый раз подгружать карты из Интернета. Получается, что нормально им пользоваться можно только при наличии безлимитного трафика GPRS (что либо редкость, либо роскошь), либо Wi-Fi поблизости (дома, на работе, в кафе и пр.). Но ведь «Карты» чаще всего нужны именно в дороге (особенно в связке с GPS) — а это обернётся для вас огромными счетами от мобильного оператора за трафик. И это в России, а если вы рискнёте пользоваться картами за рубежом, то к цифрам в этих счетах добавится ещё пара нулей справа. Что же делать? На самом деле, есть целых три выхода.

Выход первый: не пользоваться «Картами». Способ радикальный, но действенный, благо что существует большое количество альтернатив, не в пример лучше работающих с навигацией и имеющих оффлайн-кэш карт городов и дорог — iGO, Sygic, NAVIGON и пр. Главный их минус — ценник.

Выход второй: создать для «Карт» кэш на компьютере. Выход очень хороший, но сейчас мы его советовать всем пользователям уже не можем. С момента выхода прошивки 3.1 многое поменялось в системе обработки кэшей карт iPhone. Раньше дело обстояло очень просто — на компьютере выкачиваете все изображения карт Google или Яндекса для выбранного вами участка местности, затем все они запаковываются в кэш, а вам остаётся залить его в аппарат.

Сейчас есть целых две проблемы:

  • iPhone по совершенно неожиданной причине может отказаться принять ваш кэш. Вероятность успеха — порядка 35-40%. Иными словами, часы (а то и дни), убитые вами на выкачивание карт из Интернета, могут оказаться потраченными впустую.
  • Затирание залитого кэша при наличии доступа к Интернету. Даже если вам повезло, и вы справились с первой проблемой, вас ждёт вторая. Кэш будет работать до первого запуска «Карт» при включённом GPRS или Wi-Fi. После этого залитый вами многомегабайтный файл с картами затрётся килобайтным кэшем. Чтобы избежать этого, можно повозиться в правами доступа на файл кэша карт. Даже если запретить его перезапись, то iPhone OS его просто сотрёт и создаст новый (раньше вместо этого кэш всё равно грузился). Если полностью запретить перезапись не только кэша, но и содержимого всей папки, в которой он лежит, начнётся полная мистика — кэш будет лежать на месте, но карты всё равно станут грузиться не из него, а из Сети.

К чему мы всё это говорим? К тому, что данное решение, которое несколько месяцев назад казалось универсальным, теперь вряд ли можно назвать рабочим. Поэтому остаётся третий выход.

Третий выход: заставить iPhone вечно хранить создаваемый приложением «Карты» кэш. Это не лучшее решение, зато оно без проблем работает на прошивках 3.1, 3.1.2 и 3.1.3. Отличие от второго варианта в том, что на компьютере ничего не создаётся и в iPhone не закачивается. Вы просто запрещаете iPhone обновлять уже однажды закачанный кэш. Например, вы можете подключиться к Wi-Fi, потратить часок-другой на вдумчивое изучение карты города, и после этого спокойно ездить по городу с выключенным GPRS или вообще в авиарежиме.

Для того, чтобы кэш карт iPhone сохранялся вечно, вам потребуется бесплатная утилита Maps Enhancer из Cydia. Она выполнена в виде дополнительного пункта в настройках iPhone. Там собрано изрядное количество настроек:

IMG_0259Пробежимся по ним:

Keep maps cache — самая главная настройка. Именно она включает сохранение кэша карт и защиту его от удаления.

Над ней вы сможете следить за размером кэша. Имейте в виду, что приличных размеров город в приличном масштабе может занимать больше гигабайта. Если это не входит в ваши планы, можете очистить сохранённый кэш кнопкой «Delete existing cache».

Секция «Maximum zoom level» задаёт сохраняемый масштаб карт. Чем выше индекс масштаба (он варьируется от 2 до 19), тем детальнее изображения на карте. Например, при индексе 17 вы увидите все номера домов. Для комфортной работы вполне хватает 16-17 индекса. Знайте, что каждый следующий уровень индекса увеличивает размер кэша в разы. Иными словами, 18й уровень мало что даст вам, кроме удвоения (а то и утроения) размера кэша.

IMG_0261

Масштаб можно настроить отдельно для режима карты (Standard), спутника (Satellite) и гибридного представления (Hybrid).

Preferred language позволяет вам форсировать выбор определённого языка для подписей на карте. По умолчанию это текущий язык iPhone OS, но можно выбрать любой другой.

Теперь о том, как проверить Maps Enhancer в действии:

  1. Подключитесь к Wi-Fi, найдите своё местоположение и пошарьте по окрестностям. Так вы сохраните первые снимки в будущий кэш.
  2. Закройте «Карты», включите авиарежим, отключите Wi-Fi.
  3. Запустите «Карты» снова.
  4. Если вы видите карту — считайте, что всё получилось. Но не лишним будет попробовать выйти за пределы ранее осмотренных на карте окрестностей. Вы должны увидеть следующую картину:

IMG_0262Это и есть граница между сохранённым и несохранённым в кэше пространством.

Надеемся, что Map Enhancer сэкономит вам немало GPRS-трафика. Скачать программу можно из стандартного репозитория Cydia — BigBoss.