Pierre Porcheret




Voir la liste des articles



21 04 2015


Mais tu es haut

Si vous voulez afficher la météo sur votre site, il y a  deux possibilités.

  • Soit vous utilisez des iframes toutes faite comme il est proposé sur des sites comme météo-france,
  • Soit vous récuperez les informations pour les adapter à votre site.

Ici nous allons afficher les informations récuperer par WebServices, du site OpenWeather, site prévu pour ce genre de manipulations.


Récuperer les informations météo du webservice d'OpenWeather

Le Webservice peut etre pris d'une ville en format XML ou JSON.
Nous allons récupérer le format JSON mais les actions sont similaire pour le XML.

Dans votre code php, il faut interpreter le WebService pour choisir les informtions à récuperer (a adpater selon vos besoins):

$ws_meteo = 'http://api.openweathermap.org/data/2.5/weather?q=<ville>&lang=<langue>&units=<unité>';

dans le flux, il faut entrer la ville, la langue et l'unité (Celsius ou Fahrenheit)

Exemple : http://api.openweathermap.org/data/2.5/weather?q=Paris&lang=fr&units=metric

Il faut bien sur aller sur cette URL pour voir si le flux est bien perçu.

Traitement des informations.

Pour exploiter ce flux, il faut le convertir en une sorte de tableau, exploitable par le php.

Pour cela, il faut utiliser deux fonctions : file_get_contents (qui récupère l'information dans une variable)
et json_decode (qui traduit en tableau ces informations)

$meteo_json  = file_get_contents($ws_meteo);
$data_meteo  = json_decode($meteo_json);

Vous pouvez alors traiter les informations en affichant les variables désirés :

Exemples :
Pour la température :
$meteo_temperature=$data_meteo->main->temp;
$meteo_temperature_min=$data_meteo->main->temp_min;
$meteo_temperature_max=$data_meteo->main->temp_max;

Pour le vent :
$meteo_vent=$data_meteo->wind->speed;

Pour le logo du temps :
 
foreach ($data_meteo->weather as $weather) {
    $meteo_icone=$weather->icon;
}

Pour adapter les informations, il est intérressant de voir le flux JSON pour connaitre l'arborécence.

Pour cela vous pouvez faire un print_r($data_meteo);

Exploitation du logo météo

Pour exploiter le logo il faut faire le lien entre le nom envoyé par le Webservice et vos propres images.

switch ($meteo_icone) {
case '01d':
$icones_temps='icone_soleil.png';
break;
case '13d':
$icones_temps='icone_neige.png';
break;
case '50d':
$icones_temps='icone_brouillard.png';
[...]

 La liste des icones envoyés sont sur le site : http://openweathermap.org/weather-conditions

source : http://openweathermap.org/

 

 

 


categorie :