Os cálculos de rota (incluindo a mudança de rota) retornam a rota que leva o menor tempo para navegar como a melhor rota 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 melhor escolha 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 trajeto 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
recebe um dos seguintes valores de enumeração:
Valor de enumeração | Descrição |
---|---|
GMSNavigationRoutingStrategyDefaultBest | Classifica 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 abaixo 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 de navegação para iOS exclui rotas que incluem balsas. Se você preferir incluir opções de balsa como parte das suas rotas, ajuste essa preferência de roteamento para expor a viagem aos segmentos de balsa definindo avoidsFerries
como false
.
Exemplo
Swift
self.mapView.navigator?.avoidsFerries = false
Objective-C
self.mapView.navigator.avoidsFerries = NO
Formato da frase de destaque da rota
Com a estratégia de roteamento de rota mais curta, os destaques ao longo da rota mostram detalhes de distância. Mas você pode usar as chamadas de tempo estimado.
Como configurar o formato da chamada de atenção da rota
É possível mudar o formato do destaque de 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 de chamada de atenção do trajeto.
Swift
self.mapView.routeCalloutFormat = .time
Objective-C
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;