
У Яндекс.Пробок наряду с trf.maps.yandex.net/trf/stat.js есть еще trf.maps.yandex.net/trf/coverage.js. Этот скрипт рассказывает нам, какие регионы покрыты данными о пробках (ну или хотя бы такая информация поддерживается).
YMaps.TrafficLoader.onLoad(
"coverage",
{
regions: (function(){
function p(x,y){
return new YMaps.GeoPoint(x,y);
}
function b(l,b,r,t){
return new YMaps.GeoBounds(p(l,b),p(r,t));
}
return [
{
name:"Москва и Московская область",
regionId:"1",
view:{
point:p(37.620070,55.753630),
boundedBy:b(36.61977492,55.3105725984,38.35467432,56.4313303008)
},
boundedBy:b(35.14318524,54.2560801359,40.20433848,56.9613240948)
}
];
})()
}
);
* This source code was highlighted with Source Code Highlighter.
Если сделать все выполняемые преобразования, на входе получается вот такой объект:
return {
regions: [
{
name:"Москва и Московская область",
regionId:"1",
view:{
point: YMaps.GeoPoint(37.620070,55.753630),
boundedBy: YMaps.GeoBounds(36.61977492,55.3105725984,38.35467432,56.4313303008)
},
boundedBy: YMaps.GeoBounds(35.14318524,54.2560801359,40.20433848,56.9613240948)
}
];
}
* This source code was highlighted with Source Code Highlighter.
Снова используется YMaps.TrafficLoader. Данные приходят в виде объекта с полем regions, в котором содержится массив объектов. Каждый объект имеет одинаковый набор полей:
- name — название области или города;
- regionId — какой-то ID. он же присутствует в выдаче stat.js;
- view: область просмотра, view.point — объект типа YMaps.GeoPoint — центр области, удобно использовать вместе с YMaps.Map.setCenter(geoPoint) для перехода к нужной области, view.boundedBy — YMaps.GeoBounds — прямоугольник, ограничивающий область покрытия;
- boundedBy — аналогично view.boundedBy.
По результатам «исследований» сделал Windows Sidebar Widgets с пробками в любом городе, который сейчас поддерживается Яндексом. Не такой крутой как оригинальный, но зато позволяет смотреть карту прямо в виджете без открытия самого сайта.
Загрузить виджет для Windows Sidebar «Другие Яндекс.Пробки»