Os cálculos de rota (incluindo redirecionamento) retornam a rota que leva o menor tempo para navegar como a melhor rota padrão. No entanto, é possível alterar a estratégia de roteamento para retornar a alternativa mais curta.
O termo mais curto significa a rota mais curta entre as ideais com base no nosso modelo de custo padrão. O trajeto mais curto pode não ser absoluto, mais curto, porque essa opção pode ser uma alternativa ruim. Por exemplo, se a rota mais curta absoluta for de 10 km e levará 50 minutos para navegar, e outra rota tiver 15 km, mas levar apenas 20 minutos para navegar, a segunda opção será ideal, porque passar 30 minutos para reduzir 5 km não é uma boa compensação.
Depois de definir a estratégia de trajeto de uma viagem, ela não será alterada até que a viagem seja concluída. Para alterar a estratégia de trajeto de uma viagem, limpe os destinos e os redefina novamente com a nova estratégia.
Como obter detalhes do trajeto
Para determinar qual estratégia de trajeto é a melhor para um determinado waypoint,
chame getRouteInfoForDestination()
para consultar detalhes do melhor trajeto padrão
e do mais curto. Os detalhes incluem a duração e a distância até um waypoint de destino.
Esses detalhes são provenientes de GMSNavigationRouteInfo
no callback.
Exemplo
O exemplo de código a seguir demonstra como receber detalhes da 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
Para configurar a estratégia de roteamento, use GMSNavigationRoutingOptions
e defina routingStrategy
ao chamar setDestinations()
.
routingStrategy
usa 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 do Navigation. Essa é a estratégia de roteamento padrão. |
GMSNavigationRoutingStrategyShorter | Classifica trajetos por distância. O trajeto com a classificação mais alta é o mais curto entre os retornados. |
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){...}];
Trajetos que incluem balsas
Por padrão, o SDK do Navigation para iOS exclui trajetos que incluem balsas. Se você quiser incluir opções de balsa como parte dos seus trajetos, ajuste essa preferência 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
O formato da frase de destaque da rota
Na estratégia de trajeto mais curto, as frases de destaque ao longo do trajeto exibem detalhes da distância. No entanto, você pode usar as frases de destaque dos ETAs.
Como configurar o formato da frase de destaque de rota
Você pode alterar o formato da frase de 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 melhor estratégia de roteamento padrão. Mostra a distância restante ao usar a estratégia de trajetos de trajetos mais curtos |
GMSNavigationRouteCalloutFormatTime | Mostra o tempo restante. |
GMSNavigationRouteCalloutFormatDistance | DExibe a distância restante. |
Exemplo
O exemplo de código a seguir demonstra como configurar o formato da frase de destaque de rota.
Swift
self.mapView.routeCalloutFormat = .time
Objective-C
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;