2012-04-12 23 views
3

は、時間とマイル(走行距離) を2つのアドレスの間でGoogleマップから直接取得できることが非常に有益なアプリケーションを持っています。私は多くのWebサイトと のドキュメントを調べて、それをどうやって行うのか全面的に萎縮しました。時間と距離のデータ(アクセス/ VBA)のGoogle Maps API

誰もGoogleマップAPIとの接続に成功しました Microsoft Approach and time and distance information? がある場合は、使用したコードを共有できますか?

私は( ドライブは、タクシーを買う余裕はないことができず、車を買う余裕ができない医療の予定woは人のために運転!)ボランティア ドライバーグループのドライバーのスケジューリングシステムをセットアップしようとしています。

すべてのヘルプはここであなたがやりたいためにいくつかのコードだ

ジョン・ベイカー

答えて

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 

私は意図的にVBAをJSONで過度に便利ではありませんので、代わりにJSONのXMLを使用することを選択した、とI.はあなたが頻繁にダウンロードできるモジュールはあり午前どちらがVBJSONと呼ばれるが、それは少し学習を持っています特に以前はJSONで作業したことがない場合は、私は、XMLがより「高価」(効率的ではない)だと考えていますが、Access VBAで作業する方が簡単だと思います。

+0

sMapURLはアーティファクトでした。 :)私はそれを削除しました。 – HK1

関連する問題