地点の管理

このドキュメントでは、次の 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 度以内)の道路セグメントを選択します。

立ち寄り場所の設定

一部の場所(高架、フェリー、地下、アクセスが制限されている場所など)では、ドライバーは安全に停車できません。Stopover 機能は、ある地点が車両の停車地として不適切である場合に、その地点を近くの場所に再配置します。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){...}];