API имеет методы для размещения на карте собственного слоя. Слой карты характеризуется источником тайлов (YMaps.TileDataSource). Для создания источника требуется указать шаблон URL с тайлами.
Источник тайлов
Первая проблема — узнать адрес источника, используемого Я.картами. Решается просто — смотрим с помощью FireBug на карту с пробками и видим в самом верху <img /> с [src=http://trf.maps.yandex.net/tiles?l=trf&x=2500&y=1244&z=12&tm=1267986241] Здесь x,y и z — координаты тайла и информация о зуме карты. tm — временная отметка, за которую отдаются данные о пробках. Без указания параметра tm сервер тайлов отдает 404…
Время обновления пробок
Вторая проблема — узнать текущую временную отметку, за которую отдаются пробки. Снова воспользуемся FireBug.
Можно обнаружить в логе обмена с сервером запрос на адрес trf.maps.yandex.net/trf/stat.js В ответ приходит скрипт с вызовом YMaps.TrafficLoader.onLoad('stat', «JSON_packed_data»); Внутри данных, передаваемых вторым аргументом, присутствует параметр timestamp который совпадает с текущим параметром tm при загрузке тайлов. PROFIT!
На главной Я.Карт YMaps.TrafficLoader определен, на обычной странице с картой — нет.
В итоге был написан код, определяющий объект YMaps.TrafficLoader, метод onLoad в нем и использующий полученную информацию для создания нового слоя, TileDataSource для него, и добавляющий слой на карту. Данные обновляются раз в 5 минут.
Загрузить traffic.js.
Подключить нужно после загрузки API, до загрузки кода, создающего карту на вашей странице. В коде инициализации карты нужно вызвать YMaps.TrafficLoader.init(mapObject), где mapObject — экземпляр YMaps.Map содержащий вашу карту. У себя я вызываю инициализацию на событии geocoder.Events.Load.
UPD: Перенес из блога Яндекса в Web-разработку.

