Rota hesaplamaları (yeniden rota oluşturma dahil), varsayılan en iyi rota olarak gitmenin en az süre aldığı rotayı döndürür. Ancak, rota alternatifleri arasından en kısa olanın döndürülmesi için yönlendirme stratejisini değiştirebilirsiniz.
Daha kısa terimi, varsayılan maliyet modelimize göre en uygun rota arasında en kısa olan rota anlamına gelir. Daha kısa rota, kötü bir alternatif olabileceğinden mutlak en kısa rota olmayabilir. Örneğin, en kısa rota 10 km uzunluğundaysa ve 50 dakika sürüyorsa, 15 km uzunluğunda olan ve 20 dakika süren rota daha iyi bir seçenektir. Çünkü 5 km kısaltmak için 30 dakika harcamak iyi bir takas değildir.
Bir gezi için rota stratejisini ayarladıktan sonra, gezi tamamlanana kadar bu strateji değişmez. Mevcut bir seyahatin rota stratejisini değiştirmek için hedefleri temizlemeniz ve yeni rota stratejisiyle tekrar sıfırlamanız gerekir.
Rota ayrıntılarını alma
Belirli bir yol noktası için en uygun rota stratejisinin hangisi olduğunu belirlemek üzere getRouteInfoForDestination()
işlevini çağırarak hem varsayılan en iyi rotanın hem de mutlak en kısa rotanın rota ayrıntılarını alın. Ayrıntılar arasında süre ve hedef yol noktasına olan mesafe yer alır.
Bu ayrıntılar, geri çağırma sırasında GMSNavigationRouteInfo
kaynağından gelir.
Örnek
Aşağıdaki kod örneğinde, iki yönlendirme stratejisinin her biri için rota ayrıntılarının nasıl alınacağı gösterilmektedir.
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){...}];
Yönlendirme stratejisini ayarlama
Yönlendirme stratejisini GMSNavigationRoutingOptions
kullanarak yapılandırabilir ve setDestinations()
'yi çağırırken routingStrategy
değerini ayarlayabilirsiniz.
routingStrategy
aşağıdaki listeleme değerlerinden birini alır:
Numaralandırma değeri | Açıklama |
---|---|
GMSNavigationRoutingStrategyDefaultBest | Rotaları Navigation SDK varsayılan maliyet modeline göre sıralar. Bu, varsayılan yönlendirme stratejisidir. |
GMSNavigationRoutingStrategyShorter | Rotaları mesafeye göre sıralar. En yüksek puana sahip rota, döndürülenler arasında en kısa olanıdır. |
Örnek
Aşağıdaki kod örneğinde, daha kısa rota yönlendirme stratejisinin nasıl ayarlanacağı gösterilmektedir.
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){...}];
Feribot içeren rotalar
iOS için Navigasyon SDK'sı varsayılan olarak feribot içeren rotaları hariç tutar. Rotalarınıza feribot seçeneklerini dahil etmeyi tercih ediyorsanız avoidsFerries
değerini false
olarak ayarlayarak bu rota tercihini, seyahat için feribot segmentlerini gösterecek şekilde ayarlayabilirsiniz.
Örnek
Swift
self.mapView.navigator?.avoidsFerries = false
Objective-C
self.mapView.navigator.avoidsFerries = NO
Rota açıklama metni biçimi
Daha kısa rota yönlendirme stratejisinde, rotadaki açıklama metinlerinde mesafe ayrıntıları gösterilir. Bunun yerine ETA açıklama metinlerini kullanabilirsiniz.
Rota açıklama metni biçimini yapılandırma
GMSMapView
içinde routeCalloutFormat
ayarlayarak rota açıklama metni biçimini değiştirebilirsiniz. routeCalloutFormat
, aşağıdaki listeleme değerlerinden birini alır:
Numaralandırma değeri | Açıklama |
---|---|
GMSNavigationRouteCalloutFormatDefault | Varsayılan en iyi rota yönlendirme stratejisi kullanıldığında kalan süreyi gösterir. Daha kısa rota yönlendirme stratejisi kullanıldığında kalan mesafeyi gösterir |
GMSNavigationRouteCalloutFormatTime | Kalan süreyi gösterir. |
GMSNavigationRouteCalloutFormatDistance | Kalan mesafeyi gösterir. |
Örnek
Aşağıdaki kod örneğinde, rota açıklama metni biçiminin nasıl yapılandırılacağı gösterilmektedir.
Swift
self.mapView.routeCalloutFormat = .time
Objective-C
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;