iOS 開発者ガイド for SDK

スクータールート探索

スクータールートでは、スクーター固有の速度評価を使用して、車の道路を使用したルート計算が提供されます。 このタイプのルーティングは、オンラインまたはオフラインで実行できます。

注 : スクータールーティングは以下の国でのみサポートされています。
  • インド
  • インドネシア
  • シンガポール
  • 台湾
  • タイ
  • ベトナム

オフラインスクータールーティングを実行するに NMAMapDataGroupScooterAttributes は、以下の例のように、オプションのデータグループをダウンロードまたはプリフェッチする必要があります。 データグループの詳細 については、「マップパッケージのダウンロード」を参照してください。

// Select additional data group needed for offline scooter routing
[[NMAMapLoader sharedMapLoader] selectDataGroup:NMAMapDataGroupScooterAttributes];
// Whether download map package(s)
[[NMAMapLoader sharedMapLoader] installMapPackages:@[package]];
// Or prefetch
[[NMAMapDataPrefetcher sharedMapDataPrefetcher] fetchMapDataForBoundingBox:boudingBox error:nil];
図 1. スクータールート

スクーターのルートには車専用道路が含まれています。 スクーターは高速道路では許可されていないため、このタイプのルート計算では高速道路は使用されません。 禁止されている場合、車両固有の道路や高速道路を回避できないと、スクーターの経路計算が失敗します。

注 : スクータールーティングは最速ルートのみをサポートします。

この機能は、スクーターの速度制限をサポートしています。これは 45 km/時 です。 計算されたルートでは、スクーターの走行速度が車の走行速度よりも遅いという事実が考慮されます。たとえば、車の走行速度が 45 km/時 を超える道路などです。 また、交通量が多いため、スクーターでの移動時間は車での移動時間よりも短くなります。

スクータールートを計算するには、次の例のように、他の輸送モードタイプと同様の手順を使用します。

// Create a NMACoreRouter
NMACoreRouter* coreRouter = [[NMACoreRouter alloc] init];
NMAGeoCoordinates* geoCoord1 =
  [[NMAGeoCoordinates alloc] initWithLatitude:49.276271 longitude:-123.113224];
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* routingMode = [[NMARoutingMode alloc]
  initWithRoutingType:NMARoutingTypeFastest
  transportMode:NMATransportModeScooter
  routingOptions:0];

[coreRouter calculateRouteWithStops:stops routingMode:routingMode
  completionBlock:^(NMARouteResult *routeResult, NMARoutingError error) {
    // If the route was calculated successfully
    if (!error && routeResult && routeResult.routes.count > 0) {
      NMARoute* scooterRoute = [routeResult.routes objectAtIndex:0];
      // ...
    } else if (error) {
      // Display a message indicating route calculation failure
    }
  }];