https://www.b30oberschwaben.de/
API-Beispielcodes
Die Verkehrsdaten API gibt Entwicklern die Möglichkeit weltweite Echtzeitverkehrsdaten in öffentlich zugänglichen Mobil- und Webanwendungen zu verwenden. Auf dieser Seite finden Sie Beispiele, wie Sie die API verwenden können.
Nutzung in PHP
Datenabruf
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.b30oberschwaben.de/verkehrsdaten.api?tir=6020674.4486462,1033673.2176647949,6195693.483179452,1143769.7156602743&tiz=10&tif=json&til=de&tik=YourApiKey');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$out = curl_exec($ch);
curl_close($ch);
Nach der Ausführung enthält die Variable $out die vom Verkehrsdatenserver zurückgegebene Daten: Entweder eine Fehlermeldung (als Text) oder die gewünschten Daten im JSON- oder XML-Format.
Rückgabedaten verarbeiten
Zuerst ist zu prüfen, ob ein Fehlercode zurückgegeben wurde. Ist das nicht der Fall können Daten im JSON-Format als assoziatives Array nutzbar gemacht werden:
Wenn Sie nur bestimmte Verkehrsdaten benötigen, können Sie eine Filterfunktion verwenden:
// getDesiredData(arr $data, [str $road], [str $icfilter], [str $tyfilter]);
$data = getDesiredData($data, 'B30', '6,9');
function getDesiredData($data, $road='A1,A2,A3,A4,A5,A6,A7,A8,A9', $icfilter='0,1,2,3,4,5,6,7,8,9,10,11,12,13', $tyfilter='0,1,2,3,4') {
$out = null;
if ( (isset($data['tm']['poi'])) and (is_array($data['tm']['poi'])) ) {
foreach ($data['tm']['poi'] as $poi => $values) {
if (
/*road label exists */ (isset($values['r'])) and
/*road matches */ (preg_match('/^'.$values['r'].'|\,'.$values['r'].'\,|'.$values['r'].'$/i', $road)) and
/*category matches */ (preg_match('/^'.$values['ic'].'|\,'.$values['ic'].'\,|'.$values['ic'].'$/', $icfilter)) and
/*magnitude matches */ (preg_match('/^'.$values['ty'].'|\,'.$values['ty'].'\,|'.$values['ty'].'$/', $tyfilter))
) {
$out[$values['id']] = $values;
$out[$values['id']]['topic'] = str_ireplace(' ('.$road.')', '', $values['f'] .' - '. $values['t']);
$out[$values['id']]['msg'] = ($values['ic'] == 6) ? (getTrafficFlowInfo($values)) : ($values['d'] .' '. getLength($values['l']));
} // end isset r and r == $road
} // end foreach $data $poi
} // end is array $data['tm']['poi']
return $out;
} // end function get DesiredData
function getTrafficFlowInfo($poi) {
// length (l)
$out = getLength($poi['l']);
// delay (dl)
if (isset($poi['dl'])) {
switch ($poi['ty']) {
case 1: // minor delay
$out .= ' dichter Verkehr';
break;
case 2: // moderate delay
$out .= ' stockender Verkehr';
break;
case 3: // major delay
$out .= ' Stau';
break;
} // end switch $poi[ty] (magnitude of delay)
$out .= (isset($poi['c'])) ? (', '. $poi['c']) : '';
$out .= '<br />Verzögerung ca. '. strftime('%M:%S Min.', mktime(0,0,$poi['dl']));
} // end isset dl
return $out;
} // end function getTrafficFlowInfo
function getLength($l) {
return 'ca. '. number_format($l/1000, 1, ',', '.') .' km';
} // end function getLength
Seite erstellt am: 31. März 2020