ルートをインポートします
ルートのインポートは、ルートシェイプからカスタムルートオブジェクトを作成する機能です。特に、地理座標のリスト(緯度、経度)から作成できます。
アプリケーションユーザーは、外部ベンダーから SDK にカスタムルートをインポートし、これらのルートのルートガイダンスを提供できます。 例として、ルートは、以前にデバイスに保存された GPX ファイルの地理座標のリストに基づいて計算されます。 いずれの場合も、ルートは現在のマップ データに基づいて計算されます。
ルートの計算は、指定されたポイントのリストとナビゲーションモードに基づいて行われます。 ナビゲーションモードは、地点間のルート計算およびガイダンス中のルート再計算に使用されます。
注 :
提供されたルートシェイプがルートオブジェクトにインポートできることを 100% 保証するものはありません。 場合によっては、結果のルートが元のルートシェイプと異なるか、まったく作成されないことがあります。 ルートを正常に取得するには、提供されたルートシェイプが次の条件を満たす必要があります。
- 地理座標は 1000 以下にしてください。
- 地理的ポイントは、障害物のない、移動可能な道路のリンクに配置する必要があります。
- 地理的なポイントは、ルート内の予想される道路リンクと一致する必要があります。
- 複雑な道路網 ( 複合的な交差点、超過道路、高速道路の合流、インターチェンジなど ) がある地域に位置するジオポイントを使用しないでください。
- 高密度であっても、ルート品質は向上しません。 ルートの一部に道路に関する設定がない場合、対応するジオポイントは SDK によって自動的に近似されるため、削除できます。その結果、全体的なパフォーマンスが向上します。
ルート計算の例
- まず、目的のポイントを使用して新しい配列を作成します。
// Create an array of points NSMutableArray<NMAGeoCoordinates *> *points = [[NSMutableArray alloc] init]; [points addObject:[[NMAGeoCoordinates alloc] initWithLatitude:52.4992 longitude:13.3956]]; [points addObject:[[NMAGeoCoordinates alloc] initWithLatitude:52.4999 longitude:13.3952]]; [points addObject:[[NMAGeoCoordinates alloc] initWithLatitude:52.5007 longitude:13.3948]]; [points addObject:[[NMAGeoCoordinates alloc] initWithLatitude:52.5015 longitude:13.3945]]; [points addObject:[[NMAGeoCoordinates alloc] initWithLatitude:52.5023 longitude:13.3947]]; [points addObject:[[NMAGeoCoordinates alloc] initWithLatitude:52.5031 longitude:13.3953]]; [points addObject:[[NMAGeoCoordinates alloc] initWithLatitude:52.5030 longitude:13.3961]]; [points addObject:[[NMAGeoCoordinates alloc] initWithLatitude:52.5027 longitude:13.3972]]; [points addObject:[[NMAGeoCoordinates alloc] initWithLatitude:52.5025 longitude:13.3980]]; [points addObject:[[NMAGeoCoordinates alloc] initWithLatitude:52.5020 longitude:13.3980]]; [points addObject:[[NMAGeoCoordinates alloc] initWithLatitude:52.5014 longitude:13.3977]];
- 新しい
NMARoutingMode
オブジェクトを作成します。// Create the NMARoutingMode and set its transport mode & routing type NMARoutingMode* routingMode = [[NMARoutingMode alloc] initWithRoutingType:NMARoutingTypeFastest transportMode:NMATransportModeCar routingOptions:0];
- を呼び出してルートを計算
calculateRouteWithPoints:routingMode:completionBlock:
します。// Calculate route [coreRouter calculateRouteWithPoints:points routingMode:routingMode completionBlock:^(NMARouteResult *routeResult, NMARoutingError error) { // If the route was calculated successfully if (!error && routeResult && routeResult.routes.count > 0) { NMARoute* route = [routes objectAtIndex:0]; // Render the route on the map mapRoute = [NMAMapRoute mapRouteWithRoute:route]; [mapView addMapObject:mapRoute]; } else if(error) { // Display a message indicating route calculation failure } }];
