Сохранение и работа с метками Яндекс.Карт на Андроиде

Jan 27, 2011 13:10


Насколько я понял, реализация мобильных Яндекс.Карт на Андроиде отстаёт от аналогичных решений на, скажем, Симбиане. В частности, вносимые пользователем метки хранятся локально в базе sqlite3, причём хранятся не на SD карточке, а в памяти телефона (на /data).

Проблема в том, что после перепрошивки (скажем, со штатной на CyanogenMod) или хард-ресета ( мне приходилось его однажды делать) все ваши метки бесследно исчезают. Конечно, хотелось бы, чтобы они хранились или на SD карточке, или в гуглооблаке, или в яндексе, но увы, пока это не так.

Приходится заботу о метках брать в свои руки. Последующий текст предполагает, что у вас есть компьютер, на котором стоит ADB, а телефон присоединён к компьютеру через USB. Возможно, всё это работает только на рутованном телефоне!

Чтобы скачать метки с телефона на компьютер:
adb -d pull /data/data/ru.yandex.yandexmaps/databases/labels.db

В случае, если вы используете модифицированные Яндекс.Карты' от Александра Хохлова:
adb -d pull /data/data/ru.yandex.yandexmaps.khokhlov/databases/labels.db

Метки можно редактировать с помощью командной строки sqlite, если вы знаете SQL:

sqlite3 labels.db SQLite version 3.6.23.1 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .mode line sqlite> SELECT * from sqlite_master; type = table name = android_metadata tbl_name = android_metadata rootpage = 3 sql = CREATE TABLE android_metadata (locale TEXT) type = table name = mylabels tbl_name = mylabels rootpage = 4 sql = CREATE TABLE mylabels (_id INTEGER PRIMARY KEY,label_name TEXT,label_name_tolower TEXT,lat LONG,lon LONG,geocode TEXT,date LONG) sqlite> SELECT * FROM mylabels LIMIT 1; _id = 1 label_name = Офис label_name_tolower = офис lat = 55.8746625377941 lon = 37.5884219154757 geocode = Россия, Москва, Алтуфьевское шоссе, 44 date = 1292572012292

Обратно в телефон labels.db запихиваются тоже через adb, только вместо pull говорим push:
adb -d push labels.db /data/data/ru.yandex.yandexmaps/databases/labels.db
или для карт от Хохлова:
adb -d push labels.db /data/data/ru.yandex.yandexmaps.khokhlov/databases/labels.db

linux, howto, android, yandex.maps, yandex

Previous post Next post
Up