Bazen uygulamanızın kullanıcılara sunduğu rotayı planlamak isteyebilirsiniz. Rotalar API'sinden, Rotalar Tercih Edilen API'sinden veya Rota Optimizasyonu API'sinden 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ı örnekleri aşağıda bulabilirsiniz:
Teslimat süresini en aza indirme: Yemek siparişi veren bir işletme, siparişi teslim etmek için gereken süreyi 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üşürüp güvenliği artırmak: 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 isteme ve Route Optimization API'deki Geçiş poli çizgileri ve rota jetonları başlıklı makalelere bakın.
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 rotayı ö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.
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 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 aşağıdakiler 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üş sırasında 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 rotanıza ne kadar yakın olduğunu en üst düzeye çıkarır.
Planlanan rotaya tam olarak uyulmama nedenleri
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 ö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 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şareti 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", }
Navigator.setDestinations
yöntemini kullanarak rota jetonunu Navigasyon SDK'sına iletin. Bu yöntemde, rota jetonunu oluştururken kullandığınız hedef yol işaretlerini belirtin: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. Araç konumundan belirtilen hedefe giden bir rota bulursaRouteStatus.OK
döndürülü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:
Önceden ayarlanmış tüm varış noktalarını 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ği başlıklı makaleyi inceleyin.
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ı gerekiyorsa rota jetonunu talep ederken belirttiğiniz rota hedeflerini kullanır. Bu nedenle, Routes API'de belirttiğiniz yol noktasıyla ilgili seçenekleri kullanmanız gerekir.