Pull to refresh

Яндекс.Пробки: получаем области покрытия пробками + альтернативный пробочный гаджет

Reading time2 min
Views3.5K
Не так давно Яндекс стал отдавать данные о пробках для большого количества других регионов, кроме Москвы, Питера, Киева и Екатеринбурга. Как разместить слой с пробками на своей карте я писал ранее. Сегодня разберемся как можно получить список регионов, в которых обрабатываются пробки.

У Яндекс.Пробок наряду с 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 «Другие Яндекс.Пробки»
Tags:
Hubs:
-4
Comments0

Articles

Change theme settings