GoogleMapsAPIを使って各ルートの距離/時間を取得する(GoogleMapsは埋め込まない)
施設間の距離/時間を楽に算出したい
業務でとあるページに入力された二点間の距離/時間を算出してほしいとの要望がありGoogleMapsAPIだけで実現できるか調査しましたので備忘録を。
色々な手法で求めることはできると思いますが、ここは安心と実績のGoogleMapsを利用して取得しましょう。
ページにGoogleMapを埋め込まないのが要件のため、ルート検索結果のレスポンスデータを受け取ることができれば解決です。
使用するAPIはGoogle Maps Directions APIとなります。
Google Maps Directions API公式ドキュメントを覗く
まずは公式ドキュメントから。
Google Maps Directions API | Google Maps Directions API | Google Developers
今回サーバーサイドをRailsで実装していることもあり、Javascriptを使わずにサーバーサイドでAPIにアクセスしてレスポンスデータを取得します。
GoogleMapsAPIの使用
Getting startedを参照します。
Directions Service | Google Maps JavaScript API | Google Developers
自身のGoogleアカウントでGoogle Maps Directions APIを有効化します。
認証情報の作成は現時点では不要と思われますのでスキップします。
ダッシュボードにGoogle Maps Directions APIがリストとして登録され有効化されていれば使用準備完了です。
もしGoogleAppAPIを使用するのが初めてであればAPI Keyが必要となりますので作成しておきましょう
経路情報を取得する
ここまでこれば簡単です。後はドキュメントに従ってリクエストパラメータを組み立て、URLをブラウザに打ち込んでみましょう。
Google Maps Directions API | Google Maps Directions API | Google Developers
例えば東京駅から浅草駅へ行く際の距離・時間を取得したい場合、
- URL:https://maps.googleapis.com/maps/api/directions/json
- origin=東京駅
- destination=浅草駅
- key={あなたのGoogle API Key}
が必要となります。移動手段は省略すると車となります。日本語はURLエンコードが掛かるので実際のURLは下記になるでしょう。
Chromeで叩いてみると、下記のようなJSONレスポンスを得られるでしょう。
赤枠で囲っている箇所が総距離と時間になります。簡単ですね。
後はJSONをパースして必要な情報を抜き出すだけです。
総括
今まではGoogleMapsを使ってページ上の地図を操作していましたが、APIならもっと簡単に扱えますね。地図を表示しなくても色々な用途に活用できそうです。正直、こんなに手軽とは思っていませんでした。
今回は簡単な例を元にAPIを使えるようにしましたが、様々なリクエストパラメータにより柔軟な経路探索を行うことができます。
また、複数の経路を元に最適な経路を選択したりすることもあるでしょう。レスポンスデータを使用してどのようなサービスを提供するかが大事ですね。