Bazen uygulamanızın kullanıcılara sağladığı rotayı planlamak isteyebilirsiniz. Routes API, Routes Preferred API veya Route Optimization API'den bir rota jetonu kullanmak, planladığınız rota için iki şeyi belirtmenize yardımcı olabilir:
Rota için çoklu çizgi
Rota hedefleriniz
Örneğin, kullanabileceğiniz yönlendirme hedeflerine dair bazı örnekler aşağıda verilmiştir:
Teslimat süresini en aza indirme: Yemek teslimatı yapan bir işletme, yemekleri teslim etmenin süresini en aza indirmek isteyebilir.
Seyahat süresini veya yakıt tüketimini en aza indirme: Bir lojistik işletmesi, sürücülerinin verimliliğini artırmak ve yakıt maliyetlerini azaltmak istiyor.
Hedefe ulaşma süresini en aza indirme: Bir hizmet dağıtım işlemi, operatörlerin iş isteğinde bulunması için gereken süreyi en aza indirmenize yardımcı olur.
Maliyetleri düşürün ve güvenliği artırın: Araç paylaşımı yapan bir işletme yolcular için daha düşük maliyetli ve belirli güvenlik alanlarından kaçınan bir rota bulmak neden.
Rota jetonu kullanarak rota planlama hakkında daha fazla bilgi için Routes API'deki Rota jetonu isteme ve Route Optimization API'deki Geçiş poli çizgileri ve rota jetonları başlıklı makaleleri inceleyin.
Rota hedefleri için neden rota jetonu kullanmalısınız?
Routes API'den alınan rota jetonuyla Routes Preferred API veya Route Optimization API'si varsa sağlanan rota üzerinde daha fazla denetime sahip olmak:
Mümkün olduğunda Navigasyon SDK'sının kullanması için rotaları önceden planlayın.
Navigasyon SDK'sının kullanacağı en iyi rotayı seçin. Routes API'de rota oluştururken rota jetonları isterseniz oluşturulan her rota için bir rota jetonu alırsınız. Daha sonra belirtmek için kullanmak istediğiniz rotanın Gezinme SDK'sı.
Varış tahmini ve mesafe tahminleri dahil olmak üzere fiyatı önceden tahmin edin. Gerçek maliyet ve süre değişiklik gösterse de bu tahmin beklenen ve gerçekleşen rota maliyeti arasındaki boşluğu fark eder.
Eko rota oluşturma veya rota izleme gibi daha gelişmiş rota hedefleri belirtebilirsiniz en kısa rotadır.
Rota jetonlarının işleyiş şekli
Routes API, Routes Preferred API veya Rota hedeflerini kullanarak rota planlamak için Optimization API'sini yönlendirin. Bu API'lerden herhangi birinden döndürülen bir rota jetonunu Navigasyon SDK'sına ileterek aracınızın rotasını belirlemesine yardımcı olabilirsiniz.
Rota jetonu isteğinde bulunduğunuzda ve bu jetonu kullandığınızda şunlar gerçekleşir:
Routes API, Routes Preferred API veya Route Optimization API, aşağıdaki koşulları karşılayan şifrelenmiş rota jetonu döndürür: rota çoklu çizgisini ve rota hedeflerini içerir.
Rota jetonunu Navigation SDK'ya iletirsiniz.
Navigasyon SDK'sı rotayı alır veya değişen koşullar nedeniyle rota kullanılamıyorsa en iyi eşleşen rotayı alır.
Rota üzerinde sürüş yaparken trafik veya diğer yol koşulları değişirse ya da bir araç planlanan rotadan saparsa değiştirilen rotalar, jetondaki rota hedeflerine göre en iyi rotayla eşleşmeye sürekli olarak çalışır.
Bu işlem, gerçek rotanın planladığınız rotaya ne kadar yakın olduğunu en üst düzeye çıkarır.
Planlanan rota neden tam olarak takip edilemeyebilir?
Planladığınız rotayı ve rota hedeflerini, uyulması gereken kurallar olarak düşünün: Bunlar zorunlu değildir. Planlanan rotanızı oluşturduğunuzdan bu yana yol koşullarındaki, başlangıç konumundaki veya diğer parametrelerdeki farklılıklar nedeniyle planlanan rotanız ile rehberli navigasyon tarafından sağlanan rota arasında fark görebilirsiniz. Bu fark, mesafe ve tahmini varış zamanı gibi önemli seyahat özellikleriyle ilgili planladığınız ve gerçek hedefleriniz arasında uyuşmazlığa neden olabilir.
Rota jetonu kullanarak rota planlama
Bir rota jetonu oluşturup bu jetonu Gezinme SDK'sı, aşağıdaki adımlarda açıklanmıştır:
1. adım: Routes API, Routes Preferred API veya Route Optimization API'sini kullanarak bir rota jetonu oluşturun
Aşağıdaki yöntemlerden birini kullanarak rota jetonu isteyin:
Routes API:
computeRoutes
. Routes API'de rota jetonu isteme hakkında daha fazla bilgi için Rota hesaplama ve Rota jetonu isteme başlıklı makaleleri inceleyin.Routes Preferred API:
computeCustomRoutes
. Routes Preferred API'de rota jetonu isteme hakkında daha fazla bilgi için Rota planlama başlıklı makaleyi inceleyin.Rota Optimizasyonu API'si:
optimizeTours
veyabatchOptimizeTours
. Rota isteğinde bulunma hakkında daha fazla bilgi için jetonu hakkında daha fazla bilgi için Geçiş Çoklu Çizgileri ve Rota Jetonlar.
Routes API veya Routes Preferred API'nizi ayarlayın isteyebilirsiniz.
travel_mode
değeriniDRIVING
veyaTWO_WHEELER
olarak ayarlayınrouting_preference
öğesiniTRAFFIC_AWARE
veyaTRAFFIC_AWARE_OPTIMAL
olarak ayarlayınVia
yol işaretlerini KULLANMAYIN
2. Adım: Rota jetonunu Navigasyon SDK'sına iletin
Rota jetonunu depolama: Gezinme SDK'sında, rota jetonunu depolamak için bir dize oluşturun. Örneğin:
String routeToken = "route token returned by Routes API";
Döndürülen rota jetonu örneği:
{ // Other fields "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g", }
Rota jetonunu Aynı hedefi belirten
Navigator.setDestinations
yöntemi rota jetonunu oluştururken kullandığınız ara noktalar:setDestinations(List
destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions); Örneğin:
CustomRoutesOptions customRoutesOptions = CustomRoutesOptions.builder() .setRouteToken(routeToken) .setTravelMode(TravelMode.DRIVING) .build();
Navigator.setDestinations
yöntemi, isteğin durumunu döndürür. Eğer
aracın konumundan belirtilen hedefe bir rota bulursa
RouteStatus.OK
sonucunu döndürür.
Bu yöntem hakkında daha fazla bilgi için Navigator.setDestinations
sayfasına bakın.
Örnek
Aşağıdaki kod örneğinde, rota jetonu kullanılarak planlanmış bir rotanın nasıl belirtileceği gösterilmektedir.
ArrayList <Waypoint> destinations = Lists.newArrayList();
Waypoint waypoint1 =
Waypoint.builder()
.setLatLng(10, 20)
.setTitle("title")
.setVehicleStopover(true)
.build();
destinations.add(waypoint1);
Waypoint waypoint2 =
Waypoint.builder()
.setPlaceId("ChIJYV-J-ziuEmsRIMyoFaMedU4")
.setTitle("title")
.setVehicleStopover(true)
.build()
destinations.add(waypoint2);
String routeToken = "route token returned by Routes API";
CustomRoutesOptions customRoutesOptions =
CustomRoutesOptions.builder()
.setRouteToken(routeToken)
.setTravelMode(TravelMode.DRIVING)
.build();
// Existing flow to get a Navigator.
NavigationApi.getNavigator(...);
// Existing flow for requesting routes.
ListenableResultFuture<RouteStatus> routeStatusFuture =
navigator.setDestinations(destinations, customRoutesOptions);
// Or with display options.
DisplayOptions displayOptions = new DisplayOptions();
ListenableResultFuture<RouteStatus> routeStatusFuture =
navigator.setDestinations(destinations, customRoutesOptions, displayOptions);
Rota jetonları ile Navigation SDK'sı arasındaki etkileşim
Navigation SDK'sı tarafından oluşturulan rota ile rota jetonundaki planlanmış rotanın etkileşimi aşağıdaki gibidir:
Daha önce ayarlanmış tüm hedefleri geçersiz kılar.
Aracın başlangıç konumunu kullanır.
Yol ve trafik koşullarına göre ayarlanır. Görüntüleyin Planlanan bir rotanın tam olarak izlenmemesinin olası nedenleri
Aşağıdaki yönlendirmeyle ilgili seçenekler gereksiz olduğu için yoksayılır:
avoidsHighways
avoidsTolls
avoidsFerries
licensePlateRestriction
Takipler:
Yol kenarına tercihi gibi yol noktasıyla ilgili seçenekler.
Rota hedefleri. Navigasyon SDK'sının döndürülen rotayı ayarlaması gerekirse rota jetonunu isterken belirttiğiniz rota hedeflerini kullanır. Bu nedenle, Routes API'de belirttiğiniz yol noktasıyla ilgili seçenekleri kullanmanız gerekir.