[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『IEでGooglemapのルートオプション高速道路不使用と距離最適化の設定』(maoh)
お世話になります。
以前こちらで紹介があったExcelシートの住所録からIEを起動して、ルートマップを表示するVBAの設定方法で質問があります。
B列に出発地、C列に目的地がある一覧から別のVBAでD列に距離、E列に経過時間を出力してあります。
D列かE列のセルをダブルクリックすると、該当行のB列からC列のルートがIEで表示されます。
そこで、ルートオプションの高速道路不使用と距離最適化(最短距離)を有効にして表示をさせたいのですが、
以下の記述ではオプションが有効にできません。
オプションの指定方法が分かりましたらご教授願います。
よろしくお願いします。
*高速道路不使用 avoid=highways
距離最適化 optimizeWaypoints=true
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("D6:E25")) Is Nothing Then Exit Sub
If Cells(Target.Row, 2).Text = "" Or Cells(Target.Row, 3).Text = "" Then Exit Sub
With CreateObject("InternetExplorer.application") .Visible = True .Navigate "http://www.google.com/maps/dir/" _ & EncodeURL(Cells(Target.Row, 2).Text) & "/" _ & EncodeURL(Cells(Target.Row, 3).Text) & "/" _ & "&avoid = highways" & "/" _ & "&optimizeWaypoints = true" & "/?" End With End Sub
#If VBA7 Then
Private Function EncodeURL(ByVal txt As String) As String
Dim objDoc As Object Dim objEelm As Object
txt = Replace(txt, "\", "\\") txt = Replace(txt, "'", "\'")
Set objDoc = CreateObject("HtmlFile") Set objEelm = objDoc.CreateElement("Span")
objEelm.SetAttribute "id", "result" objDoc.AppendChild objEelm objDoc.ParentWindow.execScript "document.getElementById('result').innerText = encodeURIComponent('" & txt & "');", "JScript" EncodeURL = objEelm.innerText End Function #Else
Private Function EncodeURL(ByVal txt As String) As String
With CreateObject("ScriptControl") .Language = "JScript" EncodeURL = .CodeObject.encodeURIComponent(txt) End With End Function #End If
< 使用 Excel:Excel2013、使用 OS:Windows10 >
とりあえず、ご提示のソースだと、パラメータの区切りに/が使われていたり、? がパラメータ先頭で無かったり、いろいろ変です。
しかし、これを直しても、高速オフや最適化の指定が効かないのは変わりませんでした。
avoid=highwaysとoptimizeWaypoints=trueの指定は、https://maps.googleapis.co.jp/maps/api/directions/xml? を使用する場合には指定可能です。
http://www.google.com/maps/dir/ で指定可能かどうかは不明。私の環境だとライトモードしか使えないのですが、もしかするとライトモードでは指定不可かも知れません。
directionsのURLの場合、結果はXML(またはJSON)形式のテキストであり、地図は表示されません。
なので、XMLで情報を拾った後、別途マップ表示してやる必要があるのではないかと思います。
(???) 2016/05/06(金) 14:09
Google Maps Directions API(またはGoogle Maps Distance Matrix API)で、2点間の最適ルートを検索。
得られた情報を元に、Google Maps JavaScript API で DIRECTIONS 形式を使ってマップ表示。
これで実現できるのではないかと思うのですが、ちょっと検索してみても、過去にExcelで実現した人は見つかりませんでした。
ちょいちょいと作成して差し上げられるレベルではないので、ご自身でいろいろ試してみてください。
(???) 2016/05/06(金) 14:35
コメントありがとうございます。
高速オフと距離最適化は、なかなか難しいようですね。
いただいた情報でいろいろと試してみます。
ありがとうございました。
(maoh) 2016/05/06(金) 20:21
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.