Ajustar preferências de roteamento

Os cálculos de trajeto (incluindo a mudança de trajeto) retornam o trajeto que leva o menor tempo para navegar como o melhor trajeto padrão. No entanto, é possível mudar a estratégia de roteamento para que a alternativa mais curta seja retornada.

O termo menor significa a rota mais curta entre as rotas ideais com base no nosso modelo de custo padrão. A rota mais curta pode não ser a absoluta, já que essa opção pode ser uma alternativa ruim. Por exemplo, se o trajeto mais curto for de 10 km e levar 50 minutos para ser percorrido e outro tiver 15 km, mas levar apenas 20 minutos, a segunda opção é ideal, porque gastar 30 minutos para reduzir cinco quilômetros não é uma boa troca.

Depois de definir a estratégia de roteamento para uma viagem, ela não vai mudar até que a viagem seja concluída. Para mudar a estratégia de roteamento de uma viagem, é necessário limpar os destinos e redefini-los novamente com a nova estratégia de roteamento.

Como conferir detalhes da rota

Para determinar qual estratégia de rota é a escolha ideal para um determinado ponto de passagem, chame getRouteInfoForDestination() para conferir os detalhes da rota da melhor rota padrão e da rota mais curta absoluta. Os detalhes incluem a duração e a distância até um waypoint de destino.

Esses detalhes vêm de GMSNavigationRouteInfo no callback.

Exemplo

O exemplo de código abaixo demonstra como receber detalhes de rota para cada uma das duas estratégias de roteamento.

Swift

let routingOptions = GMSNavigationRoutingOptions()
navigator?.getRouteInfoForDestination(destination,
                                      routingOptions: routingOptions) { routeInfo in
  ...
}

Objective-C

GMSNavigationRoutingOptions *routingOptions =
    [[GMSNavigationRoutingOptions alloc] init];
[navigator getRouteInfoForDestination:destination
                   withRoutingOptions:routingOptions
                             callback:^(GMSNavigationRouteInfo *routeInfo){...}];

Como definir a estratégia de roteamento

É possível configurar a estratégia de roteamento usando GMSNavigationRoutingOptions e definindo o routingStrategy ao chamar setDestinations().

routingStrategy usa um dos seguintes valores de enumeração:

Valor de enumeraçãoDescrição
GMSNavigationRoutingStrategyDefaultBest Ordena as rotas pelo modelo de custo padrão do SDK de navegação. Essa é a estratégia de roteamento padrão.
GMSNavigationRoutingStrategyShorter Ordena as rotas por distância. A rota com a classificação mais alta é a mais curta das retornadas.

Exemplo

O exemplo de código a seguir demonstra como definir a estratégia de roteamento de rota mais curta.

Swift

let routingOptions = GMSNavigationRoutingOptions(routingStrategy: .shorter)
navigator?.setDestinations(destinations,
                           routingOptions: routingOptions) { routeStatus in
  ...
}

Objective-C

GMSNavigationRoutingOptions *routingOptions = [[GMSNavigationRoutingOptions alloc] initWithRoutingStrategy:GMSNavigationRoutingStrategyShorter];
[navigator setDestinations:destinations
            routingOptions:routingOptions
                  callback:^(GMSRouteStatus routeStatus){...}];

Rotas que incluem balsas

Por padrão, o SDK do Navigation para iOS exclui rotas que incluem balsas. Se você preferir incluir opções de balsa como parte das rotas, ajuste essa preferência de roteamento para mostrar a viagem aos trechos de balsa definindo avoidsFerries como false.

Exemplo

Swift

self.mapView.navigator?.avoidsFerries = false

Objective-C

self.mapView.navigator.avoidsFerries = NO

O formato da chamada de atenção do trajeto

Com a estratégia de roteamento de rota mais curta, os destaques ao longo do trajeto mostram detalhes de distância. Mas você pode usar as chamadas de ETA.

Como configurar o formato da chamada de atenção da rota

É possível mudar o formato da frase de destaque da rota definindo routeCalloutFormat em GMSMapView. routeCalloutFormat usa um dos seguintes valores de enumeração:

Valor de enumeraçãoDescrição
GMSNavigationRouteCalloutFormatDefault Mostra o tempo restante ao usar a estratégia de roteamento de melhor rota padrão. Mostra a distância restante ao usar a estratégia de roteamento de rota mais curta
GMSNavigationRouteCalloutFormatTime Mostra o tempo restante.
GMSNavigationRouteCalloutFormatDistance DMostra a distância restante.

Exemplo

O exemplo de código a seguir demonstra como configurar o formato do destaque de rota.

Swift

self.mapView.routeCalloutFormat = .time

Objective-C

_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;