Obliczenia trasy (w tym przekierowania) zwracają jako domyślną najlepszą trasę tę, która zajmuje najmniej czasu. Możesz jednak zmienić strategię routingu, aby zamiast tego zwracana była krótsza z możliwych tras.
Termin krótszy 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ć najkrótszą, ponieważ może to być zła alternatywa. Jeśli np. najkrótsza trasa ma 10 km i trwa 50 minut, a inna trasa ma 15 km, ale zajmuje tylko 20 minut, to druga opcja jest optymalna, ponieważ poświęcenie 30 minut na skrócenie trasy o 5 km nie jest dobrym rozwiązaniem.
Gdy ustawisz strategię wyznaczania trasy dla podróży, nie będzie ona się zmieniać, dopóki podróż się nie zakończy. Aby zmienić strategię wyznaczania trasy dla istniejącej podróży, musisz wyczyścić miejsca docelowe i ustawić je ponownie z nową strategią.
Pobieranie szczegółów trasy
Aby określić, która strategia trasy jest optymalnym wyborem w przypadku danego punktu orientacyjnego, wywołaj funkcję getRouteInfoForDestination()
, aby uzyskać szczegóły trasy domyślnej, najlepszej trasy i najkrótszej trasy. Szczegóły obejmują czas trwania i odległość do punktu docelowego.
Te informacje pochodzą z GMSNavigationRouteInfo
w ramach wywołania zwrotnego.
Przykład
Poniższy przykładowy kod pokazuje, jak uzyskać szczegóły trasy dla każdej z 2 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 kierowania
Strategię kierowania możesz skonfigurować za pomocą funkcji GMSNavigationRoutingOptions
, ustawiając wartość routingStrategy
podczas wywołania funkcji setDestinations()
.
routingStrategy
przyjmuje jedną z tych wartości:
Wartość wyliczenia | Opis |
---|---|
GMSNavigationRoutingStrategyDefaultBest | Nadaje priorytety trasom na podstawie domyślnego modelu kosztów w pakiecie Navigation SDK. Jest to domyślna strategia kierowania. |
GMSNavigationRoutingStrategyShorter | Ustawia trasy według odległości. Trasa o najwyższym priorytecie jest najkrótsza spośród wszystkich zwróconych tras. |
Przykład
Poniższy przykładowy kod pokazuje, jak ustawić strategię wyznaczania trasy krótszej.
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 z przeprawą promową
Domyślnie pakiet SDK do nawigacji na iOS wyklucza trasy, które obejmują przeprawy promowe. Jeśli chcesz uwzględniać opcje promów w ramach swoich tras, możesz dostosować to ustawienie trasy, aby uwzględnić segmenty promów. W tym celu ustaw wartość avoidsFerries
na false
.
Przykład
Swift
self.mapView.navigator?.avoidsFerries = false
Objective-C
self.mapView.navigator.avoidsFerries = NO
Format objaśnienia dotyczącego trasy
W przypadku strategii wyznaczania krótszej trasy w wyświetleniu trasy wyświetlane są informacje o odległości. Zamiast tego możesz użyć informacji o przewidywanym czasie przybycia.
Konfigurowanie formatu informacji o trasie
Format informacji o trasie możesz zmienić, ustawiając parametr routeCalloutFormat
w pliku GMSMapView
. routeCalloutFormat
przyjmuje jedną z tych wartości enumeracji:
Wartość wyliczenia | Opis |
---|---|
GMSNavigationRouteCalloutFormatDefault | Wyświetla czas pozostały do przejazdu przy użyciu domyślnej strategii wyznaczania trasy. Wyświetla pozostały dystans przy użyciu strategii wyznaczania trasy krótszą drogą |
GMSNavigationRouteCalloutFormatTime | Wyświetla pozostały czas. |
GMSNavigationRouteCalloutFormatDistance | Wyświetla odległość do celu. |
Przykład
Poniższy przykładowy kod pokazuje, jak skonfigurować format powiadomienia o trasie.
Swift
self.mapView.routeCalloutFormat = .time
Objective-C
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;