Здрастє, я Tarasius. Це мій бложик.

Особисті думки, нариси, проекти та коротко про мене

Слідкуємо за Яндекс.Мапами та отримуємо число балів заторів

Проблема: отримувати значення балів заторів з Яндекс.Мап для відображення у власних віджетах.
Середовище: Ubuntu сервер з виходом в інтернет.
Програмне забезпечення:
веб-сервер з PHP – наприклад, http://www.penguintutor.com/linux/light-webserver ;
xvfb – sudo apt-get install xvfb;
CutyCapt – http://cutycapt.sourceforge.net/ ;
Результат: картинка з заторами та текстовий файлик зі значенням балів заторів.

Результат роботи описаного в статті коду

Результат роботи описаного в статті коду

Отже, ми встановили все вище вказане і можемо почати програмувати. Створимо php файлик на нашому веб-сервері

<?php
  $f = "@/probki.txt";
  $fileHandle = fopen($f, 'w') or die("Unable to open the ".$f);
  fwrite($fileHandle, $_GET["val"]);
  fclose($fileHandle);
  echo file_get_contents($f);
?>

Він буде просто зберігати вхідний параметр у файл. У цьому файлі і буде лежати наше значення заторів. Далі ще один PHP файлик

<?php 
  $date = date('H:i:s m.d.Y'); 
  echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Пробки на '.$date.'</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="//api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script>
    <style>
      html, body, #map {
        width: 100%; height: 100%; padding: 0; margin: 0;
      }
    </style>
    <script type="text/javascript"> ymaps.ready(init); function init () {
      var myMap = new ymaps.Map("map", {
        //Це Київ. Поставте тут значення яке Вам треба.
        center: [50.47,30.54],
        zoom: 12,
        controls: []
      });

      // Створимо провайдер пробок "Зараз" з включеним шаром інфоточек.
      var actualProvider = new ymaps.traffic.provider.Actual({}, { infoLayerShown: true });
      // І потім додамо його на карту.
      actualProvider.setMap(myMap);

      actualProvider.state.events.add("change", function () {
        var jamlevel = actualProvider.state.get("level");
        if (jamlevel!== null) {
          //Тут основна фішка - якщо вставити замість шляху картинки PHP файлик, то браузер звернеться до нього, намагаючись відобразити картинку.
          document.getElementById("val").src="save.php?val="+jamlevel;
        }
      });
    }
  </script>
  </head>
  <body bgcolor="#555555">
    <!-- тут виведемо погоду -->
    <div style="position: absolute;left: 30px; top: 0px; z-index: 2;">
      <a href="http://clck.yandex.ru/redir/dtype=stred/pid=7/cid=1228/*http://pogoda.yandex.ru/kyiv"><img src="http://info.weather.yandex.net/kyiv/2_white.uk.png" border="0" alt="$
      <img width="1" height="1" src="http://clck.yandex.ru/click/dtype=stred/pid=7/cid=1227/*http://img.yandex.ru/i/pix.gif" alt="" border="0"/></a>
    </div>
    <!-- а тут виведемо красиву картинку про затори -->
    <div style="position: absolute; right: 30px; top: 0px; z-index: 3;">
      <img src="http://info.maps.yandex.net/traffic/kiev/tends_200.png" alt="Пробки на Яндекс.Картах" border="0"/>
    </div>
    <div id="map">
    </div><!-- тут наша невидима PHP картинка -->
    <img id="val" src="" style="display:none" />
  </body>
</html>';
?>

Тепер, якщо відкрити цей файлик в браузері, ми побачимо мапу з заторами, віджет погоди та заторів, а саме головне – з’явиться файлик probki.txt зі значенням заторів. Після цього можемо заставити наш сервер відкривати цю сторінку автоматично по заданому розкладу. Отже, додамо в cron наступне:

/usr/bin/xvfb-run -a -s "-screen 0 1600x1200x16" /usr/bin/CutyCapt --url=http://tarasius.name/probki.php --out=/var/www/tarasius.name/@/probki.jpg --javascript=on --delay=5000 --min-width=1600 --min-height=1200
Сподобалось? Поділися з друзями!

Позначки:,

Категорія: Інженерія. Автор: tarasius. Опубліковано 19 лютого 2015р. в 21:36.

Прокоментуй!

Попередній пост:  



Прокоментуй!


Залишити коментар