Ich habe ein Dilemma mit dem Google Maps API - ich verwende das Objekt GDirections
, um die Zeit zu erhalten, die ich zwischen zwei Punkten zurücklegen muss.Google Maps API - GDirections.getDuration() gibt null zum ersten Mal zurück, funktioniert zum zweiten Mal
Ich habe den folgenden Code in Firebug getestet, so dass die Chancen, dass der Rest meines Codes diesen einen Aufruf beeinflusst, gering ist (ich kann nicht mit der tatsächlichen Karte verknüpfen; es ist auf einem lokalen Computer).
var start = "NY, USA";
var end = "CA, USA";
var searchString = "from: " + start + " to: " + end;
C.console(searchString);
var myDir = new GDirections();
GEvent.addListener(myDir,"load",C.console(myDir,getDuration()));
myDir.load(searchString);
C.console
ist nur eine Funktion, die ich schrieb seine Argumente an die Firebug Debug-Protokoll zu drucken. Wenn ich diesen Code ausführe, gibt es den searchString from: NY, USA to: CA, USA
aus und die Callback-Funktion wird aufgerufen. Es gibt jedoch null
lieber als die Dauer des Objekts GDirections
aus.
nächste I laufen
C.console(myDir.getDuration())
und ouputs
Object seconds=157994 html=1 day 20 hours
wie gewünscht. Weiß jemand, warum es zwei Anrufe benötigt, damit das funktioniert? Ich denke, es ist zeitabhängig, denn im Code, wenn ich es einfach zweimal anrufe, gibt es zwei Mal hintereinander null, was nicht ganz überraschend war. Ich verwende den Ereignis-Listener jedoch bereits, um darauf zu warten, dass er vollständig geladen ist. Ich habe auch versucht, das addoverlay
Ereignis anstelle des load
Ereignisses zu verwenden, aber das funktioniert auch nicht.
Hat jemand das schon mal gesehen oder hat Ideen, wie ich es beheben kann? Jede Hilfe würde sehr geschätzt werden!
Ich schätze die Antwort - es scheint nicht, wie mein Problem aber das gleiche ist. Ich habe nur einen Prozess, um die Anweisungen zu erhalten - ich denke, das GDirections Objekt ist in der Lage, eine Abfrage wie "aus: NY, USA nach: CA, USA" zu nehmen und in der Lage zu sein, die Anweisungen zu bekommen. Die Standorte wurden bereits gefunden und von einer vorherigen Funktion gespeichert - eine ist vom Benutzer eingegeben und die andere ist umgekehrt geokodiert. – munchybunch
: D groß Sie es behoben .. aber ich denke, nur vorsichtig sein, wenn Sie zwei Funktionen auf dieser API ausführen, weil es alle Funktionen Threads und es nervt, wenn Sie Dinge nacheinander tun wollen: D –