0

Google Maps Formel Hilfe

Wer kann mir helfen. Der Code funktioniert nicht mehr. Er ist für die Berechnung der Kilometer. 

Ich weiß aber nicht warum. Kann mir jemand helfen . Danke schonmal. 

let gcode := text(http("GET", "https://maps.googleapis.com/maps/api/distancematrix/json?origins=" + 'Anfang-Adresse' + "&destinations=" + 'Ziel-Adresse' + "&mode=bicycling&key=***************));

text(extractx(gcode, "\d+.\d+ km"))

7 Antworten

null
    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Thomas,
    eigentlich alles richtig. Ich würde noch mit do as server versuchen. Und  eventuell die Punktnotation statt regex einsetzen. Hier ist ein Kode was bei mir funktioniert:
    ---

    let myURL := url("https://maps.googleapis.com/maps/api/distancematrix/json", {
    origins: 'Anfang-Adresse',
    destinations: 'Ziel-Adresse',
    mode: "bicycling",
    key: "DEIN API KEY"
    });
    let gcode := do as server
    http("GET", myURL)
    end;
    gcode.result.first(rows).first(elements).distance.text

    ---

    Wenn das auch nicht hinhaut, musst du bei Google überprüfen ob dein API Key noch stimmt und die Distancematrix freigegeben ist.

    Leo

    • Thomas_Forster
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo ,

     

    das funktioniert wunderbar.

    Das Problem was ich hatte und noch habe. Die APi wurde nicht geändert bzw deaktiviert. Hast du noch eine  Idee hierfür ?  Das ist ein Auswahl für die einzelen Fahrzeuge.

    Vielleicht hat Google was geändert . Habe schon geschuat bin aber nicht fündig geworden. Danke dir schon mal.

     

    let response := http("GET", "https://maps.googleapis.com/maps/api/distancematrix/json?origins=" + 'Anfang-Adresse' + "&destinations=" + 'Ziel-Adresse' + "&mode=" + if Verkehrsmittel = 1 then
    "Auto"
    else
    if Verkehrsmittel = 2 then
    "Fahrrad"
    else
    if Verkehrsmittel = 3 then
    "zu Fuß"
    else
    if Verkehrsmittel = 4 then "per Bahn" end
    end
    end
    end + "&key=**********");
    let row := first(response.result).rows;
    let element := first(row).elements;
    let dauer := first(element).duration;
    let km := first(element).distance;
    dauer.text

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Na Ja, die trave modes sind ja in deutsch. Die Google Api ist aber in englisch.

    ---

    let travel_modes := ["driving", "bicycling", "walking", "transit"];
    let myURL := url("https://maps.googleapis.com/maps/api/distancematrix/json", {
    origins: 'Anfang-Adresse',
    destinations: 'Ziel-Adresse',
    language: "de",
    mode: text(item(travel_modes, number(Verkehrsmittel) - 1)),
    transit_mode: "rail",
    key: "##############"
    });
    let gcode := do as server
    http("GET", myURL)
    end;
    gcode.result.first(rows).first(elements).duration.text 

    ---

    habe noch language: "de" hinzugefügt damit die Ausgabe von Stunden und Minuten in deutsch bleibt.

    Leo

    • Thomas_Forster
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    vielleicht kannst du mir helfen. Habe das in einem Berechnungsfeld. Das dauert mittlerweile sehr lange beim laden der Datenbank.

    Ich wolltes mit einer Befehlsfläche machen da Zeigt er mir nicht mehr die und Kilometer an sondern nur Zahlen.

    Oder nach einem Auswahlfeld. Also nach Änderung ausfürhren.

    Kannst du mit mit dem Code weiterhelfen ?

    Danke

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Thomas,

    für Kilometer würde ich ein Zahlenfeld nehmen und bei Anzeigeoptionen km hinten anfügen:

    ----

    Zahlenfeld:=number(gcode.result.first(rows).first(elements).distance.value)/1000

    ---

    Leo

    • Thomas_Forster
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Danke dir. Hast du auch eine Idee für die Anzeige der Zeit ( Fahrzeit ) ?

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Wenn es ein Zeitfeld ist dann

    Zeitfeld:=time(number(gcode.result.first(rows).first(elements).duration.value)*1000)

     

    Leo