MapboxのDirections APIを試してみる

メモです。

Mapboxというのは地図情報のサービス。地図の点だけで言えばGoogle Mapとかと同じようなものと言えば同じようなものなのだけどカスタマイズ性の高さとビジュアライズ周りに強みがあると思っている。なので地図をベースにしたいろんな表現が可能になっていると言える。実績も多く有名なところだとYahooカーナビなんかはMapboxを利用している。

www.mapbox.jp

Mapbox自体の細かい話はさておき、そんなMapboxを使って経路探索をやってみる。つまり出発地、経由地、目的地を指定してルートを作成するやつ。

Mapboxでこれをやる場合にはDirections APIというものを使う。Directions APIというのは端的に言うと経路探索とターンバイターンの情報などを返してくれるAPI。なお、モバイルの場合はこの上にNavigation SDKというのがあってカーナビみたいなUIとかを組み込むことも簡単にできるようだ。

今回はこのAPIを使って複数地点を通るルートを生成するっていうごく基本的なことを試してみる。

といってもとても簡単で基本的には始点と終点の座標を指定して用意されているAPIを叩くだけ。基本は以下のAPIとなる。

https://api.mapbox.com/directions/v5/

APIのリクエストにはAccess Tokenが必要になるがその詳細は割愛する。ここから新たに作るなどして取得してほしい。何も難しいことはない。

Account | Mapbox

これに対していくつかパラメータを指定してリクエストする。今回指定している以外にも無数にオプショナルなパラメータがあるので詳細は公式ドキュメントを確認するのがいい。

Directions | API | Mapbox

まずはプロファイルを指定する。プロファイルってのはルート作成するにあたって自動車のルートか自転車のルートかなど。これは利用できるものが事前に決められている。つまり、車で東京駅から渋谷駅までのルートを作る場合は以下のようなAPIリクエストを行う。

座標については経度(longitude)、緯度(latitude)をカンマ区切りにしたものをセミコロン区切りで渡す。ナビゲーションに使うturn by turnの情報を得るにはオプションパラメータのstepsをtrueにする。

 curl 'https://api.mapbox.com/directions/v5/mapbox/driving/139.76712479870113,35.68141047521832;139.70159288335694,35.658312833125805?geometries=geojson&steps=true&access_token=<MAPBOX_ACCESS_TOKEN>'

レスポンスはかなり長くなるので本投稿では割愛。なお、ここではGeoJsonを指定しているけど実際にはレスポンス全体がGeoJsonフォーマットなわけではなくて、geometry以下だけがGeoJsonフォーマットなようだ。

レスポンスを扱うのに少しだけ知っておく概念がある。それが以下だ。

  • leg 出発から目的地までのルート。入力座標より1つ少ない数になる。つまり、始点と終点の2点だけならlegは一つ

  • step legにおける道のりを示す。複数ある。曲がり角とかそういう案内の数分あると思えばいい?ちなみに道の名前なんかもnameで取れる。intersectionsには途中の交差点の情報が配列で入ってる

  • maneuver 行き方とか。いわゆる「この先の交差点を右折」とかああいうの

構造として、routeが最上位にあるので例えばstepの情報はroute[0].legs[0].stepsに配列で入っている。さらに言うとsteps以下の各要素のmaneuver.instructionでturn by turnのinstructionを取れる。

基本はこれだけ。というわけで今回はここまで。

©Keisuke Nishitani, 2023   プライバシーポリシー