地点の管理

このドキュメントでは、次の 2 つの機能を使用して、アプリの地点の設定を管理する方法について説明します。

  • 道路の側面のルーティング設定
  • 立ち寄り

道路の側面のルーティング設定を設定する

デフォルトでは、Navigation SDK for iOS は地点までの最短ルートを検索しますが、ユーザーが道路の目的の側(たとえば、相乗りサービスの運転手の顧客が待っている側)に到着するとは限りません。道路の側面のルーティング設定 機能を使用すると、車両が道路の正しい側に到着するようにできます。

仕組み

特定の道路の側に到着する設定は、その停車地の地点を作成するときに設定します。設定は次の 2 種類の方法で指定できます。

道路の同じ側を優先する

地点の地理座標を指定し、最も近い歩道にスナップされた地点と同じ道路の側に到着することを優先することを示すフラグ preferSameSideOfRoad を設定します。

(nullable instancetype)initWithLocation:(CLLocationCoordinate2D)location
                                  title:(NSString *)title
                   preferSameSideOfRoad:(BOOL)preferSameSideOfRoad;

到着方向を設定する

ウェイポイントの地理座標を指定し、 到着方向 preferredSegmentHeading 目的地と同じ道路の側の交通の流れの方向と一致する を指定します。

(nullable instancetype)initWithLocation:(CLLocationCoordinate2D)location
                                  title:(NSString *)title
                preferredSegmentHeading:(int32_t)preferredSegmentHeading;

Navigation SDK は、地点に最も近い道路セグメントを選択します。この道路セグメントの車線方向は、地点がある道路の側と(+/- 55 度以内で)一致します。

立ち寄りの設定を行う

場所によっては、ユーザーが安全に停車できない場合があります(高架、フェリー、地下、その他のアクセスが制限されている場所など)。立ち寄り 機能は、地点の位置がユーザーの停車に適していない場合、地点を近くの場所に移動します。vehicleStopoverYES に設定すると、代替の場所がある場合、ルートの計算時に地点が自動的に移動します。

仕組み

立ち寄りの設定は、その停車地の地点を作成するときに設定します。 これを行うには、次の例に示すように、GMSNavigationMutableWaypoint で立ち寄りの設定を行います。

Swift

let location = CLLocationCoordinate2D(latitude: 47.67, longitude: -122.20)
let waypoint = GMSNavigationMutableWaypoint(location: location, title: "waypoint from location")!
waypoint.vehicleStopover = true
mapView.navigator?.setDestinations([waypoint], routingOptions: routingOptions, callback: {...})

Objective-C

CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationMutableWaypoint *waypoint =
    [[GMSNavigationMutableWaypoint alloc] initWithLocation:location
                                                     title:@"waypoint from location"];
waypoint.vehicleStopover = YES;
[_mapView.navigator setDestinations:@[waypoint1]
                     routingOptions:routingOptions
                           callback:^(GMSRouteStatus routeStatus){...}];