Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1864to1868
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Distanzberechnung Google Maps

Distanzberechnung Google Maps
14.01.2022 16:59:28
{Boris}
Hallo zusammen,
ich hab mir im Internet diese Function gezockt:

'Calculate Google Maps distance between two addresses
Public Function GetDistance(start As String, dest As String)
Dim firstVal As String, secondVal As String, lastVal As String
firstVal = "https://maps.googleapis.com/maps/api/distancematrix/json?origins="
secondVal = "&destinations="
lastVal = "&mode=car&language=en&sensor=false&key=YOUR_KEY"
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
url = firstVal & Replace(start, " ", "+") & secondVal & Replace(dest, " ", "+") & lastVal
objHTTP.Open "GET", url, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.send ("")
If InStr(objHTTP.responseText, """distance"" : {") = 0 Then GoTo ErrorHandl
Set regex = CreateObject("VBScript.RegExp"): regex.Pattern = """value"".*?([0-9]+)": regex.Global = False
Set matches = regex.Execute(objHTTP.responseText)
tmpVal = Replace(matches(0).SubMatches(0), ".", Application.International(xlListSeparator))
GetDistance = CDbl(tmpVal)
Exit Function
ErrorHandl:
GetDistance = -1
End Function
Den notwendigen API-Key habe ich mir auch besorgt und statt YOUR_KEY in den Code integriert.
Was aber muss ich konkret für die Parameter start und dest vorgeben, damit die Funktion ihren Dienst tut?
Danke für eine kurze Info.
VG, Boris

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Distanzberechnung Google Maps
14.01.2022 18:21:22
Yal
Hallo Boris,
Unter https://developers.google.com/maps/documentation/distance-matrix/overview#maps_http_distancematrix_side_of_road-sh
ist folgende Beispiel mit curl zu finden, wo eine Modifier drin steht

curl -L -X GET 'https://maps.googleapis.com/maps/api/distancematrix/json?origins=37.7680296%2C-122.4375126&destinations=side_of_road%3A37.7663444%2C-122.4412006&key=YOUR_API_KEY'
Ich vermute ohne modifier so

curl -L -X GET 'https://maps.googleapis.com/maps/api/distancematrix/json?origins=37.7680296%2C-122.4375126&destinations=37.7663444%2C-122.4412006&key=YOUR_API_KEY'
Lange Rede kurz gemacht: zwischen Longitude und lattitude soll eine nicht http-request taugliche Komma stehen, die in %2C konvertieren wird ( hex(asc(",")) )
VG
Yal
Anzeige
Schaue ich mir in Ruhe an...
14.01.2022 18:26:30
{Boris}
Hi Yal,
...danke erstmal für Deine Antwort! Bin jetzt aber für heute afk - melde mich morgen wieder!
VG, Boris
AW: Distanzberechnung Google Maps
15.01.2022 09:46:24
{Boris}
Hi Yal,
ich bin wohl zu blöd für diese UDF, denn ich weiß nicht, was ich bei "Von" und "Nach" eingeben muss:
Userbild
Die UDF habe ich wie folgt im Einsatz:

'Calculate Google Maps distance between two addresses
Public Function GetDistance(start As String, dest As String)
Dim firstVal As String, secondVal As String, lastVal As String
firstVal = "https://maps.googleapis.com/maps/api/distancematrix/json?origins="
secondVal = "&destinations="
lastVal = "&mode=car&language=en&sensor=false&key=" & Tabelle1.Range("B1")
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
url = firstVal & Replace(start, " ", "+") & secondVal & Replace(dest, " ", "+") & lastVal
objHTTP.Open "GET", url, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.send ("")
If InStr(objHTTP.responseText, """distance"" : {") = 0 Then GoTo ErrorHandl
Set regex = CreateObject("VBScript.RegExp"): regex.Pattern = """value"".*?([0-9]+)": regex.Global = False
Set matches = regex.Execute(objHTTP.responseText)
tmpVal = Replace(matches(0).SubMatches(0), ".", Application.International(xlListSeparator))
GetDistance = CDbl(tmpVal)
Exit Function
ErrorHandl:
GetDistance = -1
End Function
Im Einzelschrittmodus steigt sie in dieser Zeile aus (bzw. springt zum ErrorHandl):

If InStr(objHTTP.responseText, """distance"" : {") = 0 Then GoTo ErrorHandl
Bitte erhelle mich ;-)
VG, Boris
Anzeige
Der in B1 gezeigt API-Key...
15.01.2022 09:50:09
{Boris}
Hi,
...ist natürlich auf dem Screenshot nicht vollständig - aber in der Zelle steht er natürlich komplett drin.
VG, Boris
Ich bin wohl zu blöd...
15.01.2022 09:57:14
{Boris}
Hi Walter,
...um unseren eigenen Beitrag zu verstehen.
Kann ich damit mit Adresseingabe (also ohne Breite und Länge) die Entfernung zwischen Kö und Reeperbahn berechnen?
VG, Boris
nö, so direkt nicht
15.01.2022 10:46:14
WF
Hi,
in der Tabelle Zellen G42; H42 und i42 kannst Du eine Adresse eingeben
und in D43 ergibt sich der entspr. link zu Google-Maps.
Dort die Fundstelle rechts angeklickt, erhältst Du die Koordinaten.
WF
Anzeige
OK - dann hab ich`s kapiert...
15.01.2022 10:52:08
{Boris}
Hi Walter,
...mir schwebt aber die direkte Berechnung in Excel mit "Von-Adresse" und "Nach-Adresse" vor.
VG, Boris
AW: Distanzberechnung Google Maps
15.01.2022 10:30:03
volti
Hallo Boris,
falls Du nicht weiterkommen solltest, hier ggf. noch eine Alternative.
Braucht allerdings IE....
Entfernungsrechner
oder
Entfernungsrechner Formel
Gruß
Karl-Heinz
Ich habe den IE aber nicht mehr...
15.01.2022 10:45:04
{Boris}
Hi Karl-Heinz,
...im Einsatz :-/
Das muss doch aber auch irgendwie mit der geposteten Function in Kombi mit dem Google-API-Key funktionieren - ich raff halt den Code nicht ansatzweise, um daraus ableiten zu können, was ich bei "Von" und "Nach" eintragen muss, damit die Berechnung funktioniert....
VG, Boris
Anzeige
AW: Distanzberechnung Google Maps
15.01.2022 10:52:36
Herbert_Grom
Hallo Boris,
ich habe mich jahrelang mit diesem Thema beschäftigt und es hat auch immer gut funktioniert. Doch seit Google 2020 seine API-Schlüssel-Verwaltung geändert hat, klappt das leider nicht mehr. Zumindest die Verwendung der Google-Entfernungsberechnung mit den tatsächlichen Straßen-Distanzen. Hierzu habe ich nur noch eine Lösung gefunden und die findest du hier:
https://www.kilometerentfernungen.de/entfernungsrechner/
Servus
Danke Dir...
15.01.2022 10:59:25
{Boris}
Hi Herbert,
...aber auf ein kostenpflichtiges Angebot möchte ich erstmal verzichten.
Wäre aber gut zu wissen, ob das mit dem API-Key überhaupt noch funktioniert...?
Ich hab davon halt mal überhaupt keine Ahnung. Hab nur brav befolgt, was vorgegeben wurde und mir den API-Key organisiert... ;-)
VG, Boris
Anzeige
AW: Danke Dir...
15.01.2022 11:27:11
Herbert_Grom
Hi Boris,
grundsätzlich funktioniert das auch jetzt noch über einen API-Key, aber den muss man bei Google kaufen, jedenfalls ist das so bei Fred Wielakker so. Der verwendet auch einen API-Key, der funktioniert aber nur über seinen Server oder Internet-Adr. oder so. Warum weiß ich nicht genau. Aber er funktioniert, wenn man ihn bei ihm kauft. Ich habe das für einen Kunden von mir so gebastelt und es funzt.
Servus
Google Cloud Plattform
15.01.2022 11:39:21
{Boris}
Hi Herbert,
...ich hab die Google-Seite (bei "Beantragung" des Keys) so verstanden, dass man 200 USD "Guthaben" bekommt - was monatlich ca. 25000 Aufrufen entspricht.
Da ich das nur selbst nutzt, werde ich vielleicht 100 Aufrufe haben - mehr nicht.
Aber was ich noch nicht gemacht habe (weil ich davon keine Ahnung habe), ist den 0Auth-Zustimmungsbildschirm zu konfigurieren:
Userbild
Was ist das genau?
VG, Boris
Anzeige
Kann mir noch jemand helfen..?
15.01.2022 17:42:40
{Boris}
Hallo zusammen,
...denn ich würde das gerne zum Laufen bringen - und hier sind doch so viele VBA-Cracks unterwegs - wär doch gelacht, wenn das nicht klappen würde ;-)
VG, Boris
clever-excel-forum.de/Forum-Komplettloesungen
17.01.2022 13:12:42
lupo1
... als sehr frequentiert mit dem Thema.
Ob voltis "luftlinie" mittlerweile auch außerhab IE funktioniert, sehe ich aufgrund seiner Äußerung in diesem Thread hier bei herber jedoch negativ.
Merci!
17.01.2022 15:28:15
{Boris}
Hi Lupo,
...falls ich das mit dem API-Key nicht gebacken kriegen sollte, werde ich mich sicher umorientieren (müssen) - danke für den Link!
VG, Boris
AW: clever-excel-forum.de/Forum-Komplettloesungen
18.01.2022 14:26:31
volti
Hallo Lupo,
ich hatte mich zwischenzeitlich, da der iE ja immer weniger genutzt werden kann, anderweitig probiert.
Der Aufruf mit Übergabe von Start und Ziel und auch die Datenermittlung unter MS-Edge klappt im Prinzip.
Aber leider wird nur der Wert für die Luftlinie ausgegeben, den ja meist niemand brauchen kann.
Die anderen Werte stehen nur mit einem "-" im Quelltext, so dass das (noch) wenig Sinn macht.
Für die Anzeige selbst werden sie wahrscheinlich on the fly berechnet.
Warum es da Unterschiede zum IE gibt entzieht sich meiner Kenntnis.
Somit habe ich es erst mal wieder weggelegt. :-(
Gruß
Karl-Heinz
Anzeige
Es läuft!
18.01.2022 21:29:05
{Boris}
Hallo zusammen,
vorab: Es läuft! Sowohl mit der UDF als auch mit der hier https://www.ms-office-forum.net/forum/showpost.php?p=2058237&postcount=4 verlinkten Datei von WS-53 (die ich eigentlich noch viel besser finde)! :-)
Offensichtlich lag es an der Bezahlmethode in Google Cloud - ich hatte sehr wohl eine Methode (Kreditkarte) in meinem Google-Konto hinterlegt - aber das hat wohl so nicht gereicht. Habe das ganze Anmeldeprozedere für den API-Key wiederholt, dabei nen neuen Key erhalten, die Rechnungsmodalitäten bestätigt - und dann war es das!
Ich danke allen, die mit hier ihren Gehirnschmalz geschenkt haben!
VG, Boris
Anzeige

12 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige