Загоревшись после недавней статьи я решил реализовать свою мечту, сделав то же самое для своего самого обычного телефона.
Скачать можно тут
Сразу кидаю ссылку на GitHub с описанием проекта и фич, а некоторые подробности под катом
На самом деле, все подробности описаны на страничке по ссылке выше. Так что поделюсь тем, что там не указано. В статье не описан процесс пошагового создания приложения, скорее просто заметки.
Прежде всего большое спасибо читателям passerby, kwikpik, shuler за очень важную информацию в комментариях к статье
Вкратце ещё раз расскажу суть:
- запрашиваем статическую картинку с Google maps
- запрашиваем картинку с сайта общественного транспорта
- накладываем одно на другое
- ???
- PROFIT!!!
Какие проблемы возникали:
Самая большая проблема — определение BBOX.
Прежде всего, нужно получить координаты видимого прямоугольника. Точный метод расчета мне честно было лень искать, так что я пошёл в лоб и вывел коэффициент «градусов широты/долготы на 100 пикселей».
Следующей загвоздкой стало преобразование координат из WGS84 Datum в Spherical Mercator EPSG:900913.
Нужный код был найден здесь. А вот этим товарищам спасибо за замечательную реализацию Math.util в j2me.
Геокодирование
Вводить координаты вручную ужасно, нужен гугловский геокодер.
Чтобы приручить его, мне потребовался
URLEncoder отсюда
и JSON парсер отсюда
Далее обращаемся к геокодеру (указав в качестве области СПб) и радуемся жизни.
Какие проблемы еще не решены
- Неполная поддержка русского языка. А именно, в выдаче гугла могут появляться крякозябры, по той же причине меню на английском. Знаю, что проблема решается, но почему-то лень мне ей заняться.
- Хорошо бы поддерживать телефоны с GPS. Никогда с этим не работал, соответствующего девайса под рукой нету, так что только если может быть когда-нибудь...
- Также хотелось бы добавить список прибывающих к ближайшей остановке маршрутов, но тут я столкнулся с теми же проблемами, что и авторы аналогичных приложений
- Нет адекватной обработки ошибок и вообще внутри точно есть ещё куча багов
С радостью делюсь проектом, кодом, да будет всем счастье. Тем более сегодня такая солнечная погода :)
p.s. Как же люблю java за то что такую штуку можно сотворить менее чем за сутки.
Автор: iPavel