Fahrzeit per google API

@Kronos

Adressen waren X-beliebig und der Key auch. :slight_smile:

Alle Variablen sind „String“.
Habe aber alle möglichen versucht.

$result scheint leer zu sein.

War der Key „beliebig“ für den Post oder auch in Deinem Skript? Wenn letzeres steht in dem Array natürlich nichts drin.
Probiere den Link doch mal im Browser.

Moin,

@Kronos:

Was mir noch eingefallen ist: ich habe eine kleine Änderung vorgenommen und da kann sein dass ich das falsche Fenster kopiert habe und tatsächlich meine Daten zu sehen waren.
In diesem Falle danke, dass Du das bemerkt und gleich geändert hast.
Im Ursprünglichen Beitrag waren die betreffenden Punkte verändert.
Ich wohne auch nicht in Ulm… :smiley:

Wenn ich den link im Browser ausführe kommt eine Seite mit langem Text.
Ersichtlich sind Fahrzeiten, Entfernung und ähnliches.

Gruß

Poste doch bitte mal das komplette Skript so wie es jetzt ist (ohne Key und Adresse ;)). Wenn der Link aus dem Skript im Browser eine sinnvolle Antwort ergibt darf $result eigentlich nicht leer sein.

Hallo

Ich habe das Script bei mir auch einmal eingebaut. Folgendes ist mir aufgefallen:

  • $json_url sollte wohl so lauten:
$json_url = "https://maps.googleapis.com/maps/api/directions/json?"

(In deinem Script gingen wohl die Slashes vergessen)

  • Key habe ich einfach leer gelassen

So hat es bei mir geklappt. Einen Fehler wirft mir das Script aber bei der Variablen „duration_in_traffic“

Der Fehler lautet: „Notice: Undefined index: duration_in_traffic in /var/lib/symcon/scripts/28387.ips.php on line 32“

Dieser Ausdruck kommt im JSON nirgends vor. Was würde in dieser Variable erwartet?

Gruss

                                [duration_in_traffic] => Array
                                    (
                                        [text] => 29 Minuten
                                        [value] => 1716
                                    )

Kommt bei mir vor und gibt die Fahrtzeit in Sekunden an.

Kommt aber nur wenn man eine API_KEY hinterlegt hat, ohne kommt nur die „normale“ Zeit. Muss mich also ein wenig von meinem vorherigen Post distanzieren :smiley:

Genau, mit den passenden, aktivierten APIs klappt es auch mit diesem Wert.

Habe dafür die „Google Maps Directions API“ und die „Google Maps Distance Matrix API“ aktiviert. Ob die zweite API dafür zwingend nötig ist, kann ich aber nicht definitiv sagen.

Moin,

sorry für die späte Antwort, hatte die letzten Tage keine Zeit…:rolleyes:

Wenn ich in der Browserleiste den Aufruf starte bekomme ich eine Seite angezeigt in der alle gesuchten Daten vorhanden sind.

Der selbe Aufruf über das Script bringt keine Ergebnisse.
Einige Variablen werden zwar beschrieben aber das Ergebnis ist NULL.
Die Anderen werfen eine Fehlermeldung aus.:frowning:

Aus irgendeinem Grund wird json_decode nicht oder falsch ausgeführt.:confused:

Script:

<?


$json_url = "https://maps.googleapis.com/maps/api/directions/json?";
$json_string="origin=Germany,Alphastrasse,Beheim&destination=Germany,Bestrasse,Ahausen&mode=driving&language=de-DE&sensor=false&region=de&departure_time=now&traffic_model=best_guess&key=xyz123456";

    $ch = curl_init();
    $options = array(
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING, 'UTF-8',
        CURLOPT_URL =>
        $json_url.$json_string        );

    curl_setopt_array( $ch, $options );

  $result =  curl_exec($ch);

// Getting jSON result string
$result = json_decode($result, true);

//Werte für Direction
    setvalue(25825 /*[Scripte\Google Maps\Streckendaten\Verkehrsinfo\Status]*/ , $result['status']);
    setvalue(11549 /*[Scripte\Google Maps\Streckendaten\Verkehrsinfo\Entfernung]*/ , ceil($result['routes'][0]['legs'][0]['distance']['value']/1000) ." km
");
    setvalue(58573 /*[Scripte\Google Maps\Streckendaten\Verkehrsinfo\Zeit]*/ , ceil($result['routes'][0]['legs'][0]['duration']['value']/60) ." Minuten
");
    setvalue(11165 /*[Scripte\Google Maps\Streckendaten\Verkehrsinfo\Ziel]*/   , $result['routes'][0]['legs'][0]['end_address']);
    setvalue(59850 /*[Scripte\Google Maps\Streckendaten\Verkehrsinfo\Start]*/ , $result['routes'][0]['legs'][0]['start_address']);
    $stau = $result['routes'][0]['legs'][0]['duration_in_traffic']['value'] -        $result['routes'][0]['legs'][0]['duration']['value'];
    setvalue(50202 /*[Scripte\Google Maps\Streckendaten\Verkehrsinfo\Verzögerung]*/ , ceil($stau/60) ." Minuten");




//Weg zur Arbeit//https://developers.google.com/maps/documentation/embed/start?hl=de
SetValueString(51784 /*[Scripte\Google Maps\Streckendaten\Verkehrsinfo\B2 Map]*/ ,'<iframe width="800" height="600" frameborder="0" style="border:0" src="https://www.google.com/maps/embed/v1/directions?origin=Ort%2C%20Strasse%2029&destination=Ort%2C%20Tiefgarage%20Strasse&key=<KEY>" allowfullscreen></iframe>');

?>

Variablen:

Findet jemand den Fehler? :stuck_out_tongue:

Gruß

Michael

$api = simplexml_load_file(utf8_encode("http://maps.google.ch/maps/api/directions/xml?origin=$home&destination=$ziel&sensor=false&language=de"));
//print_r($api);

$duration = $api->route->leg->duration->text;
$end_address = $api->route->leg->end_address;

$home und $destination musst du noch ergänzen.

Sieht bei mir so aus:

<?

// Ermittlung der Verkehrslage und evtl. Staus 

// URL für direction
	$json_url = "https://maps.googleapis.com/maps/api/directions/json?";

//Google API Key
	$key = "blablablablablablablablablablablablablablablablablabla";

	$json_string="origin=Germany,Schlumpfstrasse,Schlumpfhausen&destination=Germany,Zauberstrasse,Gargamelland&mode=driving&language=de-DE&sensor=false&region=de&departure_time=now&traffic_model=best_guess&key=".$key;

    $ch = curl_init();
    $options = array(        
		CURLOPT_RETURNTRANSFER => true,        
		CURLOPT_ENCODING, 'UTF-8',        
		CURLOPT_URL =>     
		$json_url.$json_string        );

	curl_setopt_array( $ch, $options );

	$result =  curl_exec($ch);

// Getting jSON result string   
	$result = json_decode($result, true);


// Werte für Direction    
	setvalue(23446 /*[Spielwiese\Fahrtzeit/Stauwarner\Status]*/, $result['status']);
	setvalue(48449 /*[Spielwiese\Fahrtzeit/Stauwarner\Entfernung]*/, ceil($result['routes'][0]['legs'][0]['distance']['value']/1000) ." km
");
	setvalue(32331 /*[Spielwiese\Fahrtzeit/Stauwarner\Fahrtzeit (Text)]*/, ceil($result['routes'][0]['legs'][0]['duration']['value']/60) ." Minuten
");
	setvalue(54431 /*[Spielwiese\Fahrtzeit/Stauwarner\Fahrtzeit (Wert)]*/, ceil($result['routes'][0]['legs'][0]['duration']['value']/60));
    setvalue(13474 /*[Spielwiese\Fahrtzeit/Stauwarner\Zielort]*/, $result['routes'][0]['legs'][0]['end_address']);
    setvalue(48585 /*[Spielwiese\Fahrtzeit/Stauwarner\Abfahrtsort]*/, $result['routes'][0]['legs'][0]['start_address']);
    $stau = $result['routes'][0]['legs'][0]['duration_in_traffic']['value'] - $result['routes'][0]['legs'][0]['duration']['value'];
    setvalue(24771 /*[Spielwiese\Fahrtzeit/Stauwarner\Verzögerung]*/, ceil($stau/60) ." Minuten");

// usw.


Hallo

ich habe das gleiche Problem wie @Darklord in #29. Die Variablen werden ohne Fehlermeldung aktualisiert.
Bei direktem Aufruf der URL im Browser werden die korrekten Daten angezeigt wie sie auch im Entwicklerleitfaden der Distance Matrix API angegeben sind.

<? 

//Ermittlung der Verkehrslage und evtl. Staus 

//URL für direction 
$json_url = "https://maps.googleapis.com/maps/api/directions/json?";

//Google API Key
$key="XXXXXXXXXXXXXXXXXXXXXXX";

$json_string="origin=Germany,XXXXXXX,YYYYYYY&destination=Germany,XXXXXXX,YYYYYYY&|via:XXXXXXXX,YYYYYYYY&mode=driving&language=de-DE&sensor=false&region=de&departure_time=now&traffic_model=best_guess&key=".$key; 

$ch=curl_init();
$options=array(CURLOPT_RETURNTRANSFER=>true,CURLOPT_ENCODING,"UTF-8",CURLOPT_URL=>$json_url.$json_string);
	curl_setopt_array($ch,$options); 

$result=curl_exec($ch);

//Getting jSON result string
$result = json_decode($result,true);

//Werte für Direction 
SetValue(49417 /*[GoogleDirection API\ZZZZZZZZZ\ZZZZZZZZZ\Status]*/,$result['status']); 
SetValue(25271 /*[GoogleDirection API\ZZZZZZZZZ\ZZZZZZZZZ\Entfernung]*/,ceil($result['routes'][0]['legs'][0]['distance']['value']/1000));
SetValue(14355 /*[GoogleDirection API\ZZZZZZZZZ\ZZZZZZZZZ\Fahrtzeit]*/,ceil($result['routes'][0]['legs'][0]['duration']['value']/60));
SetValue(11005 /*[GoogleDirection API\ZZZZZZZZZ\ZZZZZZZZZ\FahrtzeitStau]*/,ceil($result['routes'][0]['legs'][0]['duration']['value']/60));
SetValue(50760 /*[GoogleDirection API\ZZZZZZZZZ\ZZZZZZZZZ\Zielort]*/,$result['routes'][0]['legs'][0]['end_address']);
SetValue(58263 /*[GoogleDirection API\ZZZZZZZZZ\ZZZZZZZZZ\Abfahrtsort]*/,$result['routes'][0]['legs'][0]['start_address']);
$stau=$result['routes'][0]['legs'][0]['duration_in_traffic']['value']-$result['routes'][0]['legs'][0]['duration']['value'];
SetValue(10778 /*[GoogleDirection API\ZZZZZZZZZ\ZZZZZZZZZ\Verzögerung]*/,ceil($stau/60));

//Weg zur Arbeit //https://developers.google.com/maps/documentation/embed/start?hl=de 
SetValueString(37291 /*[GoogleDirection API\ZZZZZZZZZ\ZZZZZZZZZ\B2 Map]*/,'<iframe*width="800"*height="600"*frameborder="0"*style="border:0"*src="https://www.google.com/maps/embed/v1/directions?origin=Ort%2C%20Strasse%2029&destination=Ort%2C%20Tiefgarage%20Strasse&key=<KEY>"*allowfullscreen></iframe>'); 

?> 

Grüße

Albert