Закладки для МЯК: перенос точек из "Моих карт" в Мобильные Яндекс.Карты

Mar 12, 2013 18:45



Многие пользователи Яндекс.Карт на мобильном сталкивались с необходимостью нанесения на карту каких-то точек на компьютере, которые потом можно было бы увидеть на телефоне на тех же картах. К сожалению Яндекс изначально как-то не учел эту надобность и так до сих пор и не учитывает. Многочисленные попытки пользователей взывать к сочувствию разработчиков Мобильных карт так до сих пор не увенчались успехом: синхронизировать "Мои карты" в вебе и закладки в Мобильных картах нельзя!

Закладки для МЯК

Являясь активным пользователем Яндекс.Карт, в том числе и мобильной их версии, я также часто недоумевал об отсутствии такой синхронизации. Ведь в мобильных картах даже авторизация есть. В общем некоторое время ковыряя премудрости геолокации в Яндексе я создал небольшое веб-приложение для конвертации точек из "Моих карт" в закладки для мобильных яндекс-карт. На самом деле конвертировать там можно из разных источников и все не так просто, но техническая возможность все-таки появилась. Итак, переходим на Закладки для МЯК
. Оговорюсь сразу, что я решил сделать более менее универсальную штуку для различных целей, но так или иначе все они служат для взаимодействия "больших" карт с мобильными.



Для начала выбираем источник данных для списка точек - кнопка "Добавить..." (1). Источником может служить экспортированный из веб-карты файл в формате KML или файл закладок мобильных карт - labels.db (Об этом позже). Их можно загрузить с компьютера или сразу из Интернета по ссылке - кнопка "Добавить по URL...". После загрузки файла внизу появится список его точек (3), а также представляющая этот файл кнопка с названием карты (2). Далее каждый загружаемый файл будет иметь такую кнопку (2), а его точки добавляться в конец списка ниже (3). Таким образом можно объединять несколько списков точек из разных источников. Список можно очистить, можно редактировать его данные или добавить точки в другом порядке. Наигравшись со списком точек, попробуем его экспортировать, нажав кнопку "Экспорт" (5) и выбрав один из доступных форматов (4). Осталось только сохранить экспортированный файл на своем компьютере и использовать по назначению...

Файл labels.db и есть закладки

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

Во 2-й версии МЯК (2.12, 2.21 и т.д.) файл закладок labels.db хранится во внутренней памяти телефона по адресу /data/data/ru.yandex.yandexmaps/databases/labels.db. Вот отсюда его и берем, чтобы потом загрузить в приложение "Закладки для МЯК". В этой же папке хранится, кстати, и файл с учетными записями для МЯК. После манипуляций с точками в "Закладках для МЯК" надо экспортировать новый labels.db. По умолчанию имя файла будет my_labels.db, чтобы не затереть оригинальный файл ваших закладок. Далее надо его переименовать в labels.db и перезаписать в папку на телефоне, откуда вы его брали. Теперь можно перезапустить Мобильные карты на телефоне и убедиться в появлении новых закладок. Если этого не произошло, убедитесь в том, что права на файл закладок выставлены хотя бы как 666, т.е. чтение/запись (RW) для всех.

В 3-ей версии МЯК файл с закладками дублируется также на SD-карту по адресу /sdcard/yandexmaps/data/bookmarks/labels.db. Но это лишь его копия, и изменения в нем не имеют никакого эффекта, а управляющий файл с закладками находится все равно в памяти телефона, там же, где и во 2-й версии.

Так уж получилось, что сейчас временно перешел на Symbian 9.4 (Nokia 5230) и конечно же установил МЯК отсюда. Так вот там закладки расположены в виде kml по адресу \Phone memory (NOKIA)\documents\YandexMaps\landmarks\persistent.xml.


Закладки МЯК для Android

Теперь у пользователей Android'ов есть возможность легко управлять файлами закладок с помощью моего приложения Закладки МЯК. Заменить файл закладок теперь можно буквально в один тап! Как обычно требуется @root-доступ. Не стал выкладывать на Google Play, ибо это стоит $25 (если кто желает помочь, милости прошу!). Обсуждение приложения в клубе Мобильных Яндекс.Карт тут.

Готовлю к выпуску Закладки МЯК Pro с возможностью редактирования самих файлов закладок, включая добавление, удаление, и собственно редактирования закладок.

Где взять файл KML с точками

Формат KML является расширением XML и появился благодаря программе Google Earth для представления трёхмерных геопространственных данных, грубо говоря, чтобы технически описывать координаты точек. Файл KML с точками на картах Гугл
можно получить следующим образом: открываем или создаем свою карту в "Моих местах", предварительно авторизовавшись, и затем нажимаем ссылочку "KML" под названием карты (обратите внимание, что рядом со ссылкой "KML" есть еще голубенький значок - это НЕ то, что вам нужно). В Яндекс.Картах
авторизуемся, создаем или открываем карту в разделе "Мои карты", нажимаем кнопку "Ссылка на эту карту" и копируем ссылку на KML-файл. Далее ее можно вставить в адресную строку браузера, чтобы сохранить KML-файл на компьютере или прямиком загрузить в "Закладки для МЯК", нажав там кнопку "Добавить по URL...".

Данное приложение не претендует на панацею и 100% гарантию работоспособности, но все же, надеюсь, поможет вам решить задачу по синхронизации закладок с мобильными картами. Прошу оставлять комментарии по ошибкам, косякам и предложениям по улучшению в комментариях к этому посту или прямо там на страничке приложения
.

Про порядок закладок

Одной из целей, которые я преследовал, когда создавал «Закладки для МЯК» было изменение порядка в котором закладки представлены в МЯК. У меня их не так много, но самые главные - Дом, Работа, Ашан, как и у многих, подозреваю, наиболее часто используемы. Но вот место в списке они занимают порой совсем неподходящее. Вроде бы есть способ изменить порядок - внести правки прямо в МЯК, название например изменить и тогда закладка переместится наверх. Теперь можно закладки отсортировать как вам угодно.

Добавив точки в список (3) можете нажать на любой заголовок столбца и изменить порядок закладок. Чтобы четко установить нужный вам порядок, изменяете номер строки (первая колонка) и сортируете список по первой колонке. Например, у вас 5 закладок, которые изначально имеют соответственно номера 10,20,30,40,50, и вам надо четвертую закладку сделать второй. Вы изменяете ее номер: 40 -> 12 (любое число между номерами строк, где она должна будет находится), нажимаете "Enter", чтобы зафиксировать изменение и сортируете еще раз список по первой колонке. Теперь можно экспортировать. Кстати, такую методику сортировки позаимствовал у ЖЖ: Стиль журнала -> Настройте свой стиль -> Список ссылок
.

Если вдаваться в технические тонкости, то МЯК сортирует закладки по дате. Когда вы делаете экспорт из «Закладок для МЯК», программа проставляет текущую дату и время в формате unix для каждой закладки, начиная с первой, уменьшая ее на 10 миллисекунд.

UPD 05.05.2014: Только что обнаружил, если установить номер строки, как 2 или 3, то при сортировке, эти номера окажутся не как ожидалось до 10, а между 10 и 20, и 20 и 30. Чтобы этого избежать, надо номер назначать с ведущим нулем, т.е. 01, 02, 03 и т.д. Поправлю позже этот момент, чтобы сортировка работала прилично. И еще нужно учитывать, что только сменив номера строк, в МЯК порядок не изменится. Надо обязательно после смены номеров отсортировать по первой колонке таблицу.

Про формат GPX и WPT

Один из доступных для экспорта форматов - GPX, может быть использован в качестве файла путевых точек для программы Navitel
. Теперь форматы GPX и WPT доступны также и для импорта. Файлы wpt почти идентичны gpx и являются, например, файлами закладок из старых версий МЯК для Windows Mobile. Единственное ограничение - кодировка UTF-8 "без bom" или ANSI as UTF-8. Это, кстати, справедливо и для других форматов. В будущем постараюсь сделать перекодировку.

История изменений

2014-10-17
Передал дальнейшую разработку ребятам iBuddy.ru

2014-02-18
Закладки МЯК 1.2 - добавил автоматическую установку прав на файл закладок МЯК (в тестовом режиме пока)
Закладки МЯК 1.1 - добавлено меню и справка.

2014-02-16
Написал Закладки МЯК (Android) для управления файлами закладок на телефоне.

2014-02-08
Добавил подсказку о пути к labels.db на страницу приложения и указал популярные приложения для форматов экспорта(спасибо dr_vlad);
Имя кнопки при добавлении KML теперь берется из имени списка закладок;
Исправил отображение многострочных описаний точек, в том числе убрал двойные переносы строк. Слегка изменил ширину колонок в пользу описания.

2014-02-07
Убрал кодировку кавычек в названиях и описаниях точек при экспорте в labels.db. Надеюсь, это не повредит)

2013-06-05
Исправил ошибку из-за которой вылетал МЯК после замены файла закладок

2013-05-10
Уже наверное неделю или больше у меня не работает хостинг. Сегодня оформлю другой, буду на него все переносить.

2013-03-19
Поправил загрузку по URL
Добавил импорт WPT и GPX

Disclaimer и Copyright:
Права на приложение «Закладки для МЯК» и все его части, а также данный пост принадлежат пользователю kolyaseg (kolyaseg.ru). Вы используете приложение на свои страх и риск, а любой возможный ущерб, связанный с использованием данного приложения не может быть предъявлен к возмещению автору.

полезно, Яндекс, я, программа

Previous post Next post
Up