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:

$data = json_decode(strip_tags($out), true);

Wenn Sie nur bestimmte Verkehrsdaten benötigen, können Sie eine Filterfunktion verwenden:

// Das Beispiel sucht nach Verkehrsmeldungen der Straße "B30" und gibt alle 6=Staumeldungen und 9=Baustellenmeldungen zurück. Eine Beschreibung der ic- und ty-Werte finden Sie in der API-Dokumentation

// 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&ouml;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
 


Letzte Aktualisierung: 08. Apr. 2020
Seite erstellt am: 31. März 2020