Obliczenia trasy (w tym wyznaczanie nowej trasy) zwracają trasę, która zajmuje najmniej czasu, jako domyślną najlepszą trasę. Możesz jednak zmienić strategię wyznaczania trasy, aby zamiast niej zwracana była krótsza z alternatywnych tras.
Określenie 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ć absolutnie najkrótszą trasą, ponieważ ta opcja może być słabą alternatywą. Jeśli na przykład absolutnie najkrótsza trasa ma 10 km i zajmuje 50 minut, a inna trasa ma 15 km, ale 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.
Gdy ustawisz strategię wyznaczania trasy na potrzeby podróży, nie zmieni się ona do czasu jej zakończenia. Aby zmienić strategię wyznaczania trasy w przypadku istniejącej podróży, musisz usunąć miejsca docelowe i ponownie je ustawić, korzystając z nowej strategii wyznaczania trasy.
Pobieranie szczegółów trasy
Aby określić, która strategia wyznaczania trasy jest optymalna w przypadku danego punktu na trasie, wywołaj funkcję getRouteInfoForDestination(), aby uzyskać szczegóły trasy zarówno w przypadku domyślnej najlepszej trasy, jak i absolutnie najkrótszej trasy. Szczegóły obejmują czas trwania i odległość do punktu na trasie.
Te szczegóły pochodzą z
GMSNavigationRouteInfo
w wywołaniu zwrotnym.
Przykład
Poniższy przykład kodu 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){...}];
Ustawianie strategii wyznaczania trasy
Strategię wyznaczania trasy możesz skonfigurować za pomocą GMSNavigationRoutingOptions i ustawiając routingStrategy podczas wywoływania setDestinations().
routingStrategy przyjmuje jedną z tych wartości wyliczenia:
| Wartość wyliczenia | Opis |
|---|---|
| GMSNavigationRoutingStrategyDefaultBest | Klasyfikuje trasy według domyślnego modelu kosztów pakietu Navigation SDK. Jest to domyślna strategia wyznaczania trasy. |
| GMSNavigationRoutingStrategyShorter | Klasyfikuje trasy według odległości. Najwyżej oceniana trasa jest najkrótsza spośród tych zwróconych. |
Przykład
Poniższy przykład kodu pokazuje, jak ustawić strategię wyznaczania trasy na krótszą trasę.
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 obejmujące przeprawy promowe. Jeśli chcesz uwzględniać opcje przepraw promowych w swoich trasach, możesz dostosować tę preferencję wyznaczania trasy, aby uwzględnić odcinki podróży promem, 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 trasy na krótszą trasę objaśnienia na trasie wyświetlają szczegóły odległości. Możesz jednak używać objaśnień z szacowanym czasem dotarcia.
Konfigurowanie formatu objaśnienia trasy
Format objaśnienia trasy możesz zmienić, ustawiając routeCalloutFormat w GMSMapView. routeCalloutFormat przyjmuje jedną z tych wartości wyliczenia:
| Wartość wyliczenia | Opis |
|---|---|
| GMSNavigationRouteCalloutFormatDefault | Wyświetla pozostały czas w przypadku korzystania z domyślnej strategii wyznaczania trasy na najlepszą trasę. Wyświetla pozostałą odległość w przypadku korzystania ze strategii wyznaczania trasy na krótszą trasę . |
| GMSNavigationRouteCalloutFormatTime | Wyświetla pozostały czas. |
| GMSNavigationRouteCalloutFormatDistance | Wyświetla pozostałą odległość. |
Przykład
Poniższy przykład kodu pokazuje, jak skonfigurować format objaśnienia trasy.
Swift
self.mapView.routeCalloutFormat = .time
Objective-C
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;