0

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

null
    • Markus_Weise
    • vor 10 Monaten
    • Gemeldet - anzeigen

    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?

    • Markus_Weise
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Der Fehler scheint in der URL zu liegen, auch wenn die Adresse dort auch beide mal scheinbar korrekt ist:

    Bei Nutzung des Buttons:

    https://maps.googleapis.com/maps/api/distancematrix/json?origins=Gr%C3%BCner%20Weg%203%2C%2001936%20Schwepnitz%20%3C0%2C0%3E&[...]

    Bei manueller Eingabe:

    https://maps.googleapis.com/maps/api/distancematrix/json?origins=Gr%C3%BCner%20Weg%203%2C%2001936%20Schwepnitz%20%3C51.3565013%2C13.9727327%3E&[...]

    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 10 MonatenZuletzt aktiv
  • 2Antworten
  • 61Ansichten
  • 1 Folge bereits