Gerenciar waypoints

Este documento descreve como você pode gerenciar as preferências de waypoint para seu app usando dois recursos:

  • Preferências de trajeto na lateral da via
  • Parada

Definir preferência de trajeto para o lado da via

Por padrão, o SDK do Navigation para iOS encontra o trajeto mais rápido até um waypoint, mas isso não garante que o veículo chegue no lado da via que o consumidor está esperando. Com o recurso Preferência de trajeto no lado da via, você garante que o veículo chegue no lado correto da via.

Como funciona

Você define a preferência para chegar a um lado específico da via ao criar o waypoint para essa parada. É possível especificar a preferência de duas maneiras.

Prefiro o mesmo lado da via

Informe as coordenadas geográficas do waypoint e defina uma flag preferSameSideOfRoad para indicar que prefere chegar no mesmo lado da via que o waypoint, que corresponde à calçada mais próxima.

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

Título do segmento preferido

Informe as coordenadas geográficas do waypoint e uma direção de chegada preferredSegmentHeading que corresponda à direção do fluxo do trânsito no mesmo lado da via que o consumidor em espera.

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

O SDK do Navigation escolhe o trecho de via mais próximo do waypoint, que tem uma direção de faixa que se alinha (dentro de +/- 55 graus) com a parte da via em que o waypoint está.

Definir preferência de parada

Em alguns lugares, não é possível que os motoristas parem com segurança (por exemplo, áreas elevadas, balsas, locais subterrâneos e outras áreas de acesso limitado). O recurso Parada realoca o waypoint para um lugar próximo, caso o local não seja adequado para que um veículo faça uma parada. Quando você define vehicleStopover como YES, o waypoint é automaticamente realocado quando o trajeto é calculado, se um local alternativo está disponível.

Como funciona

Você define a preferência de uma parada ao criar o waypoint para essa parada. Para fazer isso, defina a preferência para uma parada em um GMSNavigationMutableWaypoint, conforme mostrado no exemplo a seguir:

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){...}];