Os cálculos de trajeto (incluindo a mudança de rota) 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 para a melhor rota padrão e a 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ção | Descriçã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 expor 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
Na 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ção | Descriçã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 | Mostra 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;