Google Maps API两点之间的距离返回不同的路线
在Excel中,使用VB来计算两点之间的距离。 当我这样做时,我似乎无法得到两点之间的多条路线的距离。 当我调用函数GetDistance(“Alabama”,“Georgia”)时,它给出了从Alabama到Georgia的一条路线的距离,显然在Google Maps上它们是从A点到B点的多条路线,距离不同。 当我使用MsgBox objHTTP.responseText来显示所有的路由距离时,它只显示一个路由距离,如截图所示。 我怎样才能显示所有的路线英里距离?
'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
DistanceMatrix只提供一个距离。 如果您需要相同两点之间的多条路线的距离,请使用参数alternatives=true
的DistanceService:
从文档 :
选项 – 如果设置为true,则指定路线服务可以在响应中提供多个路线备选项。 请注意,提供路由select可能会增加服务器的响应时间。