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