先月、HEREプラットフォームは、Location Services APIおよびSDK、Routing API、Isoline Routing API、Waypoints Sequencing APIなどの更新を含む、多くの新機能をリリースしました。詳細情報については、「2022年12月のプラットフォームリリースノート(December 2022 platform release notes)」をご参照ください。このブログでは、回避エリアのポリゴンに対応したHERE Routing APIのアップデートについて説明します。
HERE Routing APIは、道路網の特定の機能に違反するルートや、ユーザーが指定した地理的バウンディング ボックスを通過するルートを回避することができます。例として、リクエストにavoid[features]=ferry
パラメーターを指定した、フェリーでしか行けない島への、ルートリクエストがあります。ルートを計算するために回避すべき特定の道路セグメントやバウンディング ボックスを指定するオプションに加えて、ルーティングリクエストで最大20のポリゴンを指定することもできるようになりました。これによって、回避すべきエリアをより正確かつ簡単に定義することができます。
以下に、ロングビーチ港からフォンタナまでの最速の自動車ルートを、ポリゴン領域を回避して地図上に表示するサンプルアプリケーションを示します。初期設定では、赤いポリゴンエリアを回避エリアとして使用していますが、地図の上部にある3つのボタンをクリックすることで、緑のポリゴンエリアを使用したルートや回避エリアを使用しないルートを表示することができます。このサンプルは、HERE Maps API for Javascriptを使用して作成され、Map with Driving Route from A to Bのサンプルを基にして作成されています。
サンプルアプリケーション
Map with Driving Route from A to B (ポリゴン領域を回避)
この例では、ロングビーチ港からフォンタナまでの最速の自動車ルートを、ポリゴン領域を回避して計算し、地図上に表示します。
リクエスト パラメーター
回避エリアにポリゴンを指定するには、パラメーターavoid[areas]=polygon:xxx…を使用する必要があります。以下は、上記のサンプルで使用されるリクエストパラメーター例です。今回のサンプルで使用した2つのポリゴンは、迂回路になる可能性のある頂点の座標を求め、Polygon on the Mapのサンプルを参考にポリゴンを作成し、地図に追加しました。
var routeRequestParamsWithAvoid = {
'routingMode': 'fast',
'transportMode': 'car',
'origin': '33.751305,-118.188812', // Port of Long Beach
'destination': '34.092232,-117.435051', // Fontana
'avoid[areas]': 'polygon:34.073334,-118.027496;33.888504,-117.813255;33.895847,-118.220070';, //red polygon
'return': 'polyline,turnByTurnActions,actions,instructions,travelSummary'
};
function calculateRouteFromAtoB(platform, params) {
var router = platform.getRoutingService(null, 8);
router.calculateRoute(
params,
onSuccess,
onError
);
}
calculateRouteFromAtoB(platform, routeRequestParamsWithAvoid);
ポリゴン フォーマット
パラメーター avoid[areas]
は、ルートを回避するユーザー定義エリアをパイプ区切りで指定したリストです。リストは250項目までと制限されています。
フォーマットは次のようになります。 {shape1}|{shape2}|{shape3}…
.
このパラメーターは、2つの形状、バウンディング ボックス(avoid[areas]=bbox:xxx…
)とポリゴン(avoid[areas]=polygon:xxx…
)フォーマットをサポートしています。これら考えられるフォーマットに従うことをさけるために、領域を定義する地球上のポリゴンにすることができます。
Format(形式) | Notes(注釈) | Example(例) |
---|---|---|
polygon:{lat},{lon};{lat},{lon};{lat},{lon}… | 2Dポリライン(標高指定なし)のみをサポート | polygon:13.082,52.416;13.628,52.626;13.482,52.916 – Polygon in Berlin |
polygon:{encoded_polyline} – フレキシブルポリライン によるエンコード | ・ポリゴンの最大数は20です。バウンディング ボックス+ポリゴンの数 <= 250 ・1つのポリゴンに含まれる最小座標数は3です。それ以下の場合は、該当するエラーが返されます。 ・1つのポリゴンに含まれる最大座標数は16です。それ以上の場合、エラーが返されます。 ・ポリゴンは自動的に閉じられるので、最初の点を最後の点として複製する必要はありません。 ・自己交差するポリゴンはサポートされていません。リクエストされた場合、該当するエラーが返されます。 | polygon:BF05xgKuy2xCx9B7vUl0OhnR54EqSzpEl-HxjD3pBiGnyGi2CvwFsgD3nD4vB6e |
資料
HERE Routing APIとその回避機能に関する詳細は、以下の資料を参照ください。:
- HERE Maps API for Javascript
- Map with Driving Route from A to B sample
- Polygon on the Map sample
- HERE Routing API リファレンス (avoid parameter をクリックすると、詳細が表示されます)
- 回避 チュートリアル
- ゾーンの回避 チュートリアル
- エリアの回避 チュートリアル
- セグメントの回避 チュートリアル
- 国の除外 チュートリアル
原文:HERE Routing API supports polygons for avoid areas
著者:Erwin Soekianto