Cookie

TheJoe.it Into the (open) source

1ott/102

Previsioni del tempo con le Google API e PHP

giuliacci

Vediamo oggi come mostrare sul nostro sito le condizioni meteorologiche, ed eventualmente le previsioni del tempo utilizzando le API di Google e PHP. Questa tecnica può essere inutile la maggior parte delle volte se si gestisce ad esempio un sito personale, ma è sicuramente utile ad esempio per i siti istituzionali, o delle località turistiche, o ancora per gli alberghi, i campeggi e le strutture turistiche in genere.

Alcuni potrebbero obiettare che di servizi del genere ne esistono molti altri, che gratuitamente mettono a disposizione del codice (spesso utilizzando il tag <iframe>) da includere nella pagina. Nel nostro caso però il risultato sarà un’integrazione perfetta con la pagina del nostro sito, il navigatore non sarà rimandato al server di Google, ed avrà la percezione che l’informazione risieda sul nostro server. Se non altro rispetteremo gli standard W3c.

Le righe di codice sono molto poche.

Per visualizzare l’XML fornito da Google è necessario andare su questa pagina:

http://www.google.com/ig/api?weather=[nome città]

Per l’output ho preso come esempio Merate, una piccola cittadina brianzola.

<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="Merate, Lombardy"/>
            <postal_code data="merate"/>
            <latitude_e6 data=""/>
            <longitude_e6 data=""/>
            <forecast_date data="2010-01-05"/>
            <current_date_time data="2010-01-05 19:09:49 +0000"/>
            <unit_system data="SI"/>
        </forecast_information>
        <current_conditions>
            <condition data="Nuvoloso"/>
            <temp_f data="36"/>
            <temp_c data="2"/>
            <humidity data="Umidità: 70%"/>
            <icon data="/ig/images/weather/cloudy.gif"/>
            <wind_condition data="Vento: N a 5 km/h"/>
        </current_conditions>
        <forecast_conditions>
            <day_of_week data="mar"/>
            <low data="-2"/>
            <high data="3"/>
            <icon data="/ig/images/weather/snow.gif"/>
            <condition data="Rovesci nevosi"/>
        </forecast_conditions>
        <forecast_conditions>
            <day_of_week data="mer"/>
            <low data="0"/>
            <high data="6"/>
            <icon data="/ig/images/weather/partly_cloudy.gif"/>
            <condition data="Parzialmente nuvoloso"/>
        </forecast_conditions>
        <forecast_conditions>
            <day_of_week data="gio"/>
            <low data="0"/>
            <high data="4"/>
            <icon data="/ig/images/weather/rain_snow.gif"/>
            <condition data="Pioggia e neve"/>
        </forecast_conditions>
        <forecast_conditions>
            <day_of_week data="ven"/>
            <low data="-1"/>
            <high data="4"/>
            <icon data="/ig/images/weather/rain_snow.gif"/>
            <condition data="Pioggia e neve"/>
        </forecast_conditions>
    </weather>
</xml_api_reply>

Vediamo ora come formattare questo codice ed “incasellarlo” con PHP:

<?
$xml = simplexml_load_file('http://www.google.com/ig/api?weather=bari');
$information = $xml->xpath("/xml_api_reply/weather/forecast_information");
$current = $xml->xpath("/xml_api_reply/weather/current_conditions");
$forecast_list = $xml->xpath("/xml_api_reply/weather/forecast_conditions");
?>
<html>
    <head>
        <title>Google Weather API</title>
    </head>
    <body>
        <h1><?= print $information[0]->city['data']; ?></h1>
        <h2>Today's weather</h2>
        <div class="weather">
            <img src="<?= 'http://www.google.com' . $current[0]->icon['data']?>" alt="weather"?>
            <span class="condition">
            <?= $current[0]->temp_f['data'] ?>° F,
            <?= $current[0]->condition['data'] ?>
            </span>
        </div>
        <h2>Forecast</h2>
        <? foreach ($forecast_list as $forecast) : ?>
        <div class="weather">
            <img src="<?= 'http://www.google.com' . $forecast->icon['data']?>" alt="weather"?>
            <div><?= $forecast->day_of_week['data']; ?></div>
            <span class="condition">
                <?= $forecast->low['data'] ?>° F - <?= $forecast->high['data'] ?>° F,
                <?= $forecast->condition['data'] ?>
            </span>
        </div>
        <? endforeach ?>
    </body>
</html>

Chiaramente andrà tutto inserito nel layout del sito che dobbiamo modificare, ma le impostazioni base rimangono queste.

About

Mantengo questo blog a livello amatoriale dal 2009. Sono appassionato di grafica, tecnologia, software Open Source. Fra i miei articoli non sarà difficile trovarne circa la musica, ed alcuni di riflessioni personali, ma preferisco indirizzare la linea del blog principalmente verso la tecnologia. Per informazioni contattami.

Commenti (2) Trackback (0)
  1. Ho notizie che le API Google per il meteo sono state deprecate, è vero?


Leave a comment

Ancora nessun trackback.