用于时间和距离数据的Google Maps API(Access/VBA)

use*_*936 3 ms-access google-maps google-api access-vba

我有一个应用程序,能够直接从谷歌地图获取两个地址之间的时间和里程(行驶里程)是非常有益的.我已经浏览了许多网站和文档,并完全了解如何做到这一点.

有没有人使用Microsoft方法与谷歌地图API成功连接并提取时间和距离信息?如果有,他们可以共享他们使用的代码.

我正在尝试为一个志愿者司机小组建立一个驾驶员调度系统(为那些无法开车,买不起出租车,买不起车的医疗预约人员开车!).

任何帮助,将不胜感激

约翰贝克

HK1*_*HK1 8

这里有一些代码可以做你想做的事情.请注意,Google确实对使用其API有一些许可要求/限制.您应该在Google地图中使用此处获得的结果.请在此处阅读使用限制: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
Run Code Online (Sandbox Code Playgroud)

我故意选择使用XML而不是JSON,因为VBA对JSON并不过分,我也不是.我可以下载一个通常被称为VBJSON的模块,但它有一点学习曲线,特别是如果你从未工作过以前用JSON.我相信XML更"昂贵"(效率更低)但我认为在Access VBA中使用它也更容易.