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

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

Admin area