車と徒歩での移動
SDK for iOS は、徒歩またはドライブ用に最適化された複数の経由地を使用したルート計算をサポートしています。
- すべての経由地間の接続パスを表示する、マップ上にレンダリングされる行
- テキスト形式でのターンバイターンの方向転換
[[NMAMapLoader sharedMapLoader] performMapDataUpdate]
、 API を使用します。 GitHub でのルーティング例
この機能を示す例について は、 https://github.com/heremaps/ (Obj-C) および https://github.com/heremaps/ (Swift) を参照してください。
NMACoreRouter
NMACoreRouter
クラスは NMARoute
、経由地およびの一覧表を使用してを計算します NMARoutingMode
。 NMACalculateResultBlock
また、計算の進行状況を監視し、完了時に適切なコールバックメソッドをトリガするためのも提供されます。 ルートを計算するには calculateRouteWithStops:routingMode:completionBlock:
、メソッドを呼び出します。 別の NMACoreRouter
インスタンスを使用して計算リクエストを起動することで、並列ルーティングリクエストを起動できます。
NMACoreRouter
は、ルート計算を開始する前に dynamicPenalty
プロパティを設定することで、トラフィックが考慮されたルートを計算することもできます。 NMADynamicPenalty
クラスの詳細 については、「ダイナミックルーティングのペナルティ」を参照してください。
NMACoreRouter
変数は、厳密に参照され、保持されている必要があります ( クラスメンバーに作成された変数など ) 。 そうしないと、オブジェクトがスコープ外に移動し、ガベージコレクションされる可能性があります。 NMAWaypoint
NMACoreRouter
は、経由地 AS NMAPlace
、 NMAPlaceLocation
、または NMAWaypoint
のオブジェクトをサポートします。
を使用 NMAWaypoint
して、自動車ルート計算に経由地の詳細を追加できます。 これらの詳細には、経由地が意図的なストップオーバーであるか、またはルートが通過する必要があるパススルーポイントであるかが含まれます。 ストップオーバーまたはパススルー経由地が含まれているルートが異なる場合があるため、これはルーティングに影響します。 たとえば、計算されたルートでは、ストップオーバー後の U ターン操作が提案され、パススルー経由地と同じ場所にあるルートでは、同じ道路を走行することが推奨されます。 パススルー経由地タイプは、 CAR ルートでのみサポートされ、他のルートタイプではサポートされません。
NMARoutingMode
NMARoutingMode
このクラスは、次 NMARoute
のようなの計算に必要なパラメータのモデルです。 -
routingType
- 最速、最短などのルーティングタイプ -
transportMode
- 輸送手段 -
routingOptions
-NMARoutingOption
このルートに適用されるルーティングオプション(列挙体で表されます) -
startDirection
- ルートが開始する進行方向。 デフォルトでは、最速のルートを達成するために「任意の方向」に設定されています -
departureTime
- ルートの出発時間 -
resultLimit
- 計算する代替ルートの最大数 ( 実際の結果数がこの制限よりも少ない可能性があります )
-
Fastest
- 出発地点から目的地までのルートの計算が、移動時間によって最適化されます。 場合によっては、最速モードで返されたルートが最短の移動時間を持つルートではないことがあります。 たとえば、迂回路や脇道を通る近道を利用して、短時間の移動が可能な場合でも、高速道路に残っているルートが適しています。 -
Shortest
- 開始地点から目的地までのルート計算で、速度情報が無視されます。 このモードでは、ルートを適切に保ちながら、ルートの距離が最小化されます。 これには、たとえば、ターンのペナルティが含まれます。 そのため、結果として生じるルートは必ずしも最短距離のルートであるとは限りません。 -
Balanced
- 出発地点から目的地までのルート計算を行い、移動時間と走行距離の組み合わせに基づいて最適化します。
NMARoutingMode
クラスを使用して必要なルート数を設定 すると、 HERE SDK はこの制限に従って異なるルートを返します。 返された配列の最初の要素がルーティングオプションに基づいた最適な結果であり、返されたルートの REST は特定の順序で一覧表示されないことに注意してください。 NMARTE
NMARoute
このクラスは、 2 つ以上の経由地を接続する別個の計算パスを表し、操作およびルートリンクのリストで構成されます。 NMACoreRouter
の calculateRouteWithStops:routingMode:completionBlock:
メソッドの呼び出しによってルート計算がトリガーされますが、返された NSProgress
オブジェクトと NMACalculateResultBlock
ブロックを使用して操作を監視し、結果の NMARoute
オブジェクトを処理できます。
NMARoute
オブジェクトには、次の 1 つ以上のメソッドを呼び出してアクセスできるルート情報が含まれています。 -
routingMode
-NMARoutingMode
ルートの -
waypoints
- ルートのすべての経由地の配列 -
start
- ルートの開始経由地 -
destination
- ルートの宛先経由地 -
maneuvers
- ルートの操作の配列 -
length
- ルートの長さ ( メートル単位 ) -
ttaIncludingTrafficForSubleg
-NMARouteTta
ルート計算時の交通状況を考慮して到着する推定時間を示す -
ttaUsingDownloadedTrafficForSubleg
-NMARouteTta
デバイスにダウンロードされたトラフィックデータから交通状況が取得されている間の、交通状況に伴う到着予定時間を示す -
ttaExcludingTrafficForSubleg
-NMARouteTta
交通状況を考慮せずに到着予定時間を示す -
boundingBox
-NMAGeoBoundingBox
ルート全体が含まれている最小値を取得します -
routeGeometry
-NMAGeoCoordinates
ルート沿いのすべての配列を取得します -
mapPolyline
-NMAMapPolyline
ルートのリプレゼンテーションを取得します
NMALOUTETTA
NMARouteTta
( 「到着までの時間」 ) クラスは、車両プールの制約、ターンアラウンドの制約、道路の渋滞など、走行時間に影響を与える所要時間やルートの詳細など、ルートに関する有用な情報を提供します。 たとえば、計算されたルートの期間を取得するに tta
は、プロパティを使用します。 たとえば、
NSTimeInterval duration = [route ttaExcludingTrafficForSubleg:NMARouteSublegWhole].duration;
ttaForSubleg:
メソッドを使用して、ルートからサブレッグの期間を取得することもできます。 たとえば、
if (myRoute.sublegCount > 0)
{
NSTimeInterval duration = [myRoute ttaExcludingTrafficForSubleg:0].duration;
}
トラフィックアウェアルーティングと NMALOTTA
この NMARoute
クラスには、トラフィックを反映する別の NMARouteTta
結果セットを提供する ttaIncludingTrafficForSubleg
メソッドと ttaUsingDownloadedTrafficForSubleg
メソッドもあります。 トラフィックペナルティモードを設定してルートが最初に計算された場合 ttaIncludingTrafficForSubleg
、メソッドは、ルート計算時に交通状況に合わせて到着までの推定時間を返します。 値はルート計算時に 1 回計算され、時間とともに変更されません。ルートが戻されてから経過した時間が(ttaIncludingTrafficForSubleg
を使用して取得した)到着までの時間を正確にするのに十分な大きさである場合に ttaUsingDownloadedTrafficForSubleg
使用してください。 交通状況が変化した場合。 NMATrafficManager
クラスを使用して交通データが頻繁に更新されていれば、到着予定時刻のより最新の見積もりが ttaUsingDownloadedTrafficForSubleg
提供されます。
ttaIncludingTrafficForSubleg
計算時の交通状況を考慮して、到着までの時間を取得するためのコード スニペットの使用方法。 ...
NMADynamicPenalty *penalty = [[NMADynamicPenalty alloc] init];
penalty.trafficPenaltyMode = NMATrafficPenaltyModeOptimal;
coreRouter.dynamicPenalty = penalty;
[coreRouter calculateRouteWithStops:stops routingMode:routingMode
completionBlock:^(NMARouteResult *routeResult, NMARoutingError error) { ... }];
NSTimeInterval duration = [route ttaIncludingTrafficForSubleg:NMARouteSublegWhole].duration;
ダウンロードしたトラフィックデータに基づいて期間を計算する必要がある場合は、次の手順を実行して、トラフィックデータの入力を要求することもできます。
[[NMATrafficManager sharedTrafficManager] requestTrafficOnRoute:route];
// Wait for the callback that the traffic data has been downloaded: trafficDataDidFinish
NSTimeInterval durationWithTraffic = [route ttaUsingDownloadedTrafficForSubleg:NMARouteSublegWhole].duration;
NMAManeuver
NMAManeuver
このクラスは、計算された内で 1 つのセグメントから次のセグメントに移動するために必要なアクションを表し NMARoute
ます。 NMAManeuver
各オブジェクトは、次のような情報を提供します。 - 操作の場所
- 操作を完了するために必要な操作
- 操作間の距離
- 現在の道路
- 次の道路
- 操作の推定時間
- 入口、出口、または合流情報を示す高速道路の標識 ( ある場合 )
- この操作の一部を表すルートエレメントのリスト
NMALOUTEElement および NMARoadElement
NMARouteElement
および NMARoadElement
は、操作の一部を表します。 たとえば、ドライバーに左折を要求してから通りに出るように指示する場合がありますが、この通りはトンネル、泥道、トール道路などの複数のセクションで構成されていることがあります。 この状況では、操作に複数 NMARouteElement
のオブジェクトが含ま NMARoadElement
れており、各エレメントに道路の個々のセクションに関する情報をアプリケーションに提供できるプロパティが含まれています。
NMAMapRoute
NMAMapRoute
このクラスは、 NMAMapObject
地図に計算されたルートを表示するのタイプです。 通常、アプリケーションはルート計算後に NMAMapRoute
を作成し、 NMAMapView addMapObject:
を呼び出してマップに NMAMapRoute
追加します。
renderType
プロパティと NMAMapRoute
API を使用して、地図のルートの色をカスタマイズできます。 サポートされているレンダリングタイプの値は NMAMapRouteRenderTypePrimary
、、 NMAMapRouteRenderTypeSecondary
、の 3 つ NMAMapRouteRenderTypeUserDefined
です。 デフォルト NMAMapRoute
では、は事前定義された色のプライマリセットに設定され、セカンダリレンダリングタイプは代替ルートを示すように設計されています。 NMAMapRouteRenderTypeUserDefined
を使用すると、 color
および traveledColor
プロパティを使用して、任意の ARGB カラーにルートのカラーを設定できます。
![]() | ![]() |
![]() |
たとえば、 2 つの経由地(開始および宛先)を接続するルートをレンダリングする場合は、次のアプリケーションロジックを追加できます。
NMAMapRoute
にが追加されました NMAMapView

- を作成します
NMACoreRouter
// Create a NMACoreRouter. NMACoreRouter* coreRouter = [[NMACoreRouter alloc] init];
NSMutableArray
を作成し、 2 つのNMAGeoCoordinates
経由地
を追加しますNMAGeoCoordinates* geoCoord1 = [[NMAGeoCoordinates alloc] initWithLatitude:49.1966286 longitude:-123.0053635]; NMAGeoCoordinates* geoCoord2 = [[NMAGeoCoordinates alloc] initWithLatitude:49.1947289 longitude:-123.1762924]; NMAWaypoint* waypoint1 = [[NMAWaypoint alloc] initWithGeoCoordinates:geoCoord1]; NMAWaypoint* waypoint2 = [[NMAWaypoint alloc] initWithGeoCoordinates:geoCoord2]; NSMutableArray* stops = [[NSMutableArray alloc] initWithCapacity:4]; [stops addObject:waypoint1]; [stops addObject:waypoint2];
- を作成し
NMARoutingMode
、そのNMATransportMode
、NMARoutingType
、NMARoutingOption
およびの値を設定しますNMARoutingMode* routingMode = [[NMARoutingMode alloc] initWithRoutingType:NMARoutingTypeFastest transportMode:NMATransportModeCar routingOptions:0];
- 交通状況を考慮しながらルートを計算する場合は、次のフラグを設定します。
NMADynamicPenalty *penalty = [[NMADynamicPenalty alloc] init]; penalty.trafficPenaltyMode = NMATrafficPenaltyModeOptimal; coreRouter.dynamicPenalty = penalty;
- ルートを計算し、ルート計算の結果を受信します。
[coreRouter calculateRouteWithStops:stops routingMode:routingMode completionBlock:^(NMARouteResult *routeResult, NMARoutingError error) { // If the route was calculated successfully if (!error && routeResult && routeResult.routes.count > 0) { NMARoute* route = [routeResult.routes objectAtIndex:0]; // Render the route on the map NMAMapRoute* mapRoute = [NMAMapRoute mapRouteWithRoute:route]; [mapView addMapObject:mapRoute]; // To see the entire route, we orient the map view accordingly [mapView setBoundingBox:route.boundingBox withAnimation:NMAMapAnimationLinear]; } else if (error) { // Display a message indicating route calculation failure } }];
注 :NMARoutingErrorViolatesOptions
エラーが発生した場合でも、ルートが返されます。 ルーティングオプションに違反するこれらのルート結果は、ユーザーが処理する必要があります。
ダイナミックルーティングのペナルティ
を使用 NMADynamicPenalty
して、ルート探索の計算時に適用される道路およびエリア制限要因のポリシーを作成できます。 たとえば、このクラスを使用して、あるエリアの走行速度が通常より 50% 遅くなっていることを示します。 NMADynamicPenalty
このクラスで trafficPenaltyMode
は、プロパティを介したルート計算で交通イベントを処理するために使用されるモードを設定することもできます。
で dynamicPenalty
プロパティを設定することで、アクティブなポリシーを変更 NMACoreRouter
できます。 制限を考慮するには、ルート計算の前にポリシーを設定する必要があります。
交通イベントオブジェクトを取得しています
NMATrafficManager
このクラスを使用して、道路閉鎖や渋滞などの交通イベントを取得できます。 これは、アプリが特定のルートの現在のトラフィックイベントのリストを表示する必要がある場合に役立ちます。
NMATrafficManager
は、 2 つのステップから成るプロセスです。 まず、 method: requestTrafficOnRoute:
メソッドを使用して目的のルートでイベントを取得します。 NSNumber *requestID = [[NMATrafficManager sharedTrafficManager] requestTrafficOnRoute:myRoute];
requestTrafficOnRoute:
メソッドは、現在のトラフィックデータをデバイスにダウンロードする非同期要求を起動します。 NMAMapView
を表示するようにが設定されている場合、トラフィックデータも定期的にダウンロードされます。 ただし requestTrafficOnRoute:
、を使用してトラフィックイベントを取得する前に、明示的に呼び出すことをお勧め NMATrafficManager
します。 trafficDataDidFinish
コールバックが成功すると、次のいずれかの方法を使用して、特定のルートまたはルート要素に影響を与えるトラフィックイベントのリストを取得できます。 -
getTrafficEventsOnRoute:withCompletion:
-
getTrafficEventsOnRouteElements:withCompletion:
オフラインルーティング
SDK for iOS で開発されたアクティブなデータ接続アプリケーションがなくても、ある場所から別の場所への移動を支援するためのルーティング情報を要求できます。
アプリケーションユーザーは、ルートを計算して地図に表示するために、アクティブなデータ接続を維持する必要はありません。 オフライン中にルーティングリクエストを実行するための更新されたマップおよびデータベース情報を事前にダウンロードできます。 たとえば、ユーザーがカリフォルニア州とオレゴン州のオフライン地図をダウンロードした場合、サンディエゴからポートランドまでのルートをデータに接続せずに作成できます。
オフライン地図のダウンロードの詳細 については、「マップ データのプリロード」を参照してください。
NMARequestConnectivity
)の動作が SDK の他の部分とより整合性を保つように更新されました。 - 「デフォルト」の接続モードを使用してリクエストを開始すると
NMAApplicationContext
、そのリクエストは接続設定に従って実行されます。NMAApplicationContext
がオンラインモードに設定されているときにデバイスがオフラインの場合、要求は失敗します。 - 「オンライン」接続モードを使用してリクエストを開始すると
NMAApplicationContext
、接続設定に関係なくオンラインリクエストが実行されます。 - 「オフライン」接続モードを使用してリクエストを開始すると
NMAApplicationContext
、接続設定に関係なくオフラインリクエストが実行されます。
ルーティング関連の列挙体
-
NMARoutingType
列挙型 (enum) :NMARoutingTypeFastest
またはなどのさまざまなルーティングタイプを記述する値を表しますNMARoutingTypeShortest
-
NMATransportMode
列挙型 (enum) -NMATransportModeCar
またはなどのさまざまな転送モードを記述する値を表しますNMATransportModePedestrian
-
NMARoutingOption
列挙型 (enum) -NMARoutingOptionAvoidBoatFerry
またはなどのルート計算の特殊な条件を記述する値を表しNMARoutingOptionAvoidTollRoad
ます。 この 列挙型 (enum) の値は、ルートの計算後にも返され、ルート結果が違反するオプションを示します -
NMARouteViolatedOption
列挙型 (enum) - に加えて、ルート計算で違反した特別な条件を記述する値を表しNMARoutingOption
ます。 この 列挙型 (enum) には、道路の渋滞および曲がる際の制限に関する値が含まれています。 たとえば、通行料やフェリーを回避するルート計算を指定した後、NMARouteViolatedOptionBlockedRoad
違反があるオプションNMARoute
が表示されることがあります。 ルートが見つかりましたが、このルートは少なくとも 1 つのブロックされた道路を通過し、ルートリクエストの条件に違反しています注 : がないNMARouteViolatedOptionBlockedRoad
場合、必ずしもルートで道路がブロックされていないことを示しているわけではありません。 これは、交通情報が利用できない場合や、ルート計算で有効になっていない場合に特に当てはまります。 -
NMARoutingError
列挙型 (enum) :NMARoutingErrorNone
やなどのルート計算エラーを記述する値を表しますNMARoutingErrorViolatesOptions