地点の管理

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

  • 道路のどちら側を走行するかの設定
  • 途中降機

道路のどちら側を走行するかの設定

デフォルトでは、Navigation SDK for iOS はウェイポイントへの最速ルートを検索しますが、ユーザーが目的の道路側(たとえば、ライドシェア ドライバーの顧客が待っている道路側)に到着するとは限りません。道路のどちら側を優先するか機能を使用すると、車両が道路の正しい側に到着するようにできます。

仕組み

道路の特定の側に到着する設定は、その停車地のウェイポイントを作成するときに設定します。設定は次のいずれかの方法で指定できます。

道路の同じ側を優先する

ウェイポイントの地理座標を指定し、ウェイポイントと同じ側の道路(最寄りの歩道にスナップ)に到着することを優先するフラグ 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 度以内)。

途中降機の設定

特定の場所(高架エリア、フェリー、地下、その他のアクセスが制限されているエリアなど)では、ユーザーが安全に停車することはできません。途中降機機能は、ユーザーが立ち寄るのに適していない場所にあるウェイポイントを、付近の場所に移動します。vehicleStopover を YES に設定すると、代替の場所が利用可能な場合、ルートの計算時にウェイポイントが自動的に再配置されます。

仕組み

途中降機の設定は、その途中降機のウェイポイントを作成するときに設定します。これを行うには、次の例に示すように、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){...}];