|
こんばんは。
google apiを使用して2点間の距離(高速道路利用しない、最短距離)を求めたいです。
高速道路利用しないに関しては解決したのですが、最短距離を出すことに苦戦しています。
最短距離を求めるオブジェクト定数optimizeWaypointsということは分かっているのですが
どこに組み込めば良いかアドバイス頂ければ幸いです。
何卒宜しくお願い致します。
【ソースコード】
Function DGMAP(origin As String, destination As String, distance As Boolean, Optional avoidHighways As Boolean = True) As String
Dim sXMLURL As String
sXMLURL = "maps.googleapis.com/maps/api/directions/xml?origin=" & origin & "&destination=" & destination & "&sensor=false&key=AIzaSyBd__DDpyRIC7TJHlPFE-ZoLO4blhMxOOs"
Dim objXMLHTTP As MSXML2.ServerXMLHTTP60
Set objXMLHTTP = New MSXML2.ServerXMLHTTP60
With objXMLHTTP
.Open "GET", sXMLURL, False
.setRequestHeader "Content-Type", "application/x-www-form-URLEncoded"
.Send
End With
'Debug.Print objXMLHTTP.ResponseText
Dim domResponse As DOMDocument60
Set domResponse = New DOMDocument60
domResponse.LoadXML objXMLHTTP.ResponseText
Dim ixnStatus
Set ixnStatus = domResponse.SelectSingleNode("//status")
If ixnStatus.Text = "OK" Then
Dim ixnDistance, ixnDuration
Set ixnDistance = domResponse.SelectSingleNode("/DirectionsResponse/route/leg/distance/text")
Set ixnDuration = domResponse.SelectSingleNode("/DirectionsResponse/route/leg/duration/text")
End If
If IsEmpty(ixnDistance) Then
DGMAP = "Empty"
Exit Function
End If
'距離(True) または時間(False)
If distance = True Then
DGMAP = Left(ixnDistance.Text, InStr(1, ixnDistance.Text, " ") - 1)
Else
DGMAP = ixnDuration.Text
End If
Set domResponse = Nothing
Set objXMLHTTP = Nothing
End Function
|
|