Obliczenia trasy (z uwzględnieniem zmiany trasy) zwracają domyślną najlepszą trasę, która zajmuje najkrótszy czas nawigacji. Możesz jednak zmienić strategię wyznaczania trasy, tak aby zwracana była krótsza trasa alternatywna.
Termin krótszy oznacza trasę, która jest najkrótszą spośród optymalnej trasy w oparciu o nasz domyślny model kosztów. Krótsza trasa może nie być absolutnie najkrótszą trasą, ponieważ taka opcja może być słabą alternatywą. Jeśli np. najkrótsza trasa ma 10 km, a nawigacja zajmuje 50 minut, a inna – 15 km, ale poruszanie się zajmuje tylko 20 minut, drugi wybór jest optymalny, ponieważ poświęcenie 30 minut na zredukowanie 5 km nie jest dobrym rozwiązaniem.
Strategia wyznaczania trasy dla trasy nie zmieni się, dopóki trasa nie zostanie zakończona. Aby zmienić strategię wyznaczania trasy dla istniejącej podróży, musisz wyczyścić miejsca docelowe i zresetować je ponownie z użyciem nowej strategii.
Pobieram szczegóły trasy
Aby ustalić, która strategia jest optymalna w przypadku danego punktu na trasie, wywołaj funkcję getRouteInfoForDestination()
, by uzyskać szczegóły zarówno domyślnej, jak i najkrótszej trasy. Szczegóły obejmują czas trwania i odległość do docelowego punktu na trasie.
Te informacje pochodzą z adresu GMSNavigationRouteInfo
w wywołaniu zwrotnym.
Przykład
Poniższy przykładowy kod pokazuje, jak uzyskać szczegóły trasy dla każdej z dwóch strategii routingu.
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ć, używając funkcji GMSNavigationRoutingOptions
i ustawiając routingStrategy
podczas wywoływania funkcji setDestinations()
.
routingStrategy
przyjmuje jedną z tych wartości wyliczeniowych:
Wartość wyliczenia | Opis |
---|---|
GMSNavigationRoutingStrategyDefaultBest | Ranking tras według domyślnego modelu kosztów pakietu Navigation SDK. To jest domyślna strategia routingu. |
GMSNavigationRoutingStrategyShorter | Ranking tras według odległości. Trasa o najwyższej pozycji w rankingu to najkrótsza ze zwróconych tras. |
Przykład
Poniższy przykładowy kod pokazuje, jak ustawić krótszą strategię routingu 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 promy
Domyślnie pakiet SDK nawigacji na iOS wyklucza trasy obejmujące promy. Jeśli wolisz uwzględniać w trasach opcje promów, możesz dostosować to ustawienie routingu, aby udostępnić podróż promom. W tym celu ustaw avoidsFerries
na false
.
Przykład
Swift
self.mapView.navigator?.avoidsFerries = false
Objective-C
self.mapView.navigator.avoidsFerries = NO
Format objaśnienia trasy
W ramach strategii wyznaczania tras na krótszym czasie objaśnienia na trasie wyświetlają informacje o odległości. Możesz jednak użyć objaśnień dotyczących szacowanego czasu dotarcia na miejsce.
Konfigurowanie formatu objaśnienia trasy
Format objaśnienia trasy możesz zmienić, ustawiając routeCalloutFormat
w GMSMapView
. routeCalloutFormat
przyjmuje jedną z tych wartości wyliczeniowych:
Wartość wyliczenia | Opis |
---|---|
GMSNavigationRouteCalloutFormatDefault | Wyświetla pozostały czas, gdy używana jest domyślna strategia wyznaczania tras. Wyświetla pozostały dystans, gdy używana jest strategia wyznaczania tras na krótszej trasie |
GMSNavigationRouteCalloutFormatTime | Wyświetla pozostały czas. |
GMSNavigationRouteCalloutFormatDistance | DDisplays pokazuje pozostały dystans. |
Przykład
Poniższy przykładowy kod pokazuje, jak skonfigurować format objaśnienia trasy.
Swift
self.mapView.routeCalloutFormat = .time
Objective-C
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;