2010
Jan
5

Previsioni del tempo con le Google API e PHP

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.

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.

Add comment

Fill out the form below to add your own comments

User data





Add your comment


Admin