Поскольку вы возвращаете JSON
, вы можете легче использовать JSON
парсер для получения результатов.
Я использую
' VBA-JSON v2.3.0
' (c) Tim Hall - https://github.com/VBA-tools/VBA-JSON
'
' JSON Converter for VBA
А вот код, который будетвернуть расстояние проезда между двумя точками:
Option Explicit
Function getDistance(sStart As String, Dest As String)
Const API As String = "key=myAPI"
Const sURL1 As String = "https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial"
Dim sURL() As String
Dim sOrigin As String, sDest As String
Dim xhrRequest As XMLHTTP60
Dim strJSON As String, JSON As Object
sOrigin = Replace("origins=" & sStart, " ", "+")
sDest = Replace("destinations=" & Dest, " ", "+")
'Many ways to create the URL to send
ReDim sURL(3)
sURL(0) = sURL1
sURL(1) = sOrigin
sURL(2) = sDest
sURL(3) = API
Set xhrRequest = New XMLHTTP60
With xhrRequest
.Open "Get", Join(sURL, "&"), False
.sEnd
strJSON = .responseText
End With
Set JSON = parsejson(strJSON)
'"text" returns a string in local language
'"value" returns the distance in meters
getDistance = JSON("rows")(1)("elements")(1)("distance")("text")
End Function
Существуют и другие варианты, и вы можете прочитать документацию по API, которая в настоящее время находится в Руководстве для разработчиков Матрицы расстояний Google
Если развернуть объект JSON в окне просмотра, вы сможете выяснить, как он создается для создания строки, возвращающей желаемое значение.