[[20160501091556]] 『IEでGooglemapのルートオプション高速道路不使用ax(maoh) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『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


詳しい情報は https://developers.google.com/maps/?hl=ja を見てください。

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.