iOS 開発者ガイド for SDK

ルートをインポートします

ルートのインポートは、ルートシェイプからカスタムルートオブジェクトを作成する機能です。特に、地理座標のリスト(緯度、経度)から作成できます。

アプリケーションユーザーは、外部ベンダーから SDK にカスタムルートをインポートし、これらのルートのルートガイダンスを提供できます。 例として、ルートは、以前にデバイスに保存された GPX ファイルの地理座標のリストに基づいて計算されます。 いずれの場合も、ルートは現在のマップ データに基づいて計算されます。

ルートの計算は、指定されたポイントのリストとナビゲーションモードに基づいて行われます。 ナビゲーションモードは、地点間のルート計算およびガイダンス中のルート再計算に使用されます。

注 :
提供されたルートシェイプがルートオブジェクトにインポートできることを 100% 保証するものはありません。 場合によっては、結果のルートが元のルートシェイプと異なるか、まったく作成されないことがあります。 ルートを正常に取得するには、提供されたルートシェイプが次の条件を満たす必要があります。
  • 地理座標は 1000 以下にしてください。
  • 地理的ポイントは、障害物のない、移動可能な道路のリンクに配置する必要があります。
  • 地理的なポイントは、ルート内の予想される道路リンクと一致する必要があります。
  • 複雑な道路網 ( 複合的な交差点、超過道路、高速道路の合流、インターチェンジなど ) がある地域に位置するジオポイントを使用しないでください。
  • 高密度であっても、ルート品質は向上しません。 ルートの一部に道路に関する設定がない場合、対応するジオポイントは SDK によって自動的に近似されるため、削除できます。その結果、全体的なパフォーマンスが向上します。

ルート計算の例

  1. まず、目的のポイントを使用して新しい配列を作成します。
    // 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]];
    
  2. 新しい NMARoutingMode オブジェクトを作成します。
    // Create the NMARoutingMode and set its transport mode & routing type
    NMARoutingMode* routingMode = [[NMARoutingMode alloc] initWithRoutingType:NMARoutingTypeFastest transportMode:NMATransportModeCar routingOptions:0];
    
  3. を呼び出してルートを計算 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
          }
        }];
    
図 1. インポートされたルート