Bazen, uygulamanızın kullanıcılara sunduğu rotayı planlamak isteyebilirsiniz. Routes API, Routes Preferred API veya Route Optimization API'den alınan bir rota jetonu kullanmak, planladığınız rota için iki şeyi belirtmenize yardımcı olabilir:
Rota için bir ç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 düşürmek isteyebilir.
Hedefe ulaşma süresini en aza indirme: Bir servis dağıtım işlemi, operatörlerin bir iş isteğine ulaşma süresini en aza indirmek isteyebilir.
Maliyetleri düşürme ve güvenliği artırma: Bir araç paylaşma işletmesi, kullanıcılar için daha düşük maliyetli ve güvenlik nedeniyle belirli bölgelerden kaçınan bir rota bulmak isteyebilir.
Rota jetonu kullanarak rota planlama hakkında daha fazla bilgi için Routes API'deki Rota jetonu iste ve Route Optimization API'deki Geçiş poli çizgileri ve rota jetonları başlıklı makaleleri inceleyin.
Rota hedefleri için rota jetonu kullanma
Routes API, Routes Preferred API veya Route Optimization API'den alınan bir rota jetonuyla, sağlanan rota üzerinde daha fazla kontrole sahip olursunuz:
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. Ardından, Navigasyon SDK'sına iletirken kullanmak istediğiniz rotanın jetonunu seçebilirsiniz.
ETA 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 ile gerçek rota maliyeti arasındaki farkı azaltır.
Çevre dostu rota bulma veya en kısa rota gibi daha gelişmiş rota hedefleri belirtin.
Rota jetonlarının işleyiş şekli
Rota hedeflerini kullanarak rota planlamak için Routes API, Routes Preferred API veya Route Optimization API'yi kullanabilirsiniz. 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:
Rotalar API'si, Rotalar Tercih Edilen API'si veya Rota Optimizasyonu API'si, rota çoklu çizgisini ve rota hedeflerini içeren şifrelenmiş bir rota jetonu döndürür.
Rota jetonunu Navigation SDK'sına 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 planlanan 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. Planladığınız rota ile rehberli navigasyon tarafından sağlanan rota arasında yol koşullarındaki, başlangıç konumundaki veya planlanan rotayı oluşturduktan sonra değişen diğer parametrelerdeki farklılıklar nedeniyle farklılık görebilirsiniz. Bu fark, mesafe ve tahmini varış zamanı gibi önemli seyahat özelliklerinin yanı sıra planladığınız ve gerçek hedefleriniz arasında uyuşmazlığa neden olabilir.
Rota jetonu kullanarak rota planlama
Bir rota jetonu oluşturup ardından aşağıdaki adımlarda açıklandığı gibi Navigasyon SDK'sına ileterek rota planlayabilirsiniz:
1. adım: Rotalar API'sini, Rotalar Tercih Edilen API'sini veya Rota Optimizasyonu API'sini kullanarak 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.Route Optimization API:
optimizeTours
veyabatchOptimizeTours
. Route Optimization API'de rota jetonu isteme hakkında daha fazla bilgi için Geçiş Poli çizgileri ve Rota Jetonları başlıklı makaleyi inceleyin.
Rota jetonu kullanma şartlarını karşılamak için Routes API veya Routes Preferred API isteğinizi oluşturun:
travel_mode
öğesiniDRIVING
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 oluştururken kullandığınız hedef yol işaretlerini belirterek
Navigator.setDestinations
yöntemini kullanarak rota jetonunu Navigasyon SDK'sına iletin: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. Aracın konumundan belirli bir hedefe giden bir rota bulursaRouteStatus.OK
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
Navigasyon 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. Planlanmış bir rotanın neden tam olarak takip edilemeyebileceğine bakın.
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.