Ajustar preferências de roteamento

Os cálculos de rota (incluindo o recálculo) retornam o trajeto que leva menos tempo para navegar como a melhor rota padrão. Mas você pode mudar a estratégia de roteamento para que a alternativa de rota mais curta seja retornada.

O termo mais curto significa o trajeto mais curto entre os trajetos ideais com base no nosso modelo de custo padrão. A rota mais curta pode não ser a absolutamente mais curta, 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 trajeto for de 15 km, mas levar apenas 20 minutos, a segunda opção é ideal, porque gastar 30 minutos para reduzir 5 km 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, limpe os destinos e redefina-os com a nova estratégia.

Como receber detalhes do trajeto

Para determinar qual estratégia de rota é a melhor opção para um determinado ponto de parada, chame getRouteInfoForDestination() para receber detalhes da 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 a seguir 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 routingStrategy ao chamar setDestinations().

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

Valor de enumeraçãoDescrição
GMSNavigationRoutingStrategyDefaultBest Classifica rotas pelo modelo de custo padrão do SDK Navigation. Essa é a estratégia de roteamento padrão.
GMSNavigationRoutingStrategyShorter Classifica os trajetos por distância. A rota de classificação mais alta é a mais curta entre as 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 Navigation para iOS exclui rotas que incluem balsas. Se você preferir incluir opções de balsa nos trajetos, ajuste essa preferência de roteamento para mostrar os trechos de balsa da viagem definindo avoidsFerries como false.

Exemplo

Swift

self.mapView.navigator?.avoidsFerries = false

Objective-C

self.mapView.navigator.avoidsFerries = NO

O formato da frase de destaque do trajeto

Na estratégia de roteamento de trajeto mais curto, os indicadores ao longo do caminho mostram detalhes da distância. Mas você pode usar os callouts de ETA.

Configurar o formato do destaque de rota

É possível mudar o formato do 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 do melhor trajeto padrão. Mostra a distância restante ao usar a estratégia de roteamento de rota mais curta
GMSNavigationRouteCalloutFormatTime Mostra o tempo restante.
GMSNavigationRouteCalloutFormatDistance Mostra a distância restante.

Exemplo

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

Swift

self.mapView.routeCalloutFormat = .time

Objective-C

_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;