我有一个应用程序,这将是非常有益的,能够 直接从谷歌地图获得两个地址之间的时间和英里(驾驶里程) 。我已经翻阅了很多网站和文档,并且完全讨论了如何去做。谷歌地图API的时间和距离数据(访问/ VBA)
有没有人与谷歌地图API使用 Microsoft方法成功连接并提取时间和距离信息?如果 有,他们可以分享他们使用的代码。
我正在努力为志愿者设置一个司机调度系统 司机组(驾车人民医疗约会谁不能 驱动器,不能出租车和买不起车!)。
任何帮助,将不胜感激
约翰贝克
我有一个应用程序,这将是非常有益的,能够 直接从谷歌地图获得两个地址之间的时间和英里(驾驶里程) 。我已经翻阅了很多网站和文档,并且完全讨论了如何去做。谷歌地图API的时间和距离数据(访问/ VBA)
有没有人与谷歌地图API使用 Microsoft方法成功连接并提取时间和距离信息?如果 有,他们可以分享他们使用的代码。
我正在努力为志愿者设置一个司机调度系统 司机组(驾车人民医疗约会谁不能 驱动器,不能出租车和买不起车!)。
任何帮助,将不胜感激
约翰贝克
下面是一些代码,做你想做的事情。意识到Google确实对使用API有一些许可要求/限制。你应该使用Google Map中的结果。请阅读这里的使用限制:https://developers.google.com/maps/documentation/directions/
请注意,除非您更改代码以使用后期绑定,否则这需要引用“Microsoft XML,v6.0”。
Dim sXMLURL As String
sXMLURL = "http://maps.googleapis.com/maps/api/directions/xml?origin=NY,+NY&destination=Los+Angeles,+CA&sensor=false"
Dim objXMLHTTP As MSXML2.ServerXMLHTTP
Set objXMLHTTP = New MSXML2.ServerXMLHTTP
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")
Debug.Print "Distance: " & ixnDistance.Text 'Miles
Debug.Print "Duration: " & ixnDuration.Text 'Days Hours Minutes
End If
Set domResponse = Nothing
Set objXMLHTTP = Nothing
我特意选择了使用XML而不是JSON,因为VBA是不是过于JSON方便,并且也不是。还有,你可以下载通常被称为VBJSON一个模块,但它有一点点的学习曲线,尤其是如果你以前从未使用过JSON。我相信XML更“昂贵”(效率更低),但我认为在Access VBA中使用也更容易。
sMapURL是一个神器。 :)我已经删除它。 – HK1 2012-04-12 17:55:46