Если Вам нужна инструкция, как сделать так, чтобы "Карты" были максимально полезны и отображались без подключения к интернету, то Данный способ актуален только на прошивках 2.x.x На прошивке 3.0 и выше Вам придётся копировать кэши вручную.
1. На телефоне должна стоять джейлбрейкнутая прошивка
2. Вам потребуется программа, с помощью которой вы зальёте карты в телефон.
Лучше всего воспользоваться:
iFunBox - для Windows http://www.iphones.ru/forum/index.php?showtopic=26959
DiskAid тоже сгодится. http://www.iphones.ru/forum/index.php?showtopic=25767
DiskAid - для Mac. http://www.iphones.ru/forum/index.php?showtopic=25767
А вот PCSuite и всякие SSH-клиенты лучше приберечь для другого случая
3. Ставим из Cydia -> Utilities программу OfflineMaps. 4. Скачиваем нужные кэши карт. Здесь нужно помнить, что если у вас прошивка 2.2 или выше, то качать нужно карты для 2.2, потому как для ранних прошивок использовался другой формат кэша, несовместимый с новыми.
Кеши карт для 2.2 (большей частью на торрентах): Москвы и области (без торрентов http://narod.ru/disk/4261235000/MapTiles_Moscow.rar.html ) http://torrents.ru/forum/viewtopic.php?t=1358386, Питера(http://torrents.ru/forum/viewtopic.php?t=1295826), Иркутска(http://torrents.ru/forum/viewtopic.php?t=1390157), Киева(http://torrents.ru/forum/viewtopic.php?t=1473903) (без торрентов http://upload.com.ua/get/900675961/ )
Кеши карт для 2.1 и ранее: тут http://iphone.l0rda.biz/maps/
Если у вас 2.2 (или выше) и нету торрентов - не беда: качайте старые, а затем загоните их в Конвертер карт (http://imapsmanager.com/mapConverter/mapConverter.htm) (не забудьте поставить галочку "Переносить частичные фрагменты" или в английской версии "Transfer patial tiles").
Таким образом, к концу этого пункта, считаем, что у вас в компьютере есть каталог (например, ”GoogleMapsCaches”) с подкаталогами, в которых лежат карты тех мест, которые вы хотите засунуть в iPhone: например есть подкаталог "Moscow" (c двумя файлами "MapTiles.sqlitedb" и "com.apple.Maps.plist") и есть подкаталог "Piter" с двумя файлами с такими же именами.
5. Скачиваем закладки для выбранных местностей (например, к Москве и Питеру приложены к данной теме). Оригинальное название любого файла закладок "Bookmarks.plist", но вы переименуйте его - чтобы не перепутать в "<название местности>.plist" (в приложенном архиве они уже переименованы). Кладём их в наш каталог GoogleMapsCaches на компьютере.
К концу этого пункта считаем, что в вашем временном каталоге GoogleMapsCaches находится следющее: подкаталоги с названиями местностей, в которых лежат скачанные в п.4 кэши и отдельно несколько файлов с названиями типа "moscow.plist" или "piter.plist". Если подкаталогов не будет, то после выполнения п.6 программа повиснет!
6. Заливаем содержимое нашего каталога GoogleMapsCaches на iPhone в /private/var/mobile/Media/Maps/ (не перепутайте!), используя выбранную в пункте 2 программу. Если в "/private/var/mobile/Media/" у вас нет подкаталога "Maps", создайте его.
7. Фактически всё. Далее всё интуитивно понятно:
а) Заходим в приложение OfflineMaps на iPhone, выбираем тот кэш, который нам нужен, и жмём "Объединить" (см. на картинках ниже). Он недолго пораскинет мозгами и рапортует об успехе.
б) Опускаемся чуть пониже и выбираем соответствующий файл закладок и жмём "Копировать" (см. на картинках ниже).
Затем после этого можно смело идти в "Карты" и пользоваться кэшем без подключения к интернету. А иконка приложения изменится и будет указывать на активный кэш.
P.S. Если кто сделает или найдёт файл Directions.plist для любого российского региона - это будет класс.
Данный FAQ проясняет некоторые принципы работы стандартного приложения Maps.app ("Карты") и прежде чем задать вопрос, прочитайте это. Также, после прочтения вы поймёте, что вы делаете, когда выполняете вышеуказанную инструкцию.
Вопросов по "Картам" много. При этом, как от пользователей официальных (неджейлбрейкнутых) телефонов, так и разломанных в пух и прах. И в большинстве случаев они сводятся к тому, как превратить приложение в полнофункциональный автономный софт для спутниковой навигации (типа, например, iGO или TomTom). Скажу сразу: это невозможно.
Tеперь их необходимо положить у указанные директории. Сделать это можно разными способами:
I. Первый заключается в простом копировании нужных файлов в нужные папки. Это можно сделать, например, приложениями, рекомендованными в теме с инструкцией. Только придётся подумать про права - т.к., приложение имеет привычку менять содержимое своего кэша. На мой взгляд, это нудобно и непрактично.
II. Второй же способ - поставить приложение, которое само будет подключать нужные кэши и файлы закладок. Это куда более гибко и безопасно - не заставляет вас самих менять какие бы то ни было файлы, используемые "Картами" и выставлять права. Кроме того, этот способ позволит вам залить несколько кэшей карт и переключаться на нужный в поездках. Именно он и приводится в инструкции.
* Поиск по карте реализуется набором текста в поле поиска и нажатием кнопки "Найти". Его не следует путать с поиском в закладках, который осуществляется автоматически при наборе текста в поле поиска.
** Определение текущего местоположения в приложении "Карты" осуществляется нажатием одной кнопки с прицелом. Однако в простом интерфейсе заложен достаточно сложный алгоритм. Отметим несколько особенностей:
Поскольку Ф_БС работает заведомо быстрее, чем Ф_GPS, то в любом случае мы увидим сначала "прицел" (если Ф_БС хоть что-то определил), и только через некоторое время - синюю точку.
3. Немного подробнее о функции Ф_БС (её также часто называют "Триангуляцией"):
Сотовый телефон, зарегистрированный в сети, "помнит" шесть ближайших базовых станций. "Помнит" - это значит, что он знает их номер (Cell ID), а также, номер локации, в которой находится эта базовая станция (Location Area Code или LAC). При этом, к одной из них он подключён.
Первым делом "Карты" пытаются раздобыть информацию о местонахождении локации станции, к которой подключен телефон (используя LAC 6-ти ближайших базовых станций) . Если эта информация найдена, то после работы алгоритма на грубой карте рисуется большой прицел (как на первой картинке). Далее вступает в действие алгоритм определения местонахождения с использованием информации о покрытии 6-ти ближайших базовых станций (используя также их Cell ID). Для этого приложению необходим интернет, т.к. в кэше оно хранит только покрытие 6-ти ближайших станций, которые достаточно часто меняются (честно говоря, я в этом не уверен, но практика показывает, что это так - если у кого-то будет более подробная информация о принципе кэширования этой информации, буду рад обновить пост). Если информация найдена, то после работы алгоритма на более детальной карте рисуется маленький прицел (как на второй картинке). Это предел точности определения с помощью базовых станций.
4. Если за время работы Ф_БС приёмник GPS нашёл определённое количество спутников, то "Карты" даже в случае неудачного завершения Ф_БС решают дождаться завершения работы Ф_GPS (т.е. дождаться пока GPS найдёт необходимое количество спутников и вычислит местонахождение).
5. Сообщение о том, что невозможно определить местонахождение выдаётся тогда, когда не сработал Ф_БС (не нашёл необходимой информации), а приёмник GPS не видит спутников ("Карты" считают, что Вы в помещении - и без интернета и прекращают тратить батарейку, пытаясь что-нибудь найти).
Теперь рассмотрим несколько стереотипных вопросов:
Вопрос 1. Почему у меня на прошивке 2.2 при поиске вылетает приложение?
Ответ: скорее всего, оттого, что до этого установили патч, меняющий полоску в "Контактах". Поиск использует имена контактов (т.к. возможно к контактам добавлять закладки с их адресами), и его колбасит, если будет изменён оригинальный файл "Контактов". При установке полоски из "Русского Проекта" приложение не вылетает, т.к. они оригинальный файл не меняют (на правах рекламы svs.gif ).
Вопрос 2: Почему когда я стою на улице при нажатии на кнопку "определить моё местонахождение", приложение выдаёт "Не удалось определить местонахождение" и перестаёт искать? У меня что, GPS не работает?
Ответ: Почитайте внимательно принцип работы. Скорее всего, с GPS у вас всё в порядке, просто от не нашёл ни одного спутника к моменту подтверждения отсутствия интернета (для определения местонахождения по базовым станциям). Попробуйте ещё раз через минуту.
Вопрос 3: Почему при нажатии на кнопку "определить моё местонахождение", приложение выдаёт "забрасывает" меня к чёрту на кулички?
Ответ: Дело в ошибке определения координат по базовым станциям. А точнее, в принципе сбора Google'ом информации о покрытии базовых станций - ведь эта информация представляет тайну операторов связи и не подлежит разглашению! Дело в том, что мы сами наболняем БД Google, когда включаем GPS, "Карты" и интернет одновременно. Ваши координаты попадают в БД Google вместе с кодом страны, кодом оператора, кодом локации (LAC) и кодом соты (CellID). Однако, уникально только сочетание всех четырёх кодов, а все остальные комбинации могут повторяться. А теперь представьте, что вы так сыграете из роуминга. В базу может попасть сочетание, задающее вообще другую базовую станцию другого оператора. У Google есть премодерация данной БД (чтобы не допустить такого), однако и их алгоритмы изредка дают сбои. Чтобы исправить ситуацию, включите Edge, GPS и "Карты" и походите в вашем регионе. Дней через 10 всё пройдёт.
Вопрос 4: У меня работает интернет, но при попытке в поиске найти что-либо, я получаю "Поиск не дал результатов". Доктор, что делать?!
Ответ: Без паники. Такое бывает, когда сервер Google не очень корректно преобразовывает ваш запрос к своей базе. Если вы заметили, в таком случае обычно ваш запрос преобразовывается в строке поиска в куда более расширенный вид (с автономным округом, индексом и пр.). Так вот, в преобразованном виде всё перечисляется через запятую, а это неправильно. Уберите ручками запятые из запроса и всё найдётся. Почему возникает эта ошибка, я пока не разобрался - изучаю.