0

Automatische Kilometerberechnung über Google

Für alle, die auf der Suche nach einer automatischen Berechnung der Kilometer sind, hier mein Lösungsansatz:

Start-Adresse (Text-Feld)
Ziel-Adresse (Text-Feld)
Google (Berechnungs-Feld)
Km (Berechnungs-Feld)

Code Google-Feld

text(http("GET", "https://maps.googleapis.com/maps/api/distancematrix/json?origins=" + 'Start-Adresse' + "&destinations=" + 'Ziel-Adresse' + "&key=API_KEY"))

Den API-Key von Google kann man sich hier erstellen lassen und bei API_KEY einsetzen.

Code Km-Feld

let at := text(extractx(Google, "(text...)\d*.\d*"));
text(extractx(at, "\d+.\d+"))

Als Übergangslösung bis Ninox mit Arrays arbeiten kann, funktioniert es super.
Sobald man nun in das Start- und Zielfeld eine Adresse eingibt, berechnet er die Kilometer der schnellsten Route.

Man kann das ganze auch noch mit einem Button vervollständigen, der die Route in Google-Maps oder Apple-Maps öffnet.

Für Google: 

openURL("http://maps.google.com/maps?saddr=" + text('Start-Adresse') + "&daddr=" + text('Ziel-Adresse') + "&hl=de")

Für Apple-Karten:

openURL("http://maps.apple.com/maps?daddr=" + text('Straße' + " " + 'Hausnr.' + " " + PLZ + " " + Ort))

84 Antworten

null
    • Jens_Peters_icloud
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Nachtrag: Die keksrolle bin natürlich ich, Jens Peters . Hatte mich versehentlich mit dem Test-Zugang im Forum angemeldet.

    • domkai
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo zusammen, 

    danke für eure Rückmeldungen. Leider ist die Mac App sehr essentiell, da ich einen großteil darüber erledige. Ich hoffe das die Entwickler da anpacken... 

    • Jens_Peters
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ich stehe gerade in engen Kontakt mit Sam vom Support und gebe Bescheid, wenn's was Neues gibt. Bei mir hängt da auch ne Menge dran.

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    wie bereits gesagt: bei mir läuft die Formel ohne Murks auf allen Plattformen.

    • maxmax
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Auch ich habe Probleme mit dem Code. In der Web-Version läuft alles super. Da muss auch zwingend der do as server Code verwendet werden, sonst funktioniert es bei mir nicht. Die Distance Matrix API ist als Server-API konzipiert. Aufrufe durch JavaScript von einer fremden Domain werden von Google blockiert. (Cross Origin Error)

    Daher, so meine Überlegungen, funktioniert mein Code nicht in der "nativen" MacOS App. Oder hat jemand eine andere Idee bzw. Lösung?

    Zur Referenz mein Code:

    let StLat := string(latitude(Start));
    let StLng := string(longitude(Start));
    let DsLat := string(latitude(Ziel));
    let DsLng := string(longitude(Ziel));
    let gURL := url("https://maps.googleapis.com/maps/api/distancematrix/json", {
    origins: text(StLat + "," + StLng),
    destinations: text(DsLat + "," + DsLng),
    mode: "car",
    key: "xxxxxxxxxxxxxxxxxx"
    });
    let gcode := do as server
    http("GET", gURL)
    end;
    Debug := text(gcode);
    Distanz := number(first(first(gcode.result.rows).elements).distance.value) / 1000

    • domkai
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Gibt es hier bereits Neuigkeiten? 
    Die Beispiele funktionieren leider alle nicht bei mir... 

    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo
    Ich habe kein Google-Account und kann es deshalb nicht testen.
    Ich weiß auch nicht ob gURL korrekt definiert ist.
    Aber ich würde den let gcode anders schreiben:
    do as server;
    let gcode := http("GET",gURL)
    end;

    Wenn der Aufruf aus der App erfolgt und die Datenbank in 'Meine Datenbanken' liegt, sollte 'do as server' und das nachfolgende 'end' im Script gelöscht werden.

    • Maurice
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Bei mir jetzt mit Version 3.4.4 auch in das Problem gerutscht. Keine km-Abfrage mehr möglich. Habe mir aus einem BackUp Version 3.1.3 gezogen, jetzt geht es wieder.

    Das stimmt mich doch sehr skeptisch, Ninox meinem Arbeitgeber zu empfehlen. Seit über drei Jahren wartet die Community auf eine Verbesserung der PDF-Ausgabe (Stichwort: mehrseitiges Layout), jetzt dieser Bug, der über ein halbes Jahr nicht ausgeräumt wird.

    Ninox-Team: gibt eine verlässliche Aussage?

    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo an alle Routenplaner,

     

    ich musste mich unlängst auch mit diesem Thema auseinandersetzen und habe dabei noch den openrouteservice.org entdeckt und nutze den auch. Der ist quasi kostenlos, hat aber natürlich tägliche bzw. minütliche Abfragegrenzen. Die API kann aber nicht nur Route mit mehreren Zwischenzielen und Wahl des Mittels (Car,Bike, zu Fuß) sondern auch Matrix, Optimierung und Isochrones - also "wohin komme ich überall innerhalb 1 Std"...

    Die API gibt als Beispiel für Route mit Waypoints folgendes zurück:

     

    {
    "result": {
    "routes": [
    {
    "summary": {
    "distance": 12101.3,
    "duration": 1137.4
    },
    "segments": [
    {
    "distance": 12101.3,
    "duration": 1137.4,
    "steps": [
    {
    "distance": 42.7,
    "duration": 5.1,
    "type": 11,
    "instruction": "Weiter westlich",
    "name": "-",
    "way_points": [
    0,
    5
    ]
    },
    {
    "distance": 651.3,
    "duration": 128.6,
    "type": 1,
    "instruction": "Biegen Sie rechts auf Ophof ab",
    "name": "Ophof",
    "way_points": [
    5,
    24
    ]
    },
    {
    "distance": 383,
    "duration": 91.9,
    "type": 1,
    "instruction": "Biegen Sie rechts auf Bornbarg ab",
    "name": "Bornbarg",
    "way_points": [
    24,
    34
    ]
    },
    {
    "distance": 396.9,
    "duration": 31.7,
    "type": 1,
    "instruction": "Biegen Sie rechts auf Bundesstraße, K 21 ab",
    "name": "Bundesstraße, K 21",
    "way_points": [
    34,
    52
    ]
    },
    {
    "distance": 820.6,
    "duration": 98.5,
    "type": 0,
    "instruction": "Biegen Sie links auf In de Röth ab",
    "name": "In de Röth",
    "way_points": [
    52,
    62
    ]
    },
    {
    "distance": 662.8,
    "duration": 79.5,
    "type": 0,
    "instruction": "Biegen Sie links auf Op'n Felln ab",
    "name": "Op'n Felln",
    "way_points": [
    62,
    78
    ]
    },
    {
    "distance": 1458.5,
    "duration": 116.7,
    "type": 0,
    "instruction": "Biegen Sie links auf Dorfstraße ab",
    "name": "Dorfstraße",
    "way_points": [
    78,
    109
    ]
    },
    {
    "distance": 6913.4,
    "duration": 469.4,
    "type": 0,
    "instruction": "Biegen Sie links auf Quickborner Straße ab",
    "name": "Quickborner Straße",
    "way_points": [
    109,
    264
    ]
    },
    {
    "distance": 485.5,
    "duration": 47.3,
    "type": 13,
    "instruction": "rechts halten auf Ellerauer Straße, L 76",
    "name": "Ellerauer Straße, L 76",
    "way_points": [
    264,
    278
    ]
    },
    {
    "distance": 190.5,
    "duration": 45.7,
    "type": 1,
    "instruction": "Biegen Sie rechts auf Torfstraße ab",
    "name": "Torfstraße",
    "way_points": [
    278,
    289
    ]
    },
    {
    "distance": 96.1,
    "duration": 23.1,
    "type": 5,
    "instruction": "Biegen Sie leicht rechts auf Torfstraße ab",
    "name": "Torfstraße",
    "way_points": [
    289,
    299
    ]
    },
    {
    "distance": 0,
    "duration": 0,
    "type": 10,
    "instruction": "Sie erreichen Torfstraße (links)",
    "name": "-",
    "way_points": [
    299,
    299
    ]
    }
    ]
    }
    ],
    "bbox": [
    9.778109,
    53.687088,
    9.904265,
    53.734312
    ],
    "geometry": "a_vfI_ztz@EXKZEBOAOGn@eDZ}AD{@E_ASw@MWQ_@kAwBqCeFKSM]Ky@Ci@@kBJ_ICm@Eq@c@oDGQNQh@qBn@sA`AeBJOvA}B~AkChB}CB]CY`AGb@Cv@CTCl@Et@Cp@ITC^CLAJAXABAr@EZAHAhBOjAQEkATiB`C_HhGySUcFEyB?uFFuCTsEFkD[?g@A}@SmBm@wGuD{D{AEKCOJ{AByAImC@_D@{@?eCAc@AI_Ah@uC|@e@NaCv@k@Dm@FiAFkAFYCWISUQ_@eAaEwAyEs@wB[uACKKi@Gm@g@sJw@sHM_BC}@SkOEoEByB@yA@_ABuD?uDFeB{@gA}@kAm@m@}BqBu@o@]WgA_ASOSKw@WiBK}@[q@a@i@}@[cAmBiIEUs@aCc@eAa@m@]YyCaAQI_@W{@s@UUUUm@g@g@[e@W{Ae@m@WUQ]_@Ye@aEaJuIuRwAqDa@{AoAsGc@uBMq@_A_Fk@sCq@mCy@aCoAwCyDcIkKkUwHkP}CqG_A}Aw@eAiDmDeAqAs@mAw@qBk@wBOo@o@gDe@oB]mAiA_DgAeDk@kBSs@M{@WgEM{@Mk@Qm@Se@KUe@}@s@qAcAgCUs@g@{BaA{EOu@I_@G_@Ou@QsAMuAWuFKaDGaDCuC?wIB_B@m@LqCLmCp@cLNkDDcB?yAA_@As@GiAKuAK}@m@mEs@{Es@wESuAYqAGSUk@uBqD_@_AWmAi@_D]qA]}@y@oAo@i@aAe@iD_AaB_@KAc@Ko@Gu@Aq@Dk@N{@\\oClAg@Jg@Fq@Am@Ky@][U{@cA[g@Wi@k@iAk@_Ac@m@y@gAYe@GQS_AOm@O}AE_A?IAeC?y@AMAMQiCIIGy@WoBCUMcAiAmJa@oCKk@i@uBWaAg@mBQq@i@cB[}@AGXa@XWv@Of@YZc@L[HaAFe@BMJc@RYJENEREb@G@ATEFAVEREH@",
    "way_points": [
    0,
    299
    ]
    }
    ],
    "bbox": [
    9.778109,
    53.687088,
    9.904265,
    53.734312
    ],
    "metadata": {
    "attribution": "openrouteservice.org | OpenStreetMap contributors",
    "service": "routing",
    "timestamp": 1631652502489,
    "query": {
    "coordinates": [
    [
    9.778332,
    53.693333
    ],
    [
    9.904722,
    53.732221
    ]
    ],
    "profile": "driving-car",
    "format": "json",
    "language": "de"
    },
    "engine": {
    "version": "6.6.1",
    "build_date": "2021-07-05T10:57:48Z",
    "graph_date": "2021-08-29T10:11:37Z"
    }
    }
    }
    }