回避
ルートを計算して、特定のマップ機能やエリアを回避できます。
マップ機能は、機能カテゴリを指定することで指定できます。 たとえば、有料道路を回避するルートは、ルートを要求するときにavoid[features]=tollRoad
を指定する ことで計算できます。 環境ゾーンを回避するルートは、avoid[zoneCategories]=environmental
を指定することで計算できます。
回避する機能の識別子を指定することで、マップの特定の機能を回避することもできます。 たとえば、ベルリンの Invalidenstrasse の一部である特定のセグメントを回避するルートで avoid[segments]=here:cm:segment:207551710
を指定することで計算できます。 1 つの特定の環境ゾーン(「 Berlin Umweltzone 」)を回避するルートでavoid[zoneIdentifiers]=here:cm:envzone:2
を指定することで計算できます。
エリア全体を避けるために、ユーザーが指定したバウンディング ボックスを提供できます。 たとえば、 Berlin エリアを回避するルートは、avoid[areas]=bbox:13.082,52.416,13.628,52.626
を指定することで計算できます。
アクセスできない島などにavoid[features]=ferry
を指定した場合、この機能を回避するルートがないことがあります。 この場合、機能を最小限に抑えるルートを返すことができます。 ただし、avoid
の違反によってのみルートが返される場合、そのルートが返される保証はありません。
avoid
リクエストに違反するルートが返された場合、そのルートがこの機能を回避しないことを示す通知が含まれます。
指定した回避オプションを回避する例
このリクエストで avoid
は、次のオプションを使用して tollRoad 機能を回避できました。
curl -X GET \
'https://router.hereapi.com/v8/routes?destination=47.168076,11.861380&origin=47.257410,11.351458&transportMode=car&avoid[features]=tollRoad&apikey={YOUR_API_KEY}'
{
"routes": [
{
"id": "428d7f71-f92b-484f-a4b5-d491b35f6210",
"sections": [
{
"arrival": {
"place": {
"location": {
"lat": 47.168049830943349,
"lng": 11.861283313483
},
"type": "place"
},
"time": "2019-12-09T16:06:36+01:00"
},
"departure": {
"place": {
"location": {
"lat": 47.25743193179369,
"lng": 11.35145296342671
},
"type": "place"
},
"time": "2019-12-09T14:23:59+01:00"
},
"id": "ccba0c50-76f7-4d55-a8da-ce5c3ee629a9",
"transport": {
"mode": "car"
},
"type": "vehicle"
}
]
}
]
}
指定した回避オプションに違反する例
このリクエストは回避オプションに違反しています :
curl -X GET \
'https://router.hereapi.com/v8/routes?destination=53.863531,14.284817&origin=53.859552,14.271760&transportMode=car&avoid[features]=ferry&apikey={YOUR_API_KEY}'
レスポンスで notice
は、コードを使用してviolatedAvoidFerry
が指定されます。
{
"routes": [
{
"id": "7616d85b-da9a-46bd-9b9f-e8dafe34213a",
"sections": [
{
"arrival": {
"place": {
"location": {
"lat": 53.86060992255807,
"lng": 14.277769988402725
},
"type": "place"
},
"time": "2019-12-09T14:31:28+01:00"
},
"departure": {
"place": {
"location": {
"lat": 53.859547432512048,
"lng": 14.271750692278147
},
"type": "place"
},
"time": "2019-12-09T14:08:34+01:00"
},
"id": "217649dd-5584-4162-b235-f625f5b25185",
"transport": {
"mode": "car"
},
"type": "vehicle"
},
{
"arrival": {
"place": {
"location": {
"lat": 53.862169962376359,
"lng": 14.28596992045641
},
"type": "place"
},
"time": "2019-12-09T14:42:28+01:00"
},
"departure": {
"place": {
"location": {
"lat": 53.86060992255807,
"lng": 14.277769988402725
},
"type": "place"
},
"time": "2019-12-09T14:31:28+01:00"
},
"id": "e955e9cf-7783-4c77-a9ee-8ba1b409b612",
"notices": [
{
"code": "violatedAvoidFerry",
"title": "Violated avoid ferry"
}
],
"transport": {
"mode": "ferry"
},
"type": "vehicle"
},
{
"arrival": {
"place": {
"location": {
"lat": 53.86353185400367,
"lng": 14.284817911684513
},
"type": "place"
},
"time": "2019-12-09T14:44:22+01:00"
},
"departure": {
"place": {
"location": {
"lat": 53.862169962376359,
"lng": 14.28596992045641
},
"type": "place"
},
"time": "2019-12-09T14:42:28+01:00"
},
"id": "3a8fe2c0-269a-45f1-a5bb-aab060d78c7c",
"transport": {
"mode": "car"
},
"type": "vehicle"
}
]
}
]
}
回避オプションで失敗する例
このリクエストは、次の回避オプションで失敗します。
curl -X GET 'https://router.hereapi.com/v8/routes?origin=52.531106,13.384915&transportMode=car&destination=55.954408,-3.194735&avoid[features]=ferry,carShuttleTrain&return=summary&apikey={YOUR_API_KEY}'
{
"notices": [
{
"title": "Route calculation failed: Couldn't find a route.",
"code": "noRouteFound"
}
],
"routes": []
}
詳細なセクション通知を取得します
この要求は、存在しないルートの経由地 およびパラメータを指定します。 計算の結果、ルートの特定のセクションの通知を指定するレスポンスが返されます。
curl -X GET \
'https://router.hereapi.com/v8/routes?origin=50.892387,20.655124&destination=50.894911,20.64899&transportMode=truck&vehicle[grossWeight]=4000&departureTime=2020-10-28T00:01:00+01:00&apikey={YOUR_API_KEY}'
{
"routes": [
{
"id": "4ff6518f-ebf4-4c69-aa6f-ed1a67c0daec",
"sections": [
{
"id": "f9fd7dca-e7ca-4c95-9033-fb5b395a5452",
"type": "vehicle",
"departure": {
"time": "2020-10-28T00:01:00+01:00",
"place": {
"type": "place",
"location": {
"lat": 50.8924,
"lng": 20.655124
},
"originalLocation": {
"lat": 50.892387,
"lng": 20.6551239
}
}
},
"arrival": {
"time": "2020-10-28T00:04:32+01:00",
"place": {
"type": "place",
"location": {
"lat": 50.8948931,
"lng": 20.6489882
},
"originalLocation": {
"lat": 50.8949109,
"lng": 20.64899
}
}
},
"notices": [
{
"title": "Violated vehicle restriction.",
"code": "violatedVehicleRestriction",
"severity": "critical",
"details": [
{
"type": "restriction",
"cause": "Route violates vehicle restriction",
"maxGrossWeight": 3500,
"timeDependent": true
}
]
}
],
"transport": {
"mode": "truck"
}
}
]
}
]
}
ルーティングゾーン
ルーティングゾーンおよびその回避方法については 、 HEREを参照してください。
エリアを回避
エリアを避ける方法については 、 ここを参照してください。