Cookie

Previsioni del tempo con le Google API e PHP

Pubblicato da TheJoe il

Tempo di lettura stimato: 2 minuti

Attenzione


Questo articolo è stato pubblicato più di un anno fa, potrebbero esserci stati sviluppi.
Ti preghiamo di tenerne conto.

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.


TheJoe

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.

2 commenti

Filo · 29 Febbraio 2016 alle 6:42 PM

Ho notizie che le API Google per il meteo sono state deprecate, è vero?

    Giovanni Mauri · 5 Giugno 2016 alle 2:24 PM

    E’ vero. Google ha arbitrariamente cancellato il servizio senza preavviso, né spiegazioni.
    Esistono valide alternative. Una che mi sento di consigliare è OpenWeatherMap – http://openweathermap.org/api
    Grazie del commento e scusa per il ritardo.

Lascia un commento

Segnaposto per l'avatar

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.