Obliczenia trasy (w tym przekierowanie) zwracają trasę, która zajmuje najmniej czasu na przejazd jako domyślną najlepszą trasę. Możesz jednak zmienić strategię routingu, aby zamiast tego zwracana była krótsza z możliwych tras.
Termin krótszy oznacza najkrótszą z optymalnych tras na podstawie naszego domyślnego modelu kosztów. Krótsza trasa może nie być absolutnie najkrótszą, ponieważ może to być zła alternatywa. Jeśli na przykład najkrótsza trasa ma długość 10 km i trwa 50 minut, a inna trasa ma długość 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 kompromisem.
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 możliwej 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ą elementu GMSNavigationRoutingOptions
, ustawiając wartość routingStrategy
podczas wywołania elementu setDestinations()
.
routingStrategy
przyjmuje jedną z tych wartości wyliczenia:
Wartość wyliczenia | Opis |
---|---|
GMSNavigationRoutingStrategyDefaultBest | Ustawia kolejność tras według domyślnego modelu kosztów w Navigation SDK. Jest to domyślna strategia routingu. |
GMSNavigationRoutingStrategyShorter | Uwzględnia odległość. Trasa o najwyższym priorytecie jest najkrótsza spośród wszystkich zwróconych. |
Przykład
Poniższy przykład kodu 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 SDK nawigacji na iOS wyklucza trasy, które obejmują przeprawy promowe. Jeśli wolisz uwzględniać opcje promów w ramach swoich tras, możesz dostosować tę preferencję wytyczania, aby uwzględnić przejazdy promem, ustawiając wartość 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 opisy na trasie wyświetlają szczegóły odległości. Możesz jednak użyć nakładek ETA.
Konfigurowanie formatu informacji o trasie
Format informacji o trasie możesz zmienić, ustawiając routeCalloutFormat
w pliku GMSMapView
. routeCalloutFormat
przyjmuje jedną z tych wartości enumeracji:
Wartość wyliczenia | Opis |
---|---|
GMSNavigationRouteCalloutFormatDefault | Wyświetla czas pozostały do dojazdu, gdy używana jest domyślna strategia wyznaczania trasy. Wyświetla odległość do pokonania przy użyciu strategii wyznaczania trasy po krótszej drodze. |
GMSNavigationRouteCalloutFormatTime | Wyświetla pozostały czas. |
GMSNavigationRouteCalloutFormatDistance | Pokazuje pozostały dystans. |
Przykład
Poniższy przykładowy kod pokazuje, jak skonfigurować format powiadomienia o trasie.
Swift
self.mapView.routeCalloutFormat = .time
Objective-C
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;