Направление движения автобусов, снова здравствуй!

06.02.2022 (ред. 06.03.2022)

В экспериментальном режиме на карту был возвращён указатель направления автобусов, который был отключен для автобусов ТСП.

Немного истории… Опять…

В 2021 году, с целью снижения нагрузки на сайт, взамен создаваемой на сервере PNG-иконки стала использоваться SVG-иконка, создаваемая прямо в браузере. Тогда иконка представляла собой xml-код в виде base64, который был указан в src атрибуте тега <img> , то есть прямого доступа к иконке скрипт не имел. Каждый раз при обновлении положения автобуса иконка «перегенерировалась» (для изменения указателя направления). Каждый раз это давало нагрузку на браузер, но при обновлении раз в несколько секунд и небольшом количестве автобусов она была незаметна.

Но системы отслеживания развивались, чего нельзя было сказать о старом JS-коде сайта. Обновление меток стало происходить гораздо чаще, а их количество возросло. Так, в ноябре 2021 на маршрут вышло около 10 автобусов, и сайт начал подвисать, всего из-за 10 автобусов…


Поломка карты. Скриншот НОКД.
Примечание: карта не отображалась не из-за нагрузки на сайт, а из-за нагрузки на браузер постоянным пересозданием иконок.

В срочном порядке код был обновлен: вместо постоянного пересоздания иконки, она создавалась один раз. Соответственно, пришлось удалить и указатель направления (прямого доступа к иконке не было для его обновления). Это убрало зависания в браузере (иконка рендерилась всего один раз, а не каждые 100 мс).

С тех пор и до сегодняшнего дня указатель направления не возвращался на карту по этой причине. Теперь же иконка на карте отображается в другом виде: раньше это был тэг <img src=»data:image/svg+xml;base64,…»>, сейчас на странице отображается исходный код svg-картинки, то есть скрипт имеет доступ к каждому элементу иконки, и может повернуть указатель направления, при этом не пересоздавая всю иконку заново. Поворот картинки <img> не дал бы требуемого результата: поворачивалась бы вся метка целиком, в том числе и текст.

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

Обновление экспериментальное, поэтому для его «активации» может потребоваться очистка кэша браузера (CTRL+F5).