Rota hesaplamaları (yeniden rota belirleme dahil), varsayılan en iyi rota olarak gezinmek için en az zamanı alan rotayı döndürür. Ancak, yönlendirme stratejisini, rota alternatiflerinden daha kısa olanı döndürülecek şekilde değiştirebilirsiniz.
Daha kısa terimi, varsayılan maliyet modelimize göre optimum rota arasındaki en kısa rota anlamına gelir. mutlak en kısa rota, kısa rota olmayabilir çünkü bu seçenek zayıf bir alternatif olabilir. Örneğin, en kısa rota 10 km ve gitmek 50 dakika sürerken başka bir rota 15 km sürüyorsa ama rotayı izlemek sadece 20 dakika sürüyorsa beş kilometreyi azaltmak için 30 dakika harcamak iyi bir denge olmadığı için ikinci tercih tercih edilir.
Bir gezi için rota stratejisi belirledikten sonra, yolculuk tamamlanana kadar bu strateji değişmez. Mevcut bir seyahatin rota stratejisini değiştirmek için varış noktalarını temizlemeniz ve yeni rota stratejisiyle tekrar sıfırlamanız gerekir.
Rota ayrıntıları alınıyor
Belirli bir ara nokta için en uygun rota stratejisinin hangisi olduğunu belirlemek amacıyla, hem varsayılan en iyi rota hem de daha kısa rota için rota ayrıntılarını almak amacıyla getRouteInfoForDestination()
numaralı telefonu arayın. Ayrıntılar arasında süre ve bir hedef ara noktaya olan mesafe yer alır.
Bu ayrıntılar, geri aramada GMSNavigationRouteInfo
kaynağından alınmıştı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
GMSNavigationRoutingOptions
kullanarak ve setDestinations()
çağırırken routingStrategy
ayarlayarak yönlendirme stratejisini yapılandırabilirsiniz.
routingStrategy
şu numaralandırma değerlerinden birini alır:
Sıralama Değeri | Açıklama |
---|---|
GMSNavigationRoutingStrategyDefaultBest | Rotaları Navigasyon SDK'sı 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ıralamalı rota, döndürülen rotalar arasında en kısa olandı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 Gezinme SDK'sı varsayılan olarak feribot içeren rotaları hariç tutar. Rotalarınıza feribot seçeneklerini dahil etmeyi tercih ederseniz avoidsFerries
ayarını false
olarak ayarlayıp bu rota tercihini geziyi feribot segmentlerine 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 stratejisinin altında, rota boyunca yer alan açıklama metinleri mesafe ayrıntılarını gösterir. Bunun yerine GMR açıklama metinlerini kullanabilirsiniz.
Rota açıklama metni biçimini yapılandırma
GMSMapView
ürününde routeCalloutFormat
değerini ayarlayarak rota açıklama metni biçimini değiştirebilirsiniz. routeCalloutFormat
, aşağıdaki numaralandırma değerlerinden birini alır:
Sıralama 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örüntüler |
GMSNavigationRouteCalloutFormatTime | Kalan süreyi gösterir. |
GMSNavigationRouteCalloutFormatDistance | Kalan mesafeyi gösterir. |
Örnek
Aşağıdaki kod örneğinde, rota çağrısı biçiminin nasıl yapılandırılacağı gösterilmektedir.
Swift
self.mapView.routeCalloutFormat = .time
Objective-C
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;