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
-
Nachtrag: Die keksrolle bin natürlich ich, Jens Peters . Hatte mich versehentlich mit dem Test-Zugang im Forum angemeldet.
-
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...
-
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.
-
wie bereits gesagt: bei mir läuft die Formel ohne Murks auf allen Plattformen.
-
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
-
Gibt es hier bereits Neuigkeiten?
Die Beispiele funktionieren leider alle nicht bei mir... -
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. -
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?
-
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"
}
}
}
}
Content aside
- vor 3 JahrenZuletzt aktiv
- 84Antworten
- 23967Ansichten