ガイドAPIリファレンス
ガイド

HERE Routing API v8のルートジオメトリ

HERE Routing API v8では、ルートのジオメトリーをFlexible Polylineエンコーディングで圧縮したポリライン (座標ペアまたは座標三つ組のリストを非可逆的に圧縮したもの) として表示できます。

ルートの2次元の形状を取得するには、ルート計算リクエストにreturn=polylineを追加します。 APIはルートの各セクションに対しpolylineフィールドを返します。このフィールドにはエンコードされたポリラインが含まれています。このポリラインは次のツールを使用してデコードできます。

  • さまざまな言語での実装は、Flexible Polylineリポジトリで入手できます。
  • HERE Maps API for Javascript:詳細については、この例を参照してください。
  • flexpolylineのようなコマンドラインインターフェース。

次のリクエストは、APIレスポンスでポリラインを返します。

curl -gX GET 'https://router.hereapi.com/v8/routes?'\
'transportMode=car&'\
'origin=52.5308,13.3847&'\
'destination=52.5323,13.3789&'\
'return=polyline&'\
'apiKey=YOUR_API_KEY'
{
  "routes": [
    {
      "id": "81e526c0-5693-4bc0-bdbb-239ecc2857e7",
      "sections": [
        {
          ...,
          "polyline": "BGwynmkDu39wZvBtF3InfvHrdvHvboGzF0FnGoGvHsOvR8L3NkSvWoGvHsEzFgFvHkD3IwHrJwHrJgKjN4D_E0ezoBjInV3N_iBzJ_Z",
          "transport": {
            "mode": "car"
          },
          "type": "vehicle"
        }
      ]
    }
  ]
}

flexpolylineを使用してポリラインをデコードすると、次の出力が生成されます。

echo BGwynmkDu39wZvBtF3InfvHrdvHvboGzF0FnGoGvHsOvR8L3NkSvWoGvHsEzFgFvHkD3IwHrJwHrJgKjN4D_E0ezoBjInV3N_iBzJ_Z | flexpolyline decode --original-precision
{(6);
 [(52.530984, 13.384567),
  (52.530960, 13.384480),
  (52.530820, 13.383980),
  (52.530700, 13.383510),
  (52.530580, 13.383070),
  (52.530680, 13.382980),
  (52.530770, 13.382880),
  (52.530870, 13.382760),
  (52.531100, 13.382480),
  (52.531290, 13.382260),
  (52.531580, 13.381900),
  (52.531680, 13.381780),
  (52.531750, 13.381690),
  (52.531830, 13.381570),
  (52.531880, 13.381430),
  (52.532000, 13.381280),
  (52.532120, 13.381130),
  (52.532280, 13.380920),
  (52.532340, 13.380840),
  (52.532830, 13.380190),
  (52.532700, 13.379850),
  (52.532480, 13.379290),
  (52.532326, 13.378874), ]}

標高プロファイル

ポリラインでエンコードされた標高プロファイル (3次元ポリライン) を取得するには、return=polyline,elevationをルート計算リクエストに追加します。

次のコードスニペットは、ポリラインのリクエスト、レスポンス、デコードのサンプルです。

curl -gX GET 'https://router.hereapi.com/v8/routes?'\
'transportMode=car&'\
'origin=52.5308,13.3847&'\
'destination=52.5323,13.3789&'\
'return=polyline,elevation&'\
'apiKey=YOUR_API_KEY'
{
  "routes": [
    {
      "id": "81e526c0-5693-4bc0-bdbb-239ecc2857e7",
      "sections": [
        {
          ...,
          "polyline": "B2FwynmkDu39wZouBvBtFA3InfAvHrdAvHvbAoGzFA0FnGAoGvHUsOvRA8L3NAkSvWAoGvHAsEzFAgFvHAkD3IAwHrJAwHrJAgKjNA4D_EA0ezoBAjInVA3N_iBAzJ_ZA",
          "transport": {
            "mode": "car"
          },
          "type": "vehicle"
        }
      ]
    }
  ]
}
echo BGwynmkDu39wZvBtF3InfvHrdvHvboGzF0FnGoGvHsOvR8L3NkSvWoGvHsEzFgFvHkD3IwHrJwHrJgKjN4D_E0ezoBjInV3N_iBzJ_Z | flexpolyline decode --original-precision
{(6, 1, 3);
 [(52.530984, 13.384567, 74.0),
  (52.530960, 13.384480, 74.0),
  (52.530820, 13.383980, 74.0),
  (52.530700, 13.383510, 74.0),
  (52.530580, 13.383070, 74.0),
  (52.530680, 13.382980, 74.0),
  (52.530770, 13.382880, 74.0),
  (52.530870, 13.382760, 75.0),
  (52.531100, 13.382480, 75.0),
  (52.531290, 13.382260, 75.0),
  (52.531580, 13.381900, 75.0),
  (52.531680, 13.381780, 75.0),
  (52.531750, 13.381690, 75.0),
  (52.531830, 13.381570, 75.0),
  (52.531880, 13.381430, 75.0),
  (52.532000, 13.381280, 75.0),
  (52.532120, 13.381130, 75.0),
  (52.532280, 13.380920, 75.0),
  (52.532340, 13.380840, 75.0),
  (52.532830, 13.380190, 75.0),
  (52.532700, 13.379850, 75.0),
  (52.532480, 13.379290, 75.0),
  (52.532326, 13.378874, 75.0), ]}