Клуб API Карт

обработчик обновления пробок

serg.sikoev
2 апреля 2013, 13:24

Сразу признаюсь, что js не знаю. Только разбираюсь.

Мне нужно вывести карту с пробками.

И текст под ней:

1) время из контрола пробок (на какой момент они актуальны)

2) кол-во баллов из этого же контрола.

И чтобы это все обновлялось при обновлении пробок.

Тоесть по сути нужно сдалать обработку события обновления пробок.

 

пока пытаюсь после карты в столбец выводит время, когда пробки обновлялись.

 

В доках API не нашел как работает авообновление пробок.

Кроме этой ветки вообще по теме ничего не нашлось.

  

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script src="http://api-maps.yandex.ru/2.0-stable/?load=package.full&lang=ru-RU" type="text/javascript"></script>
   <script src="http://yandex.st/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
        ymaps.ready(init);
        var map;
var trafficControl;
        function init(){ 
map = new ymaps.Map ("map", {
center: [55.76, 37.64],
zoom: 10
}); 
trafficControl = new ymaps.control.TrafficControl({shown: true, expanded: false});
map.controls.add(trafficControl, {top: 30, left: 10});
trafficControl.getProvider('traffic#actual').update();
  }
var OldTimeStamp = null;
var NewTimeStamp;
var myTime;
var state;
        
// проверка 
function JamUpdateRoutine () {
 trafficControl.getProvider('traffic#actual').update();
 state = trafficControl.getProvider('traffic#actual').state;
                         NewTimeStamp = state.get('timestamp');
                         if (OldTimeStamp!=NewTimeStamp){
 OldTimeStamp = NewTimeStamp;
 myTime = new Date(NewTimeStamp*1000);
 $("#map").append(myTime.toLocaleTimeString()+"<br>");
                            }
                                     }
         </script>
</head>
<body>
    <div id="map" style="width: 800px; height: 600px"></div>
<script type="text/javascript">
         // Периодический опрос:
     window.setInterval(JamUpdateRoutine, 1000);
</script>
</body>
</html>

 

 

он работает, но trafficControl.getProvider('traffic#actual').state.get('timestamp'); иногда меняется непонятным образом. Получается что-то подобное:

13:12:00
13:16:00
13:12:00
13:16:00


иногда так:

13:12:00

13:12:10

13:12:00

И время после преобразования из timestamp отличается от того, что написано

в контроле пробок на 1 или 2 минуты (когда как, закономерности не понял).


Как это правильно сделать?

Может можно без опроса по таймеру обойтись?

имитировать движение мышки - тоже как-то коряво.



4 комментария
Подписаться на комментарии к посту

Убери, пожалуйста, код под кат.

Редактирование поста->кнопка врезка

я постараюсь сегодня-завтра написать подобный пример, т.к. последнее время много об этом спрашивают. Возможно он будет не прям на 100% то что нужно Вам, но, думаю подправить его и без знания js у Вас получится

Написал пример.

Актуальные пробки обновляются каждые 4-ре минуты (можно менять)

Архивные каждые 15 минут (менять можно, но бессмысленно, т.к. данные только в таком диапазоне есть)

спасибо, посмотрел пример.

Думаю разберусь.