Наткнулся на набор бесплатных картинок с погодными условиями. Пришла в голову мысль сделать информер погоды со своими иконками погоды. С яндексом подружить не удалось, но попался сайт http://openweathermap.org/
. Есть открытый API, многое правда самому пришлось додумывать)
Узнаем id нужного города, получаем xml файл с погодой, закидываем данные в массив, раскладываем данные по переменным.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<? $city2_id=524901; // id города openweather.org $data_file2="http://api.openweathermap.org/data/2.5/weather?id=$city2_id&mode=xml&lang=ru&units=metric"; // адрес xml файла $data_file2 = file_get_contents($data_file2,0); //получаем данные о погоде из xml файла $xml2 = new SimplexmlElement($data_file2); //помещаем данные в массив $city2= $xml2->city[name];//забиваем необходимые данные в переменные $temperarure = $xml2->temperature[value]; $weather_id = $xml2->weather[number]; $weather_icon = $xml2->weather[icon]; $weather_type = $xml2->weather[value]; $pressure = $xml2->pressure[value]; $humidity = $xml2->humidity[value]; $sunrise = $xml2->city->sun[rise]; $sunset = $xml2->city->sun[set]; $windspeed = $xml2->wind->speed[value]; $windcode = $xml2->wind->direction[code]; ?> |
<? $city2_id=524901; // id города openweather.org $data_file2="http://api.openweathermap.org/data/2.5/weather?id=$city2_id&mode=xml&lang=ru&units=metric"; // адрес xml файла $data_file2 = file_get_contents($data_file2,0); //получаем данные о погоде из xml файла $xml2 = new SimplexmlElement($data_file2); //помещаем данные в массив $city2= $xml2->city[name];//забиваем необходимые данные в переменные $temperarure = $xml2->temperature[value]; $weather_id = $xml2->weather[number]; $weather_icon = $xml2->weather[icon]; $weather_type = $xml2->weather[value]; $pressure = $xml2->pressure[value]; $humidity = $xml2->humidity[value]; $sunrise = $xml2->city->sun[rise]; $sunset = $xml2->city->sun[set]; $windspeed = $xml2->wind->speed[value]; $windcode = $xml2->wind->direction[code]; ?>
Выполняем нужные преобразования с данными,
1 2 3 4 5 6 7 8 |
<? if ($temperarure>0) {$temperarure='+'.$temperarure;}// Если значение температуры положительно, для наглядности добавляем "+" $pressure = $pressure * 0.75006375541921; //переводим из hPa в mmHg $pressure = round($pressure); //округляем $temperarure = round($temperarure); $sunrise = date('H:i',strtotime("+4 hours", strtotime($sunrise)));//меняем формат даты и прибавляем 4 часа $sunset = date('H:i',strtotime("+4 hours", strtotime($sunset))); ?> |
<? if ($temperarure>0) {$temperarure='+'.$temperarure;}// Если значение температуры положительно, для наглядности добавляем "+" $pressure = $pressure * 0.75006375541921; //переводим из hPa в mmHg $pressure = round($pressure); //округляем $temperarure = round($temperarure); $sunrise = date('H:i',strtotime("+4 hours", strtotime($sunrise)));//меняем формат даты и прибавляем 4 часа $sunset = date('H:i',strtotime("+4 hours", strtotime($sunset))); ?>
Формируем вывод и выводим все это дело
1 2 3 4 5 6 |
<? $title = "Город: ".$city2."\n". $weather_type." \nДавление: ".$pressure." мм рт. ст.\nВетер: ".$wind[trim ($windcode)].", ".$windspeed." м/с \nВлажность: ".$humidity."% \nВосход: ".$sunrise."\nЗакат: ".$sunset;//формируем данные для вывода в title картинки echo ("<img src=\"/blocks/weather/images/$weather_icon.png\" alt=\"$weather_type\" title=\"$title\" >"); //путь к кртинкам должен быть абсолютным echo ("$temperarure<sup>o</sup>C<br>");//выводим все безобразие ?> |
<? $title = "Город: ".$city2."\n". $weather_type." \nДавление: ".$pressure." мм рт. ст.\nВетер: ".$wind[trim ($windcode)].", ".$windspeed." м/с \nВлажность: ".$humidity."% \nВосход: ".$sunrise."\nЗакат: ".$sunset;//формируем данные для вывода в title картинки echo ("<img src=\"/blocks/weather/images/$weather_icon.png\" alt=\"$weather_type\" title=\"$title\" >"); //путь к кртинкам должен быть абсолютным echo ("$temperarure<sup>o</sup>C<br>");//выводим все безобразие ?>
Стандартные картинки подменяем своим, не меняя имени.
У меня получилось вот так:
1 |
http://web.scgarage.ru/blocks/weather/index.php |
http://web.scgarage.ru/blocks/weather/index.php
При наведении на иконку, отображается дополнительная информация.
spasibo ! 🙂
Доброго времени суток! Извиняюсь за глупый вопрос: КАК получить xml файл с погодой?
xml файл генерирует openweathermap.org. Точнее он выдает актуальные данные в этом формате
«Точнее он выдает актуальные данные в этом формате» — А где конкретно на openweathermap.org. можно получить актуальные данные в этом формате? И еще, при регистрации я получил API key. Как именно он используется в данном коде и связан он с xml файлом? Спасибо!
Почитайте здесь
Единственное плохо то что мало картинок на разные погодные условия. Например нет снега днём.