ルート線の描画方法
ルート形状取得 API (/shape_XXX) は、ルート検索した結果を形状として取得することができるAPIです。APIで返却される形式は、他のAPIの返却形式と同じ「JSON」と、地図スクリプトでそのまま利用できる「GeoJSON」の2種類あります。
本稿では「GeoJSON」を使ったルート線の描画方法を紹介します。
GeoJSONとは
地理形状を表現する一般的なフォーマットです。地理情報をJSON形式で表現したもので、ジオメトリ(形状)、フィーチャー(地物)、フィーチャーの集まりで構成されています。
ジオメトリ (Geometry オブジェクト)
形状そのものの情報が含まれています。このオブジェクトのメンバには、type とcoordinates があります。
一般的に、type に設定できる値はいろいろありますが、ルート形状取得 API では「LineString」のみサポートしています。coordinates には緯度経度の配列が返却されます。
フィーチャー (Feature オブジェクト)
上記のジオメトリとそのプロパティが含まれています。このオブジェクトのメンバには、ジオメトリ (geometry) のほかに、type、bbox、propertiesがあります。
type に設定できる値は「Feature」です。properties には、地図スクリプトの描画情報が設定されており、主に線の色、太さ、属性などのメタ情報が返却されます。また、bbox はジオメトリ (geometry) のバウンディングボックスが返却されます。バウンディングボックスとは、図形全体を囲う矩形のことで、緯度経度を最高値から最低値に向かって記述しています。これにより、形状全体が描画される尺度を決定します。
フィーチャーの集まり (FeatureCollection オブジェクト)
上記フィーチャーの集合体です。このオブジェクトのメンバには、フィーチャー (features) のほかに、type、bboxがあります。
type に設定できる値は「FeatureCollection」です。bbox は、ルート形状全体のバウンディングボックスが返却されます。
ルート線の書き方
1.NAVITIME APIのタイル地図スクリプト取得API(/map_script) を用いて地図を表示
※参考: アイコンや図形の描画方法
2.ルート形状取得 API (/shape_XXX) を用いてルート形状を取得
パラメータ構成例
- 表参道駅から原宿駅のルート形状を取得
/shape_transit?start=35.6652464,139.712327&goal=35.6701678,139.7026999&start_time=2020-06-30T08:00:00&format=geojson
レスポンス例
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"bbox": [
139.712293,
35.665246,
139.712327,
35.665263
],
"geometry": {
"type": "LineString",
"coordinates": [
[
139.712327,
35.665246
],
[
139.712293,
35.665263
]
]
},
"properties": {
"ways": "walk",
"section": "0001,0002,0003",
"inline": {
"line_style": "auxiliary",
"width": 5,
"color": "#D3D3D3",
"opacity": 1.0,
"strokelinecap": "round",
"strokelinejoin": "round"
},
"outline": {
"line_style": "solid",
"width": 10,
"color": "#898989",
"opacity": 1.0,
"strokelinecap": "round",
"strokelinejoin": "round"
},
"route_no": "1"
}
},{...},{...},{...},{...},{...},{...}
],
"bbox": [
139.702677,
35.665246,
139.712409,
35.670168
]
}
3.取得したルート形状 (GeoJSON) を地図スクリプトAPIの引数に指定
<!-- map:生成した地図インスタンス -->
<!-- route:取得したルート形状 (GeoJSON) -->
navitime.geo.GeoJSON.draw({map: map, json: route});
複数ルート候補がある場合の指定方法
複数のルート候補がある場合、ルート形状取得 API のデフォルトでは、最初の経路のみ出力されます。 第2経路、第3経路のルート形状を取得したい場合は「no」パラメータをご利用ください。
レスポンスの先頭と末尾の要素について
features配列の先頭と末尾には、ルートの端点から出発地と目的地を結ぶ「補助線(引き出し線)」が出力されています。
河川や線路など、実際には通行できない箇所をまたぐ線となることがあります。
(line_styleがauxiliaryの場合は補助線、solidの場合はルート線を表します)
スポット検索API(/spot)や住所検索API(/address)などと組み合わせることで、スポットや住所までのルート線の描画、 複数のルート線を切り替え可能です。
ルート線を地図上に可視化することでサービスの利便性向上につながります。
ルート形状取得APIを使って是非試してみてください。