2010
Jan
5

Previsioni del tempo con le Google API e PHP


Deprecated: Non-static method StringParser_Node::destroyNode() should not be called statically, assuming $this from incompatible context in /membri2/asbruff/flatpress/fp-plugins/bbcode/inc/stringparser.class.php on line 358

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.


Strict Standards: Only variables should be passed by reference in /membri2/asbruff/flatpress/fp-includes/core/core.fpdb.class.php on line 268

Deprecated: Non-static method StringParser_Node::destroyNode() should not be called statically, assuming $this from incompatible context in /membri2/asbruff/flatpress/fp-plugins/bbcode/inc/stringparser.class.php on line 358

Calendario


Strict Standards: Only variables should be passed by reference in /membri2/asbruff/flatpress/fp-includes/core/core.fpdb.class.php on line 256

Tags

  MPD     Flatpress     Javascript     SivamDesign.com     Mencoder     Hydrogen     Audio     hoster     Ardour     Stampa     Linux4one     Prey     Brushes         Mac OS X     Xfce4     rSync     Google     Css     Tips     Youtube     Software     GoogleBuzz     Html     Tilda     Dyne|bolic     Distribuzioni     Linutop     WebArchive     Meebo     Pidgin     Siti     Sicurezza     Linux     OpenVZ     Aruba     Sourceforge     Audacity     Ajax     CentOS     Web     TrueCrypt     Video     Fotoxx     Gimp     Gmail     AspirOne     GnomeMusicPlayerClient     Samba     Blog     Alien     Symbian     Shell     mac4lin     Open Source     VHosting     Social Network     StyleShout.com     htaccess     SongBird     Firefox     Global menu     ChromeOS     Netbook     HowTo     Tech     Grafica     Fedora     Pure|dyne     Ubuntu     Php     Jack     Tutorial     SplitToning     GoogleVideo     Nokia     Gnome  

Admin area