Rota hesaplamaları (yeniden rota çizme dahil), gezinmek için en az zamanı alan rotayı varsayılan en iyi rota olarak döndürür. Ancak, yönlendirme stratejisini, rota alternatiflerinden daha kısa olanı döndürecek şekilde değiştirebilirsiniz.
Daha kısa terimi, varsayılan maliyet modelimize göre en uygun rota arasında en kısa olan rotayı ifade eder. Daha kısa rota, kötü bir alternatif olabileceğinden kesinlikle en kısa rota olmayabilir. Örneğin, en kısa rota 10 km ve 50 dakika sürüyorsa, 15 km'lik başka bir rota ise yalnızca 20 dakika sürüyorsa ikinci seçenek en uygun olanıdır. Çünkü 5 km daha az yol gitmek için 30 dakika daha fazla zaman harcamak iyi bir tercih değildir.
Bir gezi için yönlendirme stratejisini ayarladığınızda, gezi tamamlanana kadar bu strateji değişmez. Mevcut bir gezi için yönlendirme stratejisini değiştirmek istiyorsanız hedefleri temizlemeniz ve yeni yönlendirme stratejisiyle tekrar ayarlamanız gerekir.
Rota ayrıntılarını alma
Belirli bir yol noktası için hangi rota stratejisinin en uygun seçenek olduğunu belirlemek üzere, hem varsayılan en iyi rota hem de kesinlikle daha kısa olan rota için rota ayrıntılarını almak üzere getRouteInfoForDestination()
işlevini çağırın. Ayrıntılar arasında süre ve hedef ara noktasına olan mesafe yer alır.
Bu ayrıntılar, geri aramada GMSNavigationRouteInfo
öğesinden alınır.
Ö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 ve setDestinations()
çağrılırken routingStrategy
'i ayarlayarak yapılandırabilirsiniz.
routingStrategy
aşağıdaki numaralandırma değerlerinden birini alır:
Numaralandırma Değeri | Açıklama |
---|---|
GMSNavigationRoutingStrategyDefaultBest | Rotaları, Navigasyon SDK'sının varsayılan maliyet modeline göre sıralar. Bu, varsayılan yönlendirme stratejisidir. |
GMSNavigationRoutingStrategyShorter | Rotaları mesafeye göre sıralar. En yüksek sıralamaya sahip rota, döndürülen rotalar 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, yolculuğu feribot segmentlerine gösterecek şekilde düzenleyebilirsiniz.
Ö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, rota üzerindeki açıklama metinlerinde mesafe ayrıntıları gösterilir. Ancak bunun yerine tahmini varış zamanı açıklama metinlerini kullanabilirsiniz.
Rota açıklama metni biçimini yapılandırma
routeCalloutFormat
değerini GMSMapView
olarak belirleyerek rota açıklama metni biçimini değiştirebilirsiniz. routeCalloutFormat
aşağıdaki numaralandırma değerlerinden birini alır:
Numaralandırma Değeri | Açıklama |
---|---|
GMSNavigationRouteCalloutFormatDefault | Varsayılan en iyi rota yönlendirme stratejisi kullanılırken kalan süreyi gösterir. Daha kısa rota yönlendirme stratejisi kullanılırken 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;