Obliczenia trasy (w tym zmiany trasy) zwracają trasę, która zajmuje najmniej czasu, jako domyślną najlepszą trasę. Możesz jednak zmienić strategię wyznaczania trasy, aby zwracana była krótsza z alternatywnych tras.
Termin krótsza oznacza trasę, która jest najkrótsza spośród optymalnych tras na podstawie naszego domyślnego modelu kosztów. Krótsza trasa może nie być bezwzględnie najkrótszą trasą, ponieważ ta opcja może być słabą alternatywą. Jeśli na przykład najkrótsza trasa ma 10 km i jej pokonanie zajmuje 50 minut, a inna trasa ma 15 km, ale jej pokonanie zajmuje tylko 20 minut, druga opcja jest optymalna, ponieważ poświęcenie 30 minut na skrócenie trasy o 5 km nie jest dobrym rozwiązaniem.
Po ustawieniu strategii wyznaczania trasy dla przejazdu nie zmieni się ona, dopóki przejazd się nie zakończy. Aby zmienić strategię wyznaczania trasy dla istniejącego przejazdu, musisz usunąć miejsca docelowe i ustawić je ponownie, używając nowej strategii wyznaczania trasy.
Pobieram szczegóły trasy
Aby określić, która strategia wyznaczania trasy jest optymalna dla danego punktu pośredniego, wywołaj getRouteInfoForDestination(), aby uzyskać szczegóły trasy zarówno dla domyślnej najlepszej trasy, jak i dla bezwzględnie krótszej trasy. Szczegóły obejmują czas trwania i odległość do punktu docelowego.
Te informacje pochodzą z pola GMSNavigationRouteInfo w wywołaniu zwrotnym.
Przykład
Poniższy przykładowy kod pokazuje, jak uzyskać szczegóły trasy dla każdej z 2 strategii wyznaczania trasy.
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){...}];
Konfigurowanie strategii routingu
Strategię routingu możesz skonfigurować za pomocą GMSNavigationRoutingOptions i ustawiając routingStrategy podczas wywoływania setDestinations().
routingStrategy przyjmuje jedną z tych wartości typu wyliczeniowego:
| Wartość typu wyliczeniowego | Opis |
|---|---|
| GMSNavigationRoutingStrategyDefaultBest | Porządkuje trasy według domyślnego modelu kosztów pakietu Navigation SDK. Jest to domyślna strategia routingu. |
| GMSNavigationRoutingStrategyShorter | Ustawia kolejność tras według odległości. Trasa o najwyższej pozycji w rankingu jest najkrótsza z zwróconych. |
Przykład
Poniższy przykładowy kod pokazuje, jak ustawić strategię wyznaczania krótszej trasy.
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){...}];
Trasy obejmujące przeprawy promowe
Domyślnie pakiet Navigation SDK na iOS wyklucza trasy, które obejmują promy. Jeśli chcesz uwzględniać opcje promowe na trasach, możesz dostosować preferencje wyznaczania trasy, aby uwzględnić odcinki promowe, ustawiając avoidsFerries na false.
Przykład
Swift
self.mapView.navigator?.avoidsFerries = false
Objective-C
self.mapView.navigator.avoidsFerries = NO
Format objaśnienia trasy
W przypadku strategii wyznaczania krótszej trasy objaśnienia wzdłuż trasy zawierają szczegółowe informacje o odległości. Zamiast tego możesz używać objaśnień ETA.
Konfigurowanie formatu objaśnienia trasy
Format objaśnienia trasy możesz zmienić, ustawiając routeCalloutFormat w GMSMapView. routeCalloutFormat przyjmuje jedną z tych wartości typu wyliczeniowego:
| Wartość typu wyliczeniowego | Opis |
|---|---|
| GMSNavigationRouteCalloutFormatDefault | Wyświetla pozostały czas, gdy używana jest domyślna strategia wyznaczania najlepszej trasy. Wyświetla pozostałą odległość, gdy używasz strategii wyznaczania krótszej trasy. |
| GMSNavigationRouteCalloutFormatTime | Wyświetla pozostały czas. |
| GMSNavigationRouteCalloutFormatDistance | Wyświetla pozostałą odległość. |
Przykład
Poniższy przykładowy kod pokazuje, jak skonfigurować format objaśnienia trasy.
Swift
self.mapView.routeCalloutFormat = .time
Objective-C
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;