В Excel, я использую VB для вычисления расстояния в милях между двумя точками. Когда я это делаю, я не могу получить расстояние от нескольких маршрутов между двумя точками. Когда я называю функцию GetDistance («Алабама», «Грузия»), она дает расстояние для одного маршрута из Алабамы и Грузии, и, очевидно, на Картах Google их несколько маршрутов из пункта А в пункт B с разным расстоянием. Когда я использовал MsgBox objHTTP.responseText для отображения всех расстояний маршрутов, он показывает только одно расстояние по маршруту, как показано на скриншоте. Как я могу отобразить все расстояния маршрутов в милях?Google Maps API Расстояние между двумя точками Возврат разных маршрутов
'Calculate Google Maps distance between two addresses
Public Function GetDistance(start As String, dest As String, unit As Integer)
Dim firstVal As String, secondVal As String, lastVal As String
firstVal = "http://maps.googleapis.com/maps/api/distancematrix/json?origins="
secondVal = "&destinations="
lastVal = "&mode=car&language=pl&sensor=true&units=Imperical"
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 ("")
MsgBox objHTTP.responseText
If InStr(objHTTP.responseText, """distance"" : {") = 0 Then GoTo ErrorHandl
Set regex = CreateObject("VBScript.RegExp")
regex.Pattern = """text"".*?([0-9]+)"
regex.Global = False
Set matches = regex.Execute(objHTTP.responseText)
tmpVal = Replace(matches(0).SubMatches(0), ".", Application.International(xlListSeparator))
GetDistance = CDbl(tmpVal)/1.609344
Exit Function
ErrorHandl:
GetDistance = -1
End Function
Sub PrintValue(str As String)
Range("B1") = str
End Sub
Я изменил код lastVal = «& режим = автомобиль и язык = еп и датчик = истинные и единицы = Imperical альтернатив = True» и когда я MsgBox objHTTP.responseText это еще не показывает множественные расстояния в выходе –