Пользователь
0,0
рейтинг
5 мая 2012 в 16:57

Разработка → Spb Transport J2ME

Загоревшись после недавней статьи я решил реализовать свою мечту, сделав то же самое для своего самого обычного телефона.

Скачать можно тут
Сразу кидаю ссылку на GitHub с описанием проекта и фич, а некоторые подробности под катом


На самом деле, все подробности описаны на страничке по ссылке выше. Так что поделюсь тем, что там не указано. В статье не описан процесс пошагового создания приложения, скорее просто заметки.
Прежде всего большое спасибо хабраюзерам passerby, kwikpik, shuler за очень важную информацию в комментариях к статье

Вкратце ещё раз расскажу суть:

  1. запрашиваем статическую картинку с Google maps
  2. запрашиваем картинку с сайта общественного транспорта
  3. накладываем одно на другое
  4. ???
  5. 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+ страница с текущим статусом разработки и обновлениями
Иванов Павел @iPavel
карма
55,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (13)

  • +2
    Отличная новость!
    Я уж было думал сливать свою трубку только из-за отсутствия данного приложения))

    Nokia 3250
    Установил, запустил. Прога не просится сама в интернет, только после того как сделал поиск по местам, прога зашелестела и подключилась к интернету. Да, GPS было бы тоже неплохо прикрутить, но пусть она хотябы с центра Питера запускается да и все.
    Но самое обидное в вашей реализации что карта не скроллится ни вертикально ни горизонтально((
    • +1
      Спасибо, приятно.
      Подумал про скролл, решил что не буду его делать.
      Обоснования:
      1. это не то чтобы очень, но сложнее.
      2. значительно больше трафика на карту нужно. владельцы андроида и айфона привыкли к безлимиту, я его поключаю только летом на дачу.
      3. загрузка карты будет идти дольше (ибо последующие разы она грузится кеша уже)
      4. самое главное — юзкейс в том, чтобы смотреть карту около остановки, которой пользуется человек. Обычно, таких не очень много, я посчитал это удобным. Плюс так (выбрав место из списка) намного быстрее получить ответ.

      Запускать из центра питера неразумно, ибо я, например, живу на севере. Специально для этого первым экраном появляется список мест.
      • +1
        Так вам спасибо)
        Насчет скролла. Фича данной программы для меня определяется тем что она позволяет как бы «заглянуть за горизонт», если искать по конкретному месту где я на остановке стою, я и глазами смогу увидеть приближающийся транспорт, а при возможности скролла смог бы посмотреть насколько далеко от меня нужный транспорт, хотя бы зум)

        Еще предлагаю рассмотреть следующие баги/фичи вашего приложения:
        1. Огорчает что приложение работает не в полный экран, а только до значков сети/аккумулятора, т.е. использует 2/3 дисплея.
        2. Возможно ли рассмотреть подключение кэша карт гугла или яндекса для уменьшения трафика?
        3. По названием остановок искать не умеет, а если искать просто по улице то попадешь на ее середину, а ночером в незнакомом районе не хочется дворы обхоодить в поисках номера дома.
        4. Приложение не смогло установится на нокиа 3-00.
        • 0
          Насчет скролла передумал, есть идея его всё-таки сделать, но он будет не плавным (по крайней мере пока что), а как на уровнях в денди — сразу на экран в сторону. Обновляться соответственно будет только текущий просматриваемый экран, ну или сразу все кусочки карты которые были открыты. Пока что решение примитвное как камень — выбирать для просмотра адрес не остановки, а пары остановок до той, которая нужна.
          Вообще, уровень масштаба выбирался исходя из того, чтобы было видно всё в районе ~3 кварталов, наверное, потому что обычно мне надо проехать 1-2 остановки, а их как раз и можно сэкономить, проходя пешком, если транспорта нет.

          1. это поправимо, сделаю.
          2. в смысле, если на телефоне установлены j2me приложения гуглкарт или яндекскарт? нет, ну или я не знаю о такой магии (если вдруг кто знает, буду крайне рад почитать, как.)
          3. по остановкам скорее всего искать и не будет, за основу взят гугловый механизм,
          4. нокия 3-00?
          p.s. когда я пишу сделаю, это означает скорее что когда появится свободное время, а то на эти праздники запланирована учёба.
  • +1
    На W800 работает отлично. Огромное спасибо!
  • +1
    Сегодня тоже помониторил сервис. Удивительно, но транспорт реально в real time. Т.е. если задержка и есть — то она минимальна (оверял на быстроедущем транспорте)

    Правда, в моем районе нет 80% троллейбусов и одного автобусного маршрута
  • +1
    SE W200i, работает нормально.
  • +1
    На samsung 3220W вылетает при попытке поиска улицы
    • 0
      *3222W
    • 0
      хе-хе, вот чувствовал, что если будет телефон, на котором всё упадет, то самсунг. не люблю я их :)
      1. при нажатии на пункт меню «Search place» или уже на экране с вводом адреса при нажатии на ОК?
      2. текст exception'а выдает?
      исправить не обещаю, но если будет очевидно, пофиксю
      • +1
        Search place, ввожу улицу, дом, жму OK, выходит обратно к списку установленных java-приложений молча.
        • 0
          Ясно, спасибо.
          Могу посоветовать только вводить координаты вручную. В лабах гуглмапс есть отличное дополнение — ставить метку с координатами из контекстного меню. Может быть так сработает…
  • 0
    Создал страницу в G+, куда буду писать новости по проекту

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.