Компания
493,49
рейтинг
19 февраля 2014 в 10:09

Разработка → Новый интерфейс Яндекс.Метро и технологии, с помощью которых он работает

Сегодня мы запустили новую версию веб-интерфейса сервиса Яндекс.Метро. Теперь в новом «островном» дизайне доступны схемы метрополитена пяти городов. Но мы обновили не только визуальную часть, но и перенесли всю логику с серверной стороны на клиентскую.

image

В этом посте мы хотели бы рассказать, как именно мы это делали, какие решения выбирали и почему.

Сервис Яндекс.Метро был запущен в далеком 2007 году. С тех пор веб-интерфейс практически не развивался, дизайн выглядел откровенно устаревшим. Почтенный возраст сервиса сказывался и на технической стороне. Все схемы представляли собой наборы изображений в формате GIF, на которых при помощи координат размещались объекты. Из-за этого возникали трудности с обновлением графа, нельзя было самостоятельно вносить изменения в схему (приходилось привлекать аутсорсеров, заказывать у них картинки). Так как названия станций также были вшиты в картинки, локализация схем потребовала бы генерации полных наборов GIF-изображений.

Никто из разработчиков серверной части сейчас над этим сервисом не работает, а документирована она очень слабо. Так что бэкэнд старого Яндекс.Метро — это в некотором роде черный ящик, который умел принимать параметры и возвращать маршруты. Однако поддерживать его при этом было крайне трудно. Сервис определенно требовал обновления, и главный вопрос заключался в том, как максимально приблизить его по уровню технологий к мобильным приложениям.

Нельзя сказать, что Яндекс.Метро было совершенно заброшено, у него есть достаточно широкая аудитория. Веб-интерфейс ежедневно посещает около 220 тысяч человек, приложение для Android скачано 3 миллиона раз, для iOS – 1 миллион загрузок. Стоит отметить, что мобильные приложения разрабатывались несколько позже веб-версии, и лишены большинства ее недостатков.

При разработке нужно было учесть несколько важных перемен, произошедших с момента запуска Метро:
  • Технологии визуализации в браузерах шагнули далеко вперед, отрендерить карту на стороне клиента уже не составляет никаких проблем.
  • Сильно улучшилась производительность JavaScript-движков. Многие задачи, которые раньше можно было делать только на сервере, теперь вполне выполнимы на клиентской стороне.
  • Снизилась доля устаревших браузеров. IE6 и IE8 почти не встречаются, а значит, нет причин использовать GIF.

Как разрабатывалась новая версия


Для воспроизведения графа были использованы те же данные что и для мобильных приложений. У них уже была собрана база XML-файликов, каждый из которых содержал по одной схеме и данные о связанности графа. Это также упростит локализацию: в ближайшее время все схемы будут переведены на разные языки.

В самом начале разработки встал вопрос о том, какую технологию использовать для отрисовки схемы: canvas, SVG или CSS3. Рассматривался также способ отрисовки через визуализационную библиотеку RaphaelJS. Эта библиотека рисует в SVG, но если она обнаруживает IE8, отрисовка происходит в VML, чем обеспечивается максимальная кроссбраузерность.

Сначала на основе XML-файлов было написано три прототипа схемы: на canvas, SVG и RaphaelJS. Все три варианта были прогнаны через бенчмарки. По результатам самым быстрым оказался SVG-вариант, за ним с не очень значительным отставанием последовал canvas, а самым медленным оказался вариант на основе RaphaelJS. Слишком уж много времени тратится на подгрузку и исполнение кода, проверяющего, какие функции доступны в используемом браузере. На ста итерациях отрисовки у нас получились следующие результаты в Chrome и Firefox соответственно:

technology time_to_download time_to_draw overall_time
canvas 34.58 ms 181.72 ms 216.30 ms
svg 28.02 ms 74.02 ms 102.07 ms
svg-raphael 45.87 ms 1147.58 ms 1193.45 ms
technology time_to_download time_to_draw overall_time
canvas 55.26 ms 769.16 ms 824.42 ms
svg 102.60 ms 136.51 ms 239.11 ms
svg-raphael 148.40 ms 2369.88 ms 2518.28 ms

Таким образом, окончательный выбор стоял между canvas и SVG. У canvas есть свои преимущества, но для рисования векторных схем SVG подходит лучше. Дело в том, что SVG-элементы хорошо вписываются в DOM страницы. А значит, можно обращаться к ним как к обычным DOM-нодам со знакомым интерфейсом, отлавливать события и т.д. Кроме того, в векторном формате отпадает необходимость перерисовывать схему при изменении масштаба.

Чтобы иметь возможность выделять маршруты на схеме, потребовалось разделить ее на слои. Самый нижний слой предназначен для статичных объектов, помогающих сориентироваться. В будущих версиях там будут отображаться реки и другие заметные элементы ландшафта. На среднем слое рисуется вся схема. Самый верхний слой – это слой маршрута. Чтобы иметь возможность выделять его, между ним и слоем общей схемы есть еще один слой: подключая его, мы обеспечиваем размытость общей схемы.

image

Позже для удобства разработки и присваивания CSS-стилей слой с общей схемой был разбит на три: с перегонами, станциями и переходами.
У новой схемы есть неоспоримые преимущества: она векторная, ее можно масштабировать без написания дополнительного кода, ее проще поддерживать и добавлять дополнительные фичи. К сожалению, изменения в схему пока вносятся вручную через XML-файлы, но даже это проще, чем было в изначальной версии.

Поиск путей на графе


Вся логика прокладки маршрутов в старой версии Метро исполнялась на серверной стороне. На каждое действие пользователя на сервер отправлялся запрос, там просчитывался новый вариант и отправлялся ответ. Для расчетов применялся алгоритм Дейкстры с небольшими модификациями для поддержки поиска нескольких маршрутов, например, можно обрубить последнее ребро и продолжить поиск путей.

Примерно тот же алгоритм использовался и при создании мобильных приложений, но так как разрабатывались они несколько позже, в них применены более современные технологии и подходы. Там вся логика уже перенесена в клиентскую часть. В iOS-версии граф представлен в виде матрицы смежности, в Android-клиенте реализована объектно-ориентированная модель. Станции представлены в виде JS-объектов, у каждого из которых есть массив линков — перегонов. Эти соединения также являются объектами.

При выборе основы для веб-интерфейса рассматривались оба варианта. Но модель из приложения под Android показалась нам более оптимальной.

Фильтрация результатов поиска


На каждый запрос маршрутизатор возвращает порядка 30 маршрутов. Релевантных из них очень мало – не больше 10%. Но проблема заключается в том, что у многих пользователей разное понимание об «оптимальном маршруте». Некоторые предпочитают скорость, а некоторые – комфорт. Девушка на высоких каблуках будет готова потратить лишние 10 минут, чтобы не идти по длинному переходу, а вот для человека, опаздывающего на самолет, эта разница будет критичной. А значит, маршруты нужно оценивать по разным критериям.

Чтобы не усложнять всю систему, были разработаны специальные фильтры: класс объектов, интерфейс которых состоит из одного метода, выполняющего одно простое действие. Также были добавлены композитные фильтры, содержащие множество фильтров. Они применяются к массиву маршрутов по заданному разработчиком порядку.

Теперь фильтрация вынесена в отдельный модуль. Это позволит нам в ближайшем будущем унифицировать процесс фильтрации на всех платформах. Таким образом, выбор маршрута не будет зависеть от того, с какого устройства введен запрос.

image

Архитектура клиентского приложения


При разработке MVC мы воспользовались уже имеющимися в Яндексе наработками: JS-библиотеками, отвечающими за островной дизайн, логику, хранение данных и оповещение компонентов о пользовательских действиях и изменениях состояний.

Планы


Непосредственно после запуска нового варианта сервиса мы планируем привести нашу схему в соответствие с официальной. Далее мы внедрим некоторые функции которые уже есть в мобильных приложениях. Например, информацию о том, из каких вагонов удобнее всего делать пересадку. Также мы реализуем уже заложенные в архитектуре фичи: возможность выбора маршрутов и перевод схем на несколько языков. Кроме того, в планах разработка визуального инструмента для внесения изменений в схему. Пока что любые изменения вносятся путем правки xml-файлов. Если же появится визуальный редактор, один контент-менеджер сможет оперативно вносить изменения одновременно под все платформы.
Автор: @genarcho
Яндекс
рейтинг 493,49

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

  • +49
    А пробки метро почему не показывает?
    • +20
      А чем это поможет? Поедете другим метро?
      • +8
        1) можно прикинуть время — если судя по пробкам влезть можно только в третий состав, надо закладывать на 3*1.5=5 минут больше времени
        2) вопрос на какой станции садиться — иногда есть выбор из 2-3 станций, где можно сесть
        3) планирование комбинированного маршрута
        • –8
          Это всё какие-то исключительные случаи. Третий состав? Да с открытием Жулебино, даже на Выхино неактуально. Выбор станции, комбинированный маршрут? Очень редкие случаи. Не говоря уж о том, что технически информацию о «пробках» даже собрать трудно, не то что оценить время.
          • +5
            Не знаю. В нашей деревне на студенческой утром вполне можно пропустить 2-3 поезда.
            • 0
              Ну, я тоже иногда пропускал три поезда, чтобы посвободнее было. Один, например, полный из-за длинного интервала (или предыдущий ехал в депо), следующий свободнее, но едет в депо, загрузка третьего тоже зависит от того, как быстро приедет. Но это всё же не про пробки. Да и такое ежеминутное изменение ситуации говорит не в пользу показа «пробок» — информация быстро устаревает.
              • 0
                станция «Выставочная» вечером — прекрасное зрелище.
                Пару раз имел неосторожность там оказаться, и кажется пешком до Кутузовского может быть быстрее (но не засекал)
          • 0
            Теперь на этой ветке ещё хуже стало. До Выхино народ забивается, что ездить ещё сложнее. Теперь проблема человеческих пробок не только на Выхино, но и дальше по всей ветке только усугубилась.
        • +3
          Это не особенно актуально. Время таких пробок известно: с 7 до 10 и с 17 до 20 с понедельника по пятницу :)
          Гораздо актуальней было бы показывать сбои на линиях, когда в метро лучше не соваться вообще.
    • 0
      Идея-то хорошая, только как данные собирать? Это ж не наземные пробки, по которым едут сотни людей с открытыми яндекса-картами.
      • –1
        не знаю. вживить чипы с Яндекс.Метро каждому входящему? На выходе извлекать и вживлять следующему?
        записью с камер? рентгеном просвечивать подъезжающие и отъезжающие от станции поезда и считать по головам?
        • +10
          Отличные способы избавиться от пробок в метро.
      • 0
        да, нужно договариваться с метро, что бы сообщали и размере толпы перед эскалаторами.
      • 0
        У 99% находящихся в метро есть сотовые телефоны и на каждой платформе + переходе + на большинстве перегонов есть базовый станции, так что понять миграцию и где сколько клиентов достаточно просто.
        Эти данные конечно же обезличены, то есть только скопление точек, но отдавать такую информацию умеют, что и делают кстати для других продуктов.
        Так что идея жизнеспособная, нельзя поехать в объезд, но можно поехать позже\раньше, именно так и используют зачастую обычный Яндекс.Пробки.
      • 0
        Есть мнение (которое, конечно, еще нужно подтвердить), что колебание загруженности примерно стабильное, и достаточно один раз собрать статистику, чтобы с высокой вероятностью угадывать время проезда с учетом «пробок». Это не идеальная замена живым данным, зато статистику можно довольно легко собрать.

        Ну а о внештатных ситуациях, которые решение со статистикой никак не охватывает, можно просто оповещать.
  • +6
    Раньше карта показывала не только время, но и текстом маршрут, а так же была возможность выбора альтернативных маршрутов. Получается что сейчас это доступно только в мобильных версиях или планируется вернуть этот функционал?
    • +1
      Мы решили не дожидаться внедрения всех фич и запустить минимально достаточную новую версию. Останавливаться на этом, конечно, не собираемся: и маршрутный лист, и альтернативные маршруты, и новые штуки, которых не было в старой версии — все будет.
      • +17
        Такая логика хорошо работает на новых продуктах. На обновлениях старых продуктов сначала поддерживается весь текущий функционал, и только потом происходит замена всей версии.

        Может быть, стоило сначала запустить Yandex.Metro Beta на отдельном адресе, а не сразу заменять более функциональную версию не до конца работающей новинкой?
        • +3
          Ща будет коммент от genarcho, что «мы об этом, конечно, думали».
          Кстати, кто он вообще такой?
          • +1
            Судя по нику, и по некоторым отличиям в статье от реального положения вещей, могу предположить — «генеральный архитектор».
        • +1
          Это же Яндекс, расслабьтесь. И я не в плохом смысле, просто после того как я узнал как именно проходит выкатывание функционала в Яндексе я понял почему столько печали с ними случается. Как бы не показалось странным, но внутри Яндекса никогда массово не пользуются своими продуктами из продакшена, внутри всегда используются более новые версии, которые готовятся поступить в продакшен.

          По своему личному опыту неоднократно сталкивался с ситуацией, что версия сервиса работает плохо, или глючит, а народ внутри использует идеально работающий сервис более новой версии. Знаю поскольку у меня там очень близкий друг работает, фактически он мне как брат :).

          Честно говоря я бы хотел дать какие нибудь рекомендации Яндексу, что с этим делать, и, не скрою, я думал над этой проблемой, но другие, более оптимальные, варианты подготовки к выкату версий мне так в голову и не пришли. Может быть находясь внутри Яндекса что нибудь более путное придумалось бы, но поскольку абсолютно точных последовательностей и методов подготовки к релизу мне не известно, то и улучшить (в чертогах разума :) ) данный этап для повышения качества сервиса у меня не получилось.

          p.s: С Вами полностью согласен — терять функционал, а в особенности сознательно его обрезать, при обновлениях это очень очень плохо.
          • +1
            Ну таки бета на отдельном адресе, как это происходит с почтой или поиском, вполне работающее решение. Они ж не первый продукт так калечат — всё ломают и обещают когда-нибудь потом, потому что очень спешили подарить счастье пользования глючной бетой…
            • 0
              Агу, так и есть, лично я полностью отказываюсь от тестирования бета-продуктов, которые в реальности являются альфа версией (а деградация функционала приемлема может быть для альфа версии, но никак не для беты).

              Альфа (или серая сборка) — исключительно тестовое использование, возможны самые серьёзные проблемы, не рекомендуется для постоянного использования, возможны даже несовместимости между версиями, или значительная деградация в какой то части.

              Бета — массовое тестирование, возможны незначительные проблемы, опытным пользователям можно даже рекомендовать для постоянного использования.

              Стабильная — версия, обновления для которой, в первую очередь представляют из себя исправление мелких ошибок и уязвимостей, допускаются лишь незначительные проблемы в работе, или какие то, крайне специфические, недочёты, версия предназначена для повседневного использования, и рекомендуется к использованию всем.

              В общем в топике, представлена альфа версия продукта, но никак не бета :) И я согласен с вами, к сожалению, это уже не первая подобная проблема со стороны Яндекса.

              В принципе, могу предположить, что Яндексу необходимо увеличить штат тестировщиков разряда «домохозяйка», т.е. людей, которые должны использовать продукт как чёрный ящик, т.е. не понимая как он внутри функционирует. В таком случае мне видится возможным значительно улучшить ситуацию с выпускаемыми продуктами.
        • –1
          Были причины сразу заменить старую версию новой, без стадии беты на отдельном адресе. Есть же множество внутренних зависимостей между продуктами, которые совсем не очевидны снаружи.
          • +1
            В Яндексе есть основной принцип: пользователь — король. Вы его грубо нарушили, и сейчас в качестве причины приводите, по сути, собственную некомпетентность — неумение отделить текущий продукт от разрабатываемого с нуля.

            При этом в статье речь идет о том, что на клиент уходит вся логика, т.е. весь новый сервис — это раздача файлов без серверных зависимостей. Учитывая это, аргумент про зависимости откровенно слабый.
  • +6
    Вот так выглядит страница Я.Метро на моем экране, когда я еще ничего не успел сделать:



    Как прикажете добраться от Бунинской Аллеи до Медведково?
    Автомасштаб бы…
    • +6
      Здесь был выбор: или вместить всю схему в экран, но при этом надписи у большинства пользователей будут нечитаемыми, или делать масштаб крупнее, осознанно обрезая края у больших схем. Выбрали второе. Теперь, к счастью, схему можно зумить, поэтому большой проблемы изменить масштаб и посмотреть всю схему, нет.
      • +1
        Теперь, к счастью, схему можно зумить, поэтому большой проблемы изменить масштаб и посмотреть всю схему, нет.

        После изменения масштаба схема занимает четверть экрана и прочитать названия станций более совсем невозможно.
        Неудачно, в общем.
        • 0
          Можно же не только масштаб менять, но и схему перетаскивать, как любую обычную карту. В будущем схема Московского метрополитена будет только увеличиваться в своих размерах, не влезая ни в одно самое большое разрешение экрана.
          • –2
            Можно.
            Только я, как представитель целевой аудитории, говорю, что неудобно, а Вы зачем-то пытаетесь убедить меня в обратном.
            • –3
              Кажется в Яндекс начали набирать идиотов, которые абсолютно уверены, что обо всём подумали и всё лучше знают.
              • +2
                Ну, вам-то лучше знать.
                • +2
                  По крайней мере, 5 лет назад в Яндексе интерфейсы делали более старательно и недочёты исправляли как можно скорее.
                  • –6
                    Ну вам-то, опять же, лучше знать.
                    • +4
                      Ну да, я же там работал и именно этим и занимался.

                      Поэтому удивлён, что простейший интерфейс зарелизили без базовых фич, которые можно реализовать и оттестировать в течение рабочей недели. Но ещё больше удивлён нездоровой напыщенности анонимусов из Яндекса.
                      • –5
                        Нездоровой напыщенности анонимусов из Яндекса. Оооок.
                      • 0
                        А куда в России можно пойти после Яндекса?
                        • +3
                          Ну, это что кому по душе.

                          Вообще, в России я бы советовал делать важные проекты. Стартап это или крупная компания — не имеет значения. Если проект значимый, то надо его делать и как можно скорее.

                          То есть можно даже из Яндекса не уходить, если есть возможность делать значимое.
      • +6
        А можно было убрать лишний и ненужный футер в 44 px и шапку уменьшить с 71 до 30 px.
        И блок слева показывать только если выбрана хотя бы одна станция.

        Почему вам нравится такой ну прям совсем квадратный дизайн (я про саму схему)? Сложно что-ли было сгладить повороты? В векторе же рисуете. Ну и в целом, карта не сбалансирована — много светлых мест, когда рядом с ними совсем «тесно»
        • +1
          Имхо стоит вообще использовать «партизанскую карту метро», вот она, по настоящему, читабельная, на месте ориентироваться позволяет, и позволяет оценить расстояния между станциями.

          image

          p.s: картинка немного устаревшая, но это не важно, ибо суть передаёт :)

          p.p.s: сам использую эту карту в приложении «Метро» для андроид (никакой рекламы, просто личный положительный опыт использования).
      • +2
        Хорошо бы добавить автоцентровку схемы после возвращения к минимальному масштабу.
  • +3
    Поправьте Yandex MapKit под iOS и Android, пожалуйста :)
  • +10
    Было бы очень здорово прикрутить к мобильным приложениям Яндекс.Метро возможность оповещения(что-то вроде push up notifications) пользователя о коллапсах в метро.
    Не все до выхода из дома новости смотрят, а так, люди будут оперативно оповещены и смогут спланировать свой маршрут.
    • 0
      Надо сделать стартап, который отсылает смс пользователям в случае коллапса. Я за такой даже деньги готов платить. Так как за последний год я 3 раза тратил впустую билет, только чтобы узнать уже в метро, что я должен «пользоваться наземным транспортом».
      • 0
        По хорошему, этим МЧС заниматься должно. Как независимый сервис, думаю не выживет, т.к. мало кто добровольно оставит свой номер телефона(опасаясь увеличение количества спама).

        Сейчас я настроил уведомления в приложении одного издания об упоминании в ленте новостей компании «Московский метрополитен».
        • +3
          МЧС не знает некоторых моментов:
          1) Ваш маршрут. В сервисе можно было бы выбрать, какая ветка интересует пользователя.
          2) Когда вы просыпаетесь. Чтобы не посылать сообщения, например, по выходным в 8 утра.
        • +1
          Если смотреть на иностранный опыт, то крупные системы городского общественного транспорта имеют собственные приложения для роутинга, собственные системы оповещения о задержках и собственные трекеры подвижного состава. Иногда существуют сторонние приложения, но, как правило, на базе API, предоставляемого оператором транспортной системы.
    • 0
      Эти оповещения будут выскакивать каждый будний день, начиная с 17:00
      • 0
        Речь идет не о большой загруженности в метро, а о таких случаях, как вчера в Москве. Когда в 9 утра была обесточена ветка на отрезке в 4 станции и поезда не ходили вообще.
        • +1
          такими вопросами должно заниматься само Метро, и никаких стартапов не нужно и дополнительных денег. Им это всё сделать гораздо проще, начиная от того, что они первоисточник информации, заканчивая тем, что монетизация проще.

          В случае Москвы была некая надежда на ДепТранс и ДИТ, но судя по всему там у них всё сложно, и надежды никакой нет.
  • +7
    Не мешало бы учитывать час пик для времени перехода между станциями. Зачастую приложение показывает маршрут с двумя пересадками, как более быстрый, а на деле на переходы тратишь гораздо больше времени чем считает приложение.
    • +2
      О да, особенно часто предлагает ехать по кольцу, а я знаю, что на 15 минут на каждом переходе застряну.
    • 0
      Это более актуально для мобильной версии. В вебе гораздо чаще строятся маршруты заранее, не в тот момент, когда уже надо ехать, и в этом случае логичнее использовать средне-обычные значения. А в приложениях это, возможно, будет учитываться в будущем — мы об этом, конечно, думали.
      • 0
        Можно поставить рядом галочку «планируете ехать в с 8 до 9 утра или с 6 до 7 вечера?».
    • 0
      Для Харькова наоборот. Показывает вариант «две линии, одна пересадка», тогда как вариант «две пересадки, одна линия» является более оптимальным по времени.
  • +2
    Когда-нибудь в питерской схеме появится уже наконец река?
    • +4
      В тексте выше есть такой фрагмент: «Самый нижний слой предназначен для статичных объектов, помогающих сориентироваться. В будущих версиях там будут отображаться реки и другие заметные элементы ландшафта». Питера это тоже коснется.
  • +2
    У меня карта метро по умолчанию не помещается в экран, приходится масштабировать вручную. Не удобно как-то. За нововведения спасибо!
  • +1
    На Nokia N9 теперь не работает. И приложения нет. Печаль.
    • 0
      Кстати да, было бы не плохо добавить старую версию по адресу типа old.metro.yandex.ru
      • 0
        Подписываюсь под этим приложением. Настолько привык к ней, что хочется ещё немножко пожить прошлым.
  • +7
    Наконец-то обновление!!! Только особо удобств не добавилось =((
    Я хочу поискать интересующую меня станцию метро, чтобы сориентироваться на местности. И не обозначив обе точки метро — сделать это очень трудно. Указав, только одну станцию, он ее подсвечивает, только где она? Я к тому, что нет автоскролла к этой станции. Смасштабировав карту так, чтобы ее было видно всю — не разглядеть ((
  • +8
    Масштабирование не к месту. На картах городов это неизбежное зло, а тут высосано из пальца, так как у пользователя есть самый обычный скролл. Мало того, два крайних состояния зума явно лишние — «ничего не видно» и «картой в глаз».

    В сравнении с www.metromap.ru/ сделано слабее, хотя у них никакого rocket science не используется. Вы сами придумали проблему с отрисовкой вектора и сами ее решили, искусство ради искусства.
    • +1
      Согласен, перемудрили.

      И еще, пожалуйста, сделайте отображение выбора станций в параметрах URL, что бы при F5 все не пропадало. И что бы можно было послать ссылку кому-нить.
      • 0
        Передача выбранных станций через урл будет.

        Но про ненужность масштаба не могу согласиться. Желание увидеть весь маршрут на экране более чем распространенное, и для больших схем, таких как московская, это требует масштаба, который не подходит в качестве основного. С другой стороны, не у всех хорошее зрение, некоторым нужен более крупный масштаб.
        • 0
          Масштабирование удобно, но сделано плохо. Всего 3 режима. надо более мягкий ход. И зона слишком большая, карту почти полотью можно утянуть с экрана.

          Да и выбор станций не очень. Можно попробовать отравную точку выбирать левой кнопкой мыши, точку прибытия правой.

          Сайт выглядит прекрасно, но юзабилити такое же ужасное как в старой версии.
          В общем успехов команде в дальнейшей разработке!
          • +2
            Старая схема помещалась в экран монитора.
        • 0
          >С другой стороны, не у всех хорошее зрение, некоторым нужен более крупный масштаб.

          В браузере имеется, плюс экранные лупы и прочие штуки которыми человек со слабым зреним пользоваться привычен. Svg при этом растянется как надо.
    • –2
      метромэп показывает бред, с таганской кольцевой до павелецкой кольцевой 21 минута — в реале 2-3
      • +1
        8-10 минут с учетом спуска и подъема.
    • 0
      спасибо за ссылку. Оказывается мне до работы ехать 43-48 минут, а не 38!.. Так вот почему я опаздываю!
    • 0
      Мне нравится схема www.metromap.ru/ с реалистичными расстояниями, хотелось бы видеть такой режим у Яндекса. А масштаб действительно мешает.
      • 0
        Мы все же стремимся быть ближе к официальной схеме — люди к ней привыкают, и она быстрее считывается. Не то чтобы используемые сейчас схемы соответствовали официальным, но двигаться мы будем в первую очередь именно в этом направлении.
  • +2
    При клике на станции ничего не происходит. Chrome 32, windows 8.
    • –4
      Только у Вас.
    • +2
      Chrome 32, Windows 7, аналогично
    • 0
      Попробуйте не шевелить мышкой. Чувствительность и правда слишком большая — стоит сдвинуться хоть на пиксель, включается перетаскивание.
  • +15
    Добавили бы время работы станций, почему-то ни у кого в подобных программах этого не нашёл. При том, что для этой информации никуда ехать и ничего измерять не нужно, вся информация обычно есть на сайтах метрополитена.
  • +2
    Очень нравится новый минималистичный интерфейс сервисов Яндекса. В отличие от Гугла, тут все просто и понятно. Жду обновление Диска и Метрики :)
  • +3
    А почему только один вариант пути показывается? Раньше хотя бы 3 было, а сейчас как изменить если потребность возникла?
    • +1
      Причем вариант не самый быстрый и не самый короткий. Если например выбрать путь с новокосино до павелецкой, то как показывает практика проще всего ехать до марсистской потом коротенький переход на кольцо, одна остановка и мы на месте. Реальное время в пути 19-20 минут. Яндекс.Метро показывает, что нужно доехать до третьяковской, пройти большой переход и вернуться одну остановку до павелецкой. Пишут, что это займет 26 минут, в реальности около 30. Альтернативные маршруты не предлагает. Где логика?
      • 0
        Ха, причем чтобы с марсисткой доехать до павелецкой (в реальной жизни это одна остановка по кольцу), он говорит что надо ехать с пересадкой через центр. Зачем???
        • 0
          Потому что через центр — 8 минут, а по кольцу — 3 минуты на пересадку, 2 по кольцу и еще 4 на пересадку с кольца на зеленую ветку.
          • 0
            А скорость движения поездов и интервалы никто не учитывает? Утром например по желтой интервал 2-2,5 минуты по зеленой аналогично, а на кольце 30-45 секунд
            • 0
              В московском метро минимальный интервал — 90 секунд. Даже в час пик, даже на кольце.
              • 0
                Я имею ввиду, то, что мы видим на табло, после того как уезжает поезд и подъезжает новый, на кольце это 30-40 секунд в 8.30 утра в будни. Суммарный интервал с учетом остановки, посадки высадки и прочего безусловно больше.
                • 0
                  Это не интервал. Интервал — это от отбытия поезда до отбытия следующего поезда. И на почти на всех линиях в час-пик он одинаковый 1:30-1:45. В кольце нет ничего сверхъестественного, кроме чуть более долгой остановки, может поэтому поезд и прибывает раньше на станцию.
        • 0
          Для того, чтобы по кольцу, надо выбрать павелецкую не на карте, а через поиск. На карте он автоматом выбирает зеленую ветку. Кстати, у RUQ пониже такой же баг: радиальная станция игнорируется.
          • 0
            Можно еще кликнуть в «кружок» конкретной станции. В будущем при клике по названию в таких случаях будет появляться слой выбора линии.
      • 0
        Вы сейчас говорите о разных Павелецких. Через Марксистскую быстрее добраться до кольцевой, а через Третьяковскую — до радиальной.
    • 0
      Пока никак, но новые фичи будут добавляться. И несколько вариантов маршрутов — одна из первоочередных.
  • +1
    Интерфейс не соответствует модели представления. Простой пример, клик на название станции Комсомольская, и клик на например Бауманскую, предлагается маршрут с двумя пересадками, вместо с одной и меньшим временем.

    • 0
      Переход с Комсомольской радиальной на Комсомольскую кольцевую считается пересадкой. Поэтому тоже получается две. С одной пересадкой можно через Арбатскую, но это уж точно будет дольше.
  • +21
    По технологиям заморочались, а обо всём остальном забыли:
    1. Чтобы изменить станцию в поле, нужно кликать по каким-то крестам.
    2. Скинуть ссылку на маршрут нельзя.
    3. Оставить фидбек на этой же странице нельзя.
    4. Схема должна всегда оставаться в области экрана.
    5. SVG грузятся отдельными запросами, как же спрайты или data-uri.
    6. Логику перенесли, но она весьма странная. Наверное, предполагает, что поезд подают сразу же как наш пассажир, оказывается на платформе:
    Яндекс уже не торт
    • +1
      Как я уже писал выше, мы не стали дожидаться, когда сервис будет полностью вылизан, и запустили минимально достаточную версию. Конечно, еще будет много изменений. Больше половины пунктов из вашего списка так или иначе пересекаются с ближайшими планами по апдейтам.
      • +1
        Хорошо, ждём новостей об апдейтах. Спасибо!
      • 0
        Надеюсь выбор маршрута тоже, а то нелепо смотрится 1 такой вариант
        • +3
          Так, видимо, быстрее. Голубая ветка на участке «Александровский сад» — «Киевская» очень медленная.
          • +1
            А в переходах на Киевской стоят толпы народа.
        • 0
          C «Александровского Сада» на «Боровицкую» нет прямого перехода. По этому, в любом случае получается 2 перехода. Но через синюю меньше станций.

          image
          • 0
            Я больше имел ввиду возможность выбора маршрута, чтобы тут 2 варианта было с подсчетом времени, а дальше сам уже решу как ехать. Мне лично больше нравится ездить через Александровский сад, садиться проще, т.к. это конечная, а до Арбатской 30 секунд едет поезд, времени особо не добавляет.
          • +1
            Вообще, карта неудачная. С АС на Боровицкую перехода нет, а они рядом. С Охотного ряда на площадь революции перехода нет, а они тоже рядом.
  • 0
    Всегда хотел спросить, почему так мало городов в приложении?
    Ведь городов с метро не так уж и много.
    • 0
      Более того, выпиливают и те, которые уже были.
      В старой версии был Екатеринбург (http://metro.yandex.ru/ekb) — в новой не стало Екатеринбурга. Я понимаю, что одна единственная ветка с 9-ю станциями и поиск там не нужен, но можно было оставить чисто для информации о том какие станции есть.
      • +6
        Обязательно надо добавить Омск — там всё-таки одна станция есть
        • +8
          Мы серьезно думали об этом и планируем добавить Омск в ближайших релизах.
          • 0
            НСК?
            • 0
              нск-то зачем? у нас жалких две ветки с одной пересадкой и одной перепутаной платформой — но и то в прошлом.
              • 0
                Но москвичи-то не знают :) В том же Минске две ветки. Вон говорили про то, что раньше ЕКБ был, там метро меньше, чем в НСК.
                • +1
                  И НСК там раньше был: я залез в webcache гугловский — там у старой версии такой список городов:
                  Москва, Санкт-Петербург, Екатеринбург, Казань, Нижний Новгород, Новосибирск, Самара, Киев, Днепропетровск, Харьков, Минск, Алматы.
                  В новой он сильно скромнее:
                  Москва, Санкт-Петербург, Киев, Харьков, Минск.

                  Хотя, с другой стороны, «старая» версия по сути была просто страничкой с GIF-кой.
          • +4
            Париж, Лондон, Токио, etc?
            • +1
              Было бы круто, кстати.
        • 0
          Да, Омское метро шикарно. Кстати, сейчас модная свадебная традиция — фотографироваться в переходе, где вход в метро. При чем строят то его черт знает сколько лет, мои родители еще учились — думали «через 5 лет будет метро».
          • 0
            Я удивляюсь, что у вас ещё за деньги по метромосту не катают. Сел на библиотеке, заехал в мост, постоял и назад. Зато метро, с турникетами и прочей атрибутикой.
            • 0
              Я как-то не уверен, что инфраструктура метрополитена внутри моста уже проложена. Хотя, кто его знает.
              А вот если бы экскурсии водили в строящиеся тоннели — я бы сходил! Даже на станцию бы за деньги просто спустился )
              • 0
                Одно время водили, кстати. По крайней мере, для школьников и журналистов…
      • 0
        Да-да. Писал, писал в комментариях к мобильному приложению «Добавьте Нижний Новгород, пожалуйста, как в веб-версии» — теперь Нижний Новгород и из веб-версии исчез :(
    • 0
      Сейчас нет удобного редактора для отрисовки схем, приходится их править руками в xml, что несколько муторно. Поэтому поддерживаем минимально необходимое число городов. Но так будет не всегда.
  • +1
    Если навестись на станцию, нажать колесико мыши и, пока отрабатывает зум-анимация, убрать мышку со станции, она так и останется красной. Так можно, если делать нечего, покрасить в красный цвет все станции внутри кольца. Хотя по сложности это будет сравнимо с Flappy. :)
  • +1
    Почему при клике на название станции, где их таких две, то в некоторых случаях выбирается радиальная (Белорусская, Павелецкая), а в некоторых кольцевая (Таганская, Октябрьская)?
  • +2
    Пользуясь случаем, прошу, исправьте граф в Яндекс.Метро под WP8. Появилась возможность проезда между Достоевской и Чкаловской.
    Огромная картинка

    • 0
      Прелесть то какая! Сухаревскую бы еще зацепили — я был бы счастлив :D
    • 0
      Я им писал об этом на почту 9 дней назад, пришло: «мы передадим ваше письмо менеджеру проекта», но так все и заглохло (Ticket#14021013573131877).
  • +5
    1. Сломали хорошую вещь =(

    2. Неужели все 220 тыщ ежедневных пользователей — пользуются актуальными браузерами?
    Поставьте гифовую заглушку для старичков, сейчас же белый бесполезный экран показывается.
  • +2
    Глюкаво.

    Станции при клике выбираются раза с третьего-четвёртого.
    После того, как посмотрел маршрут и хочу выбрать другие станции — щёлкаю на пустом месте или на других станциях, ожидая, что старый маршрут пропадёт — это тоже происходит раза с третьего-четвёртого.

    Хром, версия 32.0.1700.107
  • +1
    При первом запуске схема вообще не загрузилась, пришлось обновлять страницу (Firefox 27.0.1, Windows 7 x64). При перемещении схемы ощутимо тормозит (AMD A8-6600K, 4 ядра, ~4GHz). Даже боюсь представить что это будет на моём рабочем Pentium 4 с браузером IceWeasel.
    • +1
      Кстати, да. При открытии вкладки фоном (например, через клик средней кнопкой мыши или Ctrl+кликом) в последнем Firefox карта банально не загружается. Хотя в Chrome, например, такого бага нет.
  • +1
    Наводим курсор на станцию, делаем зум в любую сторону одновременно с движением мышью. Результат:
  • +2
    Все круто!
    Но есть некоторые «но».

    1. Карту можно утащить за пределы экрана (при среднем зуме) — это не правильно.
    2. При минимальном зуме карта двигается по экрану в пределах (я так понимаю) канваса — это не правильно.
    3. Нет вариантов маршрута (как в приложении под iOS)
  • +7
    Расскажите, как так проехать без пересадок?
    • 0
      Выйти на Киевской и пересесть на той же станции на другой поезд, который отвезет уже на Студенческую? На другую платформу и ветку то при этом, насколько я понимаю и помню, перехода нет в этом случае.
      • +4
        > без пересадок
        > пересесть
        • 0
          В моем понимании, пересадка — это переход с одной линии на другую линию. Логика Яндекса насколько я понимаю аналогичная.
          В том числе и кросс-платформенная пересадка — это тоже переход с линии на линию.
          • 0
            Т.е. если на Китай-городе или Третьяковской переходить с КРЛ на КРЛ, но в обратную сторону, то это не пересадка? Там необходимо переходить на другую платформу, как и на любой другой «обычной» пересадке, но линия ведь одна и та же.
            • 0
              Маршрут из пункта А в пункт В не предполагает необходимость ехать по одной и той же ветке сначала в одну сторону, а потом в другую. Такие ситуации могут возникнуть разве что в случае ошибки пассажира, если он станцию «проспал». Поэтому такой случай считаю, что рассматривать бессмысленно.

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

              В случае же с маршрутом Выставочная — Студенческая, линию метро мы не меняем, а остаемся на той же. Меняем просто поезд.
              Хотя вообще, я честно не понимаю логику тех, кто придумал такую организацию этой линии.
              Регулярно там встречаю пассажиров, которые уехали на Выставочную, вместо Студенческой, или наоборот.
              Надо было делать поезда, которые за раз проезжают всю ветку — от Международной до Кунцевской.
      • 0
        А разница? Это всё равно пересадка: там перейти платформу и долго ждать поезда. Кросс-платформенные пересадки же считаются.
  • +2
    друзья разработчики, почему сейчас когда метро в Киев не работает яндекс. карта всё равно мне упорно строит маршруты через метро без альтернатив, а мне надо через маршрутки и общественный транспорт или хотя бы уже пешком, но маршрут конкретный.

    напоминает того динозавра, которому до мозга доходило что откусили его конечность минут через 30
    • 0
      Ситуация в Киеве меняется слишком быстро, чтобы корректировать маршрутизацию в соответствии с ней. Технологический процесс в этой части не настолько быстр. Мы информируем о текущей ситуации здесь: rasp.yandex.ua/info/kiiv
  • +2
    Какой-то недооптимизированный прототип был на кэнвасе. Я выжимал из него полное поточечное обновление 1920*1080 с приемлемым для анимации фреймрейтом.
  • +4
    верните ссылку на старую версию
  • +10
    Убрали старую рабочую версию, а оставили без вариантов новую глючную.
    Я, конечно, понимаю, что господам из Яндекса протестировать новую версию надо,
    но как-то это не дружелюбно с их стороны к пользователям.
    • 0
      Видите ли, некий genarcho считает иначе: «Всем бета, пасаны!».
  • +7
    А чего не лицензировали у Татьяныча нормальную схему?
    • +3
      Да там и лицензировать не надо, они разрешают её всем использовать, с единственным условием указания авторства: www.artlebedev.ru/everything/metro/map2/vector/
      • 0
        Мне кажется это они ради унификации
      • 0
        Официальная схема рассчитана на полиграфию, она не подходит для использования в интерфейсе как есть. Мы будем менять дизайны схем в направлении официальных, но в точности как в вагонах метро не будет.
  • 0
    В некоторых проектах есть необходимость работать с метро, к примеру дать возможность выбора станций для поиска — не планируете сделать виджет подобный, как и виджет с обычными картами?
  • 0
    А мобильные клиенты планируете обновлять?
    А то они не очень красивые)
    • 0
      Теперь в приложениях и на вебе единый формат, поэтому дальнейшее развитие действительно будет идти параллельно. Так что да, будем обновлять.
  • +6
    image
    Яндекс, у вас эта ошибка уже не первый год, в том числе и в Андроидной версии.
    Вам не стыдно?
    • 0
      Тут интересный случай. Маршрутизатор предлагает проехаться, но сделать всего одну пересадку. Вы считаете, что это глупо, нужно просто перейти через две станции. Вот я лично согласен, никогда бы не поехал. Но, как выяснилось, многие люди настолько не любят ходить пешком, что действительно предпочитают сделать лишнюю поездку.
      • 0
        Людям, возможно, не нравится переходить по лестницам, но как раз в варианте Охотный ряд — Театральная — Площадь революции можно перейти по эскалаторам. Между Арбатской и Библиотекой имени Ленина есть лестница и переход тоже не самый короткий. (А ещё надо поезда ждать).
  • +3
    Оффтоп от немосквича. Почему станции, где есть пересадки не назвали одним именем? Например, «Александровский сад», «Боровицкая», «Арбатская» и «Библиотека имени Ленина». Судя по карте «Александровский сад» и «Библиотека имени Ленина» совсем рядом.
    • +3
      не назвали одним именем

      Потому что у них в действительности разные названия. Где-то в Москве все станции пересадочного узла разных линий называются одинаково (Киевская, Комсомольская), где-то все по разному (как в вашем случае), где-то всё смешалось вместе (как две Курских и Чкаловская; две Третьяковских и Новокузнецкая (тут ещё и кросс-платформенная пересадка, когда на одну платформу прибывают поезда разных линий)).
      • +6
        Просто ад какой-то.
        • +7
          Ад это две Арбатские на РАЗНЫХ ветках без пересадки между ними. Там по сути не далеко пешком между ними, но фактически это абсолютно разные станции.
        • +2
          Ад это в Лондонском метро: половина ветки может повторять совершенно другую половину ветки метро; перед тем, как сесть в электричку, удостоверяешься, что она едет в нужную тебе сторону и на нужной ветке(прямо как автобуса дожидаешься); а также разная стоимость в зависимости от зон, а также разная стоимость в зависимости от времени суток.

          И самое ужасное: нет действительно хорошего приложения для смартфона, чтобы этот ад как-нибудь разрулить
    • +2
      Вы бы ещё спросили, почему есть две ветки, на каждой из которых есть Киевская, Смоленская и Арбатская, причём одноимённость не гарантирует пересадку.
      • +3
        Меня всегда интересовало, почему на Ригу — Рижский вокзал. На Киев — Киевский. А на Минск — Белорусский :D
    • 0
      Legacy.
  • +1
    Круто, но дело не в красоте! Пожалуйста, ответтье добавьте уже в мобильном приложении возможность смотреть баланс карты «Тройка» и UEC по NFC, как это происходит с обычными ультралайтами. Это важнейшая фича приложения, которая потянет его на тысячи смартфонов.
  • +1
    Почему Яндекс.Метро нет в списке всех сервисов? Кстати, это относится не только к Я.Метро, но и к Я.Услугам, Я.Спорту и некоторым другим сервисам.
  • +3
    Много людей сходу грызут Яндекс за любые изменения.
    Да, не все всегда идеально. Иногда косячат. Но самое главное — это то, что они не стоят на месте, а активно развивают как старые направления, так и осваивают новые.
    Молодцы, на мой взгляд.

    Лично мне по душе была старая версия метро. Новая какая-то холодная, обрезанная по функционалу и много косяков по юзабилити. Бездушная и не уютная.

    Но все это со временем подтянется. А до тех пор было бы правильно оставить ссылку на старую версию.
    • 0
      Вот в почте это происходит нормально — появляется сначала вкладка «новый интерфейс», потом потихоньку становится кнопкой «старый интерфейс».
    • 0
      Опера так же оправдывалась.
  • 0
    Почему убрали кнопку смены начальной-конечной станции? Теперь, чтобы построить обратный маршрут необходимо заного выбирать станции…
  • 0

    Все очень плохо. Как-то не ожидаешь такой сыряк от Яндекса.
    • 0
      А что не так то? оО
    • +1
      С Тургеневской ещё более-менее, гораздо хуже, что и с любой более северной станции (Сухаревская-Медведково) показывает снова маршрут через ЛДЛ. Зато мобильное приложение показывает первым маршрут через Третьяковскую.
  • +1
    Я выражу, наверное, не совсем общее мнение, но… как человек, который уже сто тысяч раз на сто тысяче сайтов делал схему метро (и я уверен, что таких здесь много), я бы очень хотел увидеть от вас api для метрокарт.
    • 0
      Вы далеко не одиноки. Как принято говорить в подобных случаях, следите за новостями.
  • +4

    * зум столь же ужасен, сколько бесполезен;
    *… да еще и тормозит (Firefox очень последней версии);
    * при зуме карту можно утащить за границы экрана оставив себя перед огромным белым ничего;
    * пустое пространство, там где должен быть кружочек с цветом линии станции, в полях «откуда» и «куда» пока станции не выбраны оскорбляют мое чувство прекрасного. Почему бы не использовать контур кружочка?
    * нельзя просто начать вбивать текст в поле с уже выбранной станцией;
    * header выглядит пустым и безжизненным. Мне очень нравится общая концепция новых Яндексовых интерфейсов, но тут явно что-то пошло не так — поля «откуда» и «куда» выглядели бы очень уместно в header'е и добавили бы схожеси с мобильными приложениями;

    Но, на самом деле, сам факт, что за него наконец-то взялись и переделали этот микропиксельный гифовый ужас — это отлично. Ждем улучшений.
  • 0
    Так-то, конечно, всё круто. Но в былые времена, если я правильно помню, в приложении были карты большого количества городов. А сейчас — лишь нескольких.
  • 0
    Понравилось, в комментах пишут про масштаб а по мне смотрится идеально.

    Добавьте еще городов если не жалко, Нью Йорк, Сингапур, Шанхай. Вам легко, а мне удобней держать все в одном аппе )
  • +3
    Тоже как раз на днях закончил карту

    http://vmet.ro/map

    Основная задача состояла в том, чтобы карта отлично работала на мобильных устройствах. Сейчас поведение на тач и не тач версиях немного отличается.
    • 0
      Почему так дико быстро скролится карта вверх/вниз? (OS X, Chrome)
      • 0
        Скорость скрола утверждал заказчик.
        А у вас, вероятно, Magic mouse. Там действительно есть проблема ультра-быстрого скрола. Поставил в трекер задач, буду решать
        • 0
          И на тачпаде тоже ультра быстрый скролл.
    • 0
      Парк Победы (синий) – Выставочная
      Парк Победы (желтый) – Выставочная
      Даёт разные результаты, мне кажется, так быть не должно.
      И со скроллом действительно проблемы (Firefox).
      • 0
        По поводу маршрутов.
        Парк Победы (синий) – Выставочная, через жёлтую имеет две пересадки и один перегон
        Парк Победы (синий) – Выставочная, через синюю и голубую имеет одну пересадку и два перегона

        Алгоритм посчитал, что путь по времени одинаковый. Однако, учитывая, что люди не любят пересадки, был выбран вариант с наименьшим количеством пересадок.
        • +1
          А время перегона не считается вообще? Поезд Киевская – Выставочная ходит раз в 10 минут.
          • 0
            Время перегона является основой для расчета. А вот время ожидания поезда пока не учитывается.
  • +3
    Какой смысл в новом интерфейсе, если отсутствует адекватная оперативность информации. На питерской схеме у вас Петроградская была «закрыта» еще 2 месяца спустя после открытия, теперь не отражена ситуация с «Лиговским проспектом». Неоднократные обращения в техподдержку сервиса заканчивались ожидаемым «спасибо, ваш звонок очень важен для нас запрос принят.»

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

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