Google Directions APIで乗り換え案内情報を取ろうとしたが。。。?

鉄分多めの人なので、自分好みの乗り換え案内って作れないかなぁ、と思い立ち。乗り換え案内のAPIってどんなのがあるかを調べてみた。

Google Directions APIを試してみた

Googleのアカウントを持っているので、とりあえず試してみる。
ブラウザからGoogle MAPを使って検索すると、こんな風に路線と時間が返ってくるので、これをAPIで取れればいいなぁ、と思っているわけです。

introductionに沿って、やってみます。
API_KEYを発行の上、実行!

https://maps.googleapis.com/maps/api/directions/json?mode=transit&origin=京成成田駅&destination=芝山千代田駅&key=[YOUR_API_KEY]

結果。おお、ちゃんと返ってきたぞ。
でも、徒歩とJRバスしかない。京成と芝山鉄道はどこいった?

{
   "geocoded_waypoints" : [
      {
         "geocoder_status" : "OK",
         "place_id" : "ChIJ-3nRFQ2LImARHxunovQr_4k",
         "types" : [
            "establishment",
            "point_of_interest",
            "train_station",
            "transit_station"
         ]
      },
      {
         "geocoder_status" : "OK",
         "place_id" : "ChIJqcbzXq3zImARf8AXF6xgcLY",
         "types" : [
            "establishment",
            "point_of_interest",
            "train_station",
            "transit_station"
         ]
      }
   ],
   "routes" : [
      {
         "bounds" : {
            "northeast" : {
               "lat" : 35.78667,
               "lng" : 140.4019
            },
            "southwest" : {
               "lat" : 35.7408,
               "lng" : 140.3146692
            }
         },
         "copyrights" : "地図データ ©2019 ZENRIN",
         "fare" : {
            "currency" : "JPY",
            "text" : "¥530",
            "value" : 530
         },
         "legs" : [
            {
               "arrival_time" : {
                  "text" : "22:13",
                  "time_zone" : "Asia/Tokyo",
                  "value" : 1549199611
               },
               "departure_time" : {
                  "text" : "21:26",
                  "time_zone" : "Asia/Tokyo",
                  "value" : 1549196818
               },
               "distance" : {
                  "text" : "12.7 km",
                  "value" : 12658
               },
               "duration" : {
                  "text" : "47分",
                  "value" : 2793
               },
               "end_address" : "日本、〒289-1601 千葉県山武郡芝山町香山新田148−1 芝山千代田駅",
               "end_location" : {
                  "lat" : 35.7542103,
                  "lng" : 140.3996258
               },
               "start_address" : "日本、京成成田駅",
               "start_location" : {
                  "lat" : 35.77673559999999,
                  "lng" : 140.3156404
               },
               "steps" : [
                  {
                     "distance" : {
                        "text" : "0.2 km",
                        "value" : 234
                     },
                     "duration" : {
                        "text" : "3分",
                        "value" : 181
                     },
                     "end_location" : {
                        "lat" : 35.7779198,
                        "lng" : 140.3146692
                     },
                     "html_instructions" : "成田(バス)まで歩く",
                     "polyline" : {
                        "points" : "ssjyEwklwYHDKLEDQPEFMMs@lBg@]UOa@[KLEJIPIRCNCR@L@D"
                     },
                     "start_location" : {
                        "lat" : 35.77673559999999,
                        "lng" : 140.3156404
                     },
                     "steps" : [
                        {
                           "distance" : {
                              "text" : "52 m",
                              "value" : 52
                           },
                           "duration" : {
                              "text" : "1分",
                              "value" : 36
                           },
                           "end_location" : {
                              "lat" : 35.7769695,
                              "lng" : 140.3154501
                           },
                           "html_instructions" : "改札口に向かう",
                           "polyline" : {
                              "points" : "ssjyEwklwYHDKLEDQPEFMM"
                           },
                           "start_location" : {
                              "lat" : 35.77673559999999,
                              "lng" : 140.3156404
                           },
                           "travel_mode" : "WALKING"
                        },
                        {
                           "distance" : {
                              "text" : "57 m",
                              "value" : 57
                           },
                           "duration" : {
                              "text" : "1分",
                              "value" : 43
                           },
                           "end_location" : {
                              "lat" : 35.7772286,
                              "lng" : 140.3149046
                           },
                           "html_instructions" : "\u003cb\u003e左折\u003c/b\u003eする",
                           "maneuver" : "turn-left",
                           "polyline" : {
                              "points" : "aujyEqjlwYs@lB"
                           },
                           "start_location" : {
                              "lat" : 35.7769695,
                              "lng" : 140.3154501
                           },
                           "travel_mode" : "WALKING"
                        },
                        {
                           "distance" : {
                              "text" : "63 m",
                              "value" : 63
                           },
                           "duration" : {
                              "text" : "1分",
                              "value" : 49
                           },
                           "end_location" : {
                              "lat" : 35.7777102,
                              "lng" : 140.3152682
                           },
                           "html_instructions" : "\u003cb\u003e右折\u003c/b\u003eする",
                           "maneuver" : "turn-right",
                           "polyline" : {
                              "points" : "uvjyEcglwYg@]UOa@["
                           },
                           "start_location" : {
                              "lat" : 35.7772286,
                              "lng" : 140.3149046
                           },
                           "travel_mode" : "WALKING"
                        },
                        {
                           "distance" : {
                              "text" : "62 m",
                              "value" : 62
                           },
                           "duration" : {
                              "text" : "1分",
                              "value" : 53
                           },
                           "end_location" : {
                              "lat" : 35.7779198,
                              "lng" : 140.3146692
                           },
                           "html_instructions" : "\u003cb\u003eJR成田駅(交差点)\u003c/b\u003e を\u003cb\u003e左折\u003c/b\u003eする\u003cdiv style=\"font-size:0.9em\"\u003e目的地は前方左側です\u003c/div\u003e",
                           "maneuver" : "turn-left",
                           "polyline" : {
                              "points" : "uyjyEmilwYKLEJIPIRCNCR@L@D"
                           },
                           "start_location" : {
                              "lat" : 35.7777102,
                              "lng" : 140.3152682
                           },
                           "travel_mode" : "WALKING"
                        }
                     ],
                     "travel_mode" : "WALKING"
                  },
                  {
                     "distance" : {
                        "text" : "11.7 km",
                        "value" : 11651
                     },
                     "duration" : {
                        "text" : "34分",
                        "value" : 2040
                     },
                     "end_location" : {
                        "lat" : 35.74877,
                        "lng" : 140.4014
                     },
                     "html_instructions" : "バス 多古台BT行",
                     "polyline" : {
                        "points" : "uzjyE{elwYeb@{TbKcLtHsSsh@gh@hO{TrB{h@~JcGr^co@~i@_XbS{TtJgTvQkWv^oZrV_SzLcGdQ{JdFwk@|a@c`BcDwBae@oUsEbB"
                     },
                     "start_location" : {
                        "lat" : 35.77787,
                        "lng" : 140.3147
                     },
                     "transit_details" : {
                        "arrival_stop" : {
                           "location" : {
                              "lat" : 35.74877,
                              "lng" : 140.4014
                           },
                           "name" : "千代田(バス)"
                        },
                        "arrival_time" : {
                           "text" : "22:04",
                           "time_zone" : "Asia/Tokyo",
                           "value" : 1549199040
                        },
                        "departure_stop" : {
                           "location" : {
                              "lat" : 35.77787,
                              "lng" : 140.3147
                           },
                           "name" : "成田(バス)"
                        },
                        "departure_time" : {
                           "text" : "21:30",
                           "time_zone" : "Asia/Tokyo",
                           "value" : 1549197000
                        },
                        "headsign" : "多古台BT行",
                        "line" : {
                           "agencies" : [
                              {
                                 "name" : "JRバス関東"
                              }
                           ],
                           "color" : "#ffffff",
                           "name" : "多古本線:大原内経由",
                           "text_color" : "#000000",
                           "vehicle" : {
                              "icon" : "//maps.gstatic.com/mapfiles/transit/iw2/6/bus2.png",
                              "name" : "バス",
                              "type" : "BUS"
                           }
                        },
                        "num_stops" : 21
                     },
                     "travel_mode" : "TRANSIT"
                  },
                  {
                     "distance" : {
                        "text" : "0.8 km",
                        "value" : 773
                     },
                     "duration" : {
                        "text" : "10分",
                        "value" : 571
                     },
                     "end_location" : {
                        "lat" : 35.7542103,
                        "lng" : 140.3996258
                     },
                     "html_instructions" : "日本、〒289-1601 千葉県山武郡芝山町香山新田148−1 芝山千代田駅まで歩く",
                     "polyline" : {
                        "points" : "aeeyEuc}wYDl@_BlAq@\\i@^[HYHo@ByAQuEqAaB]q@?g@Dm@Pc@R[VYXUXUf@Yv@iBgAE\\AJ@RVL@RK^"
                     },
                     "start_location" : {
                        "lat" : 35.7488146,
                        "lng" : 140.40139
                     },
                     "steps" : [
                        {
                           "distance" : {
                              "text" : "21 m",
                              "value" : 21
                           },
                           "duration" : {
                              "text" : "1分",
                              "value" : 14
                           },
                           "end_location" : {
                              "lat" : 35.7487803,
                              "lng" : 140.4011583
                           },
                           "html_instructions" : "\u003cb\u003e西\u003c/b\u003e方向に\u003cb\u003e県道106号線\u003c/b\u003eを進む",
                           "polyline" : {
                              "points" : "aeeyEuc}wYDl@"
                           },
                           "start_location" : {
                              "lat" : 35.7488146,
                              "lng" : 140.40139
                           },
                           "travel_mode" : "WALKING"
                        },
                        {
                           "distance" : {
                              "text" : "0.6 km",
                              "value" : 616
                           },
                           "duration" : {
                              "text" : "8分",
                              "value" : 453
                           },
                           "end_location" : {
                              "lat" : 35.753715,
                              "lng" : 140.3999084
                           },
                           "html_instructions" : "\u003cb\u003e千代田交差点\u003c/b\u003e を\u003cb\u003e右折\u003c/b\u003eする",
                           "maneuver" : "turn-right",
                           "polyline" : {
                              "points" : "{deyEgb}wY_BlAq@\\i@^[HYHo@ByAQuEqAaB]q@?g@Dm@Pc@R[VYXUXUf@Yv@"
                           },
                           "start_location" : {
                              "lat" : 35.7487803,
                              "lng" : 140.4011583
                           },
                           "travel_mode" : "WALKING"
                        },
                        {
                           "distance" : {
                              "text" : "68 m",
                              "value" : 68
                           },
                           "duration" : {
                              "text" : "1分",
                              "value" : 52
                           },
                           "end_location" : {
                              "lat" : 35.7542519,
                              "lng" : 140.4002719
                           },
                           "html_instructions" : "\u003cb\u003e芝山千代田駅前(交差点)\u003c/b\u003e を\u003cb\u003e右折\u003c/b\u003eする",
                           "maneuver" : "turn-right",
                           "polyline" : {
                              "points" : "wcfyEmz|wYiBgA"
                           },
                           "start_location" : {
                              "lat" : 35.753715,
                              "lng" : 140.3999084
                           },
                           "travel_mode" : "WALKING"
                        },
                        {
                           "distance" : {
                              "text" : "28 m",
                              "value" : 28
                           },
                           "duration" : {
                              "text" : "1分",
                              "value" : 23
                           },
                           "end_location" : {
                              "lat" : 35.7542797,
                              "lng" : 140.399965
                           },
                           "html_instructions" : "\u003cb\u003e左折\u003c/b\u003eする",
                           "maneuver" : "turn-left",
                           "polyline" : {
                              "points" : "agfyEu||wYE\\AJ@R"
                           },
                           "start_location" : {
                              "lat" : 35.7542519,
                              "lng" : 140.4002719
                           },
                           "travel_mode" : "WALKING"
                        },
                        {
                           "distance" : {
                              "text" : "40 m",
                              "value" : 40
                           },
                           "duration" : {
                              "text" : "1分",
                              "value" : 29
                           },
                           "end_location" : {
                              "lat" : 35.7542103,
                              "lng" : 140.3996258
                           },
                           "html_instructions" : "\u003cb\u003e左折\u003c/b\u003eする\u003cdiv style=\"font-size:0.9em\"\u003e目的地は前方左側です\u003c/div\u003e",
                           "maneuver" : "turn-left",
                           "polyline" : {
                              "points" : "ggfyEwz|wYVL@RK^"
                           },
                           "start_location" : {
                              "lat" : 35.7542797,
                              "lng" : 140.399965
                           },
                           "travel_mode" : "WALKING"
                        }
                     ],
                     "travel_mode" : "WALKING"
                  }
               ],
               "traffic_speed_entry" : [],
               "via_waypoint" : []
            }
         ],
         "overview_polyline" : {
            "points" : "ssjyEwklwYHDKLWVEFMMs@lBg@]w@k@QXSd@Gb@BRHEeb@{TbKcLtHsSsh@gh@hO{TrB{h@~JcGr^co@~i@_XbS{TtJgTvQkWv^oZrV_SzLcGdQ{JdFwk@|a@c`BcDwBae@oUsEbBG@Dl@_BlAq@\\i@^[HYHo@ByAQuEqAaB]q@?g@Dm@Pc@R[Vo@r@o@~AiBgAE\\?^VL@RK^"
         },
         "summary" : "",
         "warnings" : [
            "徒歩ルートの表示は Beta 版です。 注意 – このルートには歩道のない道が含まれている可能性があります。"
         ],
         "waypoint_order" : []
      }
   ],
   "status" : "OK"
}

列車を使った検索がしたいんだけど。。。?

チュートリアルを見ると、「mode=transit」「transit_mode=rail」を指定すると、列車を使った検索をしてくれる模様。

ではやってみます。

https://maps.googleapis.com/maps/api/directions/json?mode=transit&transit_mode=rail&origin=京成成田駅&destination=芝山千代田駅&key=[YOUR_API_KEY]

実行!

{
   "available_travel_modes" : [ "DRIVING", "WALKING" ],
   "geocoded_waypoints" : [
      {
         "geocoder_status" : "OK",
         "place_id" : "ChIJ-3nRFQ2LImARHxunovQr_4k",
         "types" : [
            "establishment",
            "point_of_interest",
            "train_station",
            "transit_station"
         ]
      },
      {
         "geocoder_status" : "OK",
         "place_id" : "ChIJqcbzXq3zImARf8AXF6xgcLY",
         "types" : [
            "establishment",
            "point_of_interest",
            "train_station",
            "transit_station"
         ]
      }
   ],
   "routes" : [],
   "status" : "ZERO_RESULTS"
}

ん、ZERO_RESULTS。。。

なぜだ?と思って、FAQを見てみる。

以下の記載を発見。

In which countries are transit directions available?
The Google Maps Directions Service, which includes the Directions API and Distance Matrix API, supports all the transit providers in the transit coverage list, except for those in Japan.

Google翻訳に食べさせる。

Google Maps Directionsサービスには、Directions APIとDistance Matrix APIが含まれていますが、日本を除き、トランジットカバレッジリストのすべてのトランジットプロバイダーをサポートしています。

日本の路線情報は返してくれない模様。。。(^^;


Google Directions APIでは要件は満たさないので、他を試してみます。。。


この記事が気に入ったらサポートをしてみませんか?