Wat is het weer?

Ik ga voor dit voorbeeld een simpele pagina met het weer erop maken. Hiervoor zal ik de OpenWeatherMap API gebruiken, omdat deze redelijk simpel is en je niet moeilijk hoeft te doen met access tokens.

De JSON data ophalen
We beginnen met het ophalen van de data met file_get_contents. Op sommige hosts is file_get_contents geblokkeerd, en zal je dus moeten werken met curl. Ik ga daar nu niet op in, daar zijn genoeg tutorials over te vinden. De URL die ik zal gebruiken is http://api.openweathermap.org/data/2.5/weather?q=Amsterdam,NL&units=metric. Hiermee halen we het huidige weer in Amsterdam op in graden Celcius. Let's begin:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
// haal het huidige weer in Amsterdam op in graden Celcius
$json = file_get_contents('http://api.openweathermap.org/data/2.5/weather?q=Amsterdam,NL&units=metric');
?>

Dat was simpel, toch?

De JSON data parsen
Om te zorgen dat de data bruikbaar is, zullen we het parsen met json_decode, dat zal ook niet zo moeilijk zijn.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
// haal het huidige weer in Amsterdam op in graden Celcius
$json = file_get_contents('http://api.openweathermap.org/data/2.5/weather?q=Amsterdam,NL&units=metric');

// parse de JSON
$data = json_decode($json);
?>


De data weergeven
We zullen nu de data weergeven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
// haal het huidige weer in Amsterdam op in graden Celcius in het Nederlands
$json = file_get_contents('http://api.openweathermap.org/data/2.5/weather?q=Amsterdam,NL&units=metric&lang=nl');

// parse de JSON
$data = json_decode($json);

// laat de stad zien (en het land)
echo '<h1>', $data->name, ' (', $data->sys->country, ')</h1>';

// de algemene informatie over het weer
echo '<h2>Temperatuur</h2>';
echo '<p><strong>Huidig:</strong> ', $data->main->temp, '&deg; C</p>';
echo '<p><strong>Minimum:</strong> ', $data->main->temp_min, '&deg; C</p>';
echo '<p><strong>Maximum:</strong> ', $data->main->temp_max, '&deg; C</p>';

// iets over de lucht
echo '<h2>Lucht</h2>';
echo '<p><strong>Vochtigheid:</strong> ', $data->main->humidity, '%</p>';
echo '<p><strong>Druk:</strong> ', $data->main->pressure, ' hPa</p>';

// en wat informatie over de wind
echo '<h2>Wind</h2>';
echo '<p><strong>Snelheid:</strong> ', $data->wind->speed, ' m/s</p>';
echo '<p><strong>Richting:</strong> ', $data->wind->deg, '&deg;</p>';

// en wat het weer is volgens de API (een array)
echo '<h2>Het weer</h2>';
echo '<ul>';
foreach ($data->weather as $weather) {
    echo '<li>', $weather->description, '</li>';
}

echo '<ul>';
?>

Je kan dit voorbeeld zelf nog uitbreiden met voorspellingen via de URL http://api.openweathermap.org/data/2.5/forecast?q=Amsterdam,NL&units=metric&lang=nl, maar wij gaan nu kijken hoe we dit zelf kunnen genereren.

« Lees de omschrijving en reacties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.