Создаем погодный информер
Вероятно, многие Web мастера, хотя бы раз в жизни задавались вопросом о том, как бы отображать погоду на своем сайте или на сайте закзчика. Можно использовать готовые погодные информеры. Но они не всегда вписываются в дизайн сайта.
Сейчас мы посмотрим как можно сделать свой погодный информер с необходимым нам дизайном. Будем для этого использовать Google Weather API. Он достаточно легок в использовании. Если Вы разбираетесь в PHP, проблем возникнуть не должно.
Для начала обратимся к Google Weather API через браузер:
http://www.google.com/ig/api?weather=Краснодар
Тем самым мы запрашиваем погоду для города Краснодар. И тут же получим ответ в формате XML. Взглянем на него поближе:
<xml_api_reply version="1">
<weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0">
<forecast_information>
<city data="Astrakhan, Province of Astrakhan"/>
<postal_code data="Астрахань"/>
<latitude_e6 data=""/>
<longitude_e6 data=""/>
<forecast_date data="2010-04-03"/>
<current_date_time data="2010-04-03 11:30:00 +0000"/>
<unit_system data="SI"/>
</forecast_information>
<current_conditions>
<condition data="Ясно"/>
<temp_f data="59"/>
<temp_c data="15"/>
<humidity data="Влажность: 26 %"/>
<icon data="/ig/images/weather/sunny.gif"/>
<wind_condition data="Ветер: В, 6 м/с"/>
</current_conditions>
<forecast_conditions>
<day_of_week data="Сб"/>
<low data="2"/>
<high data="16"/>
<icon data="/ig/images/weather/mostly_sunny.gif"/>
<condition data="Преимущественно солнечно"/>
</forecast_conditions>
<forecast_conditions>
<day_of_week data="Вс"/>
<low data="1"/>
<high data="15"/>
<icon data="/ig/images/weather/cloudy.gif"/>
<condition data="Облачно с прояснениями"/>
</forecast_conditions>
<forecast_conditions>
<day_of_week data="Пн"/>
<low data="2"/>
<high data="16"/>
<icon data="/ig/images/weather/mostly_sunny.gif"/>
<condition data="Преимущественно солнечно"/>
</forecast_conditions>
<forecast_conditions>
<day_of_week data="Вт"/>
<low data="3"/>
<high data="17"/>
<icon data="/ig/images/weather/sunny.gif"/>
<condition data="Ясно"/>
</forecast_conditions>
</weather>
</xml_api_reply>
Все достаточно просто. Выбираем место, нажимем Enter и видим прогноз погоды. Данные допускается вводить как на Английском, так и на Руcском языке. Конечно строка быть закодирована для передачи данных через URL. Теперь осталось разобрать XML и вывести в удобном для нас виде.
Пример использования на языке PHP:
<?php
function getWeather() {
$requestAddress = "http://www.google.com/ig/api?weather=astrakhan&hl=ru";
// скачиваем данные о погоде
$ch = curl_init();
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_URL, $requestAddress);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
$xml_str = curl_exec ($ch);
curl_close ($ch); // парсим XML
$xml = @simplexml_load_string($xml_str);
// обрабатываем XML
echo '<div id="weather">';
foreach($xml->weather as $item) {
foreach($item->forecast_conditions as $new) {
echo '<div class="weatherIcon">';
echo '<img src="http://www.google.com/' .$new->icon['data'] . '"/><br/>';
echo $new->day_of_week['data'];
echo '</div>';
}
}
echo '</div>';
}
getWeather();
?>
В этом коротком примере мы организовали вывод иконок прогноза погоды на 4 дня. Для понимания принципа этого достаточно. Написание более сложного скрипта оставим читателю. Добавлю, что в приведенном выше XML-ответе в теге <current_conditions> содержится текущая сводка погоды: облачность, влажность, скорость ветра, иконка облачности и температура. В тегах <forecast_conditions> - прогноз облачности и его иконка на близайшие 4 дня. Google Weather API быстро работает, но на сайтах с большой посещаемостью данные лучше кешировать.
Образец использования Google Weather API Вы можете наблюдать на главной странице этого сайта.
Также можно скачать плагин прогноза погоды для CMS Cotonti.
У нас Вы можете заказать создание интернет сайта любой сложности.
От сайта-визитки до портальной системы, корпоративного сайта или интернет магазина.
По всем вопросам просьба обращаться: тел. +7-964-930-50-29 (Краснодар)
e-mail: kalnovalexey@yandex.ru
245848856
Мы находимся в г. Краснодар
Комментарии:
Оставить комментарий:
* Просьба все технические вопросы, которые могут потребовать обсуждения, задавать на форуме.
** все некорректные и рекламные посты будут удаляться, ненормативная лексика и оскорбительные высказывания запрещаются.