Bug bei der Streckenberechnung mit Google Maps
Hallo zusammen,
ich habe eine Ninox Anwendung zur Be- und Abrechnung von Taxifahrten. Darin sind in einer Tabelle die Kundendaten mit Adresse hinterlegt. Diese Adresse kann in der Fahrtentabelle per Button als Abhol- oder Zielort eingefügt werden. Dann gibt es noch einen Button, mit dem man sich die Strecke auf Google Maps anzeigen lassen kann und einen, der die Fahrtdaten anhand dessen berechnet (Fahrtzeit, Strecke). Nun habe ich bei einem Kunden den seltsamen Fall, dass seine Strecken immer falsch berechnet werden - aber nur seine und bei keinem anderen, zumindest nach einigen Stichproben! Und das auch nur, wenn ich seine Adresse per Button aus der Kundendatenbank hole. Wenn ich sie manuell eingebe und neu berechne, ist die Strecke korrekt. Auch, wenn ich mir die Strecke bei Google Maps anzeigen lasse, ist sie korrekt. Kann es sein, dass die Einbindung von Google Maps manchmal ein paar Macken hat oder lasst sich das noch anderweitig erklären?
VG Markus
2 Antworten
-
Ich habe jetzt nochmal etwas Eigenrecherche betrieben. Die Adresse wird mit folgender Formel aus der Kundendatenbank in das Abholziel der Fahrt geschrieben:
if Kunde.'Straße' and Kunde.PLZ and Kunde.Ort then Abholort := location(text(Kunde.'Straße' + " " + Kunde.Hausnummer + ", " + Kunde.PLZ + " " + Kunde.Ort), 0, 0) else alert("Kundenadresse unvollständig!") end
Anschließend wird die Streckenlänge und Fahrtdauer mit folgender Formel berechnet:
let myURL := url("https://maps.googleapis.com/maps/api/distancematrix/json", { origins: Abholort, destinations: Ziel, mode: "car", key: "AIzaSyDa7hY4bvLMF4uxgjc8p64X8Ac2w6zyjOo" }); let gcode := do as server http("GET", myURL) end; let km := number(first(first(gcode.result.rows).elements).distance.value) / 1000; Strecke := km; Fahrdauer := time(number(gcode.result.first(rows).first(elements).duration.value) * 1000);
Nun habe ich ausgewertet, welche Daten denn an die Variable myURL geschickt werden und es ist, wie ich es mir gedacht habe: Wenn ich den Button benutze wird eine andere Adresse übermittelt, als wenn ich die gleiche Adresse manuell eingebe, obwohl die Adresse im Feld "Abholort" in beiden Fällen richtig drinsteht.
Hier das falsche Ergebnis der myURL, wenn ich den Button benutze:
{ "destination_addresses" : [ "Beispielzieladresse" ], "origin_addresses" : [ "Gr\u00fcne Str. 3, 01936 Lau\u00dfnitz, Deutschland" ], "rows" : [ { "elements" : [ { "distance" : { "text" : "20,9 km", "value" : 20859 }, "duration" : { "text" : "21 Minuten", "value" : 1283 }, "status" : "OK" } ] } ], "status" : "OK" }
Hier das korrekte Ergebnis bei manueller Eingabe:
{ "destination_addresses" : [ "Beispielzieladresse" ], "origin_addresses" : [ "Gr\u00fcner Weg 3, 01936 Schwepnitz, Deutschland" ], "rows" : [ { "elements" : [ { "distance" : { "text" : "14,7 km", "value" : 14748 }, "duration" : { "text" : "17 Minuten", "value" : 1047 }, "status" : "OK" } ] } ], "status" : "OK" }
Die Zieladresse ist beide mal dieselbe und wird auch richtig übergeben. Wie kann das sein? Warum wird aus dem Grünen Weg in 01936 Schwepnitz auf einmal die Grüne Straße in 01936 Laußnitz? Kann sich das hier irgendwer erklären?
-
Der Fehler scheint in der URL zu liegen, auch wenn die Adresse dort auch beide mal scheinbar korrekt ist:
Bei Nutzung des Buttons:
Bei manueller Eingabe:
Irgendwie scheinen die Koordinaten nicht richtig übergeben zu werden. Warum das passiert und warum das eine Auswirkung auf die Zielausgabe hat, kann ich mir aber nicht erklären.
Content aside
- vor 1 JahrZuletzt aktiv
- 2Antworten
- 71Ansichten
-
1
Folge bereits