OpenRouteService Direction API über VBA nutzen
03.11.2023 13:56:54
Hoecker
Ich möchte die Distanz zwischen zwei Koordinaten (lat,lon) per OpenRouteService automatisch berechnen lassen. Dafür habe ich einen VBA Code gebastelt. Wenn ich diesen ausführe bekommt meine Request auch den Status 200, sprich es gibt eine erfolgreiche Antwort.
Wenn es aber jetzt daran geht, das Ganze per JsonConverter umzumünzen und auszulösen, bekomme ich ständig einen Laufzeitfehler "438: Objekt unterstützt diese Eigenschaft oder Methode nicht" in der JsonConverter Zeile. Vielleicht hat ja jemand eine Idee.
Darüber hinaus weiß ich jetzt nicht so ganz, wie ich am besten die Distanz aus der Json Antwort auslese.
Wenn sonst noch etwas benötigt wird, gerne eben melden.
Hier der bisherige VBA Code:
Sub GetTruckDistance()
Dim request As Object
Set request = CreateObject("MSXML2.ServerXMLHTTP.3.0")
Dim url As String
url = "https://api.openrouteservice.org/v2/directions/driving-car/json"
' Setzen der HTTP-Methode und Header
request.Open "POST", url, False
request.SetRequestHeader "Accept", "application/json, application/geo+json, application/gpx+xml, img/png; charset=utf-8"
request.SetRequestHeader "Authorization", "5b3ce3597851110001cf6248f4f6116a3fc647398202a91d7f11a224"
request.SetRequestHeader "Content-Type", "application/json; charset=utf-8"
' JSON-Daten für den POST-Request
Dim jsonData As String
jsonData = "{""coordinates"":[[8.681495,49.41461],[8.686507,49.41943]]}"
' Senden des POST-Requests
request.Send jsonData
' Verarbeiten der Antwort
Dim Distance As String
Dim response As Object
If request.Status = 200 Then ' Erfolgreiche Antwort (Statuscode 200)
MsgBox "Success!"
responseContent = request.ResponseText
' Hier können Sie responseContent weiter verarbeiten
Set response = JsonConverter.ParseJson(request.responseContent)
'Datenzugriff
Else
' Fehler beim Anfordern der Daten (Statuscode ist nicht 200)
MsgBox "Fehler beim Abrufen der Daten. Statuscode: " & request.Status
End If
End Sub
Und hier der Aufbau der Json Antwort von der API:
- {
+ "bbox" : [ /* 4 items */ ] ,
+ "metadata" : { /* 5 items */ } ,
- "routes" : [
- {
- "summary" : {
"distance" : 1372.6 ,
"duration" : 292.79999999999995
} ,
+ "segments" : [ /* 2 items */ ] ,
+ "bbox" : [ /* 4 items */ ] ,
"geometry" : "ghrlHir~s@?BIC{ELgDo@aBa@}@I?sB?k@BwD?_JgAJgHt@I@]iHC?B?KuB]oFASg@wImAt@y@f@d@bJ" ,
+ "way_points" : [ /* 3 items */ ] ,
+ "legs" : [ /* no items */ ]
}
]
}