Rota planlama

Bazen uygulamanızın kullanıcılara sunduğu rotayı planlamak isteyebilirsiniz. Routes API, Routes Preferred API veya Route Optimization API'den alınan rota jetonunu kullanarak planlanan rotanız için iki şeyi belirtebilirsiniz:

  • Rota için çoklu çizgi

  • Rota hedefleriniz

Örneğin, sahip olabileceğiniz bazı rota hedefleri şunlardır:

  • Teslimat süresini en aza indirme: Yemek teslimatı yapan bir işletme, yemek teslimat 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 isteyebilir.

  • Hedefe ulaşma süresini en aza indirme: Bir hizmet sevk işlemi, operatörlerin bir iş isteğine ulaşması için gereken süreyi en aza indirmek isteyebilir.

  • Maliyetleri düşürme ve güvenliği artırma: Araç paylaşımı işletmeleri, yolcular 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 alma ve Route Optimization API'deki Geçiş çoklu çizgileri ve rota jetonları bölümlerini inceleyin.

Rota hedefleri için neden rota jetonu kullanılır?

Routes API, Routes Preferred API veya Route Optimization API'den alınan rota jetonuyla, sağlanan rota üzerinde daha fazla kontrole sahip olursunuz:

  • Navigasyon SDK'sının kullanması için önceden rota planlayın.

  • Navigation SDK'nın kullanacağı en iyi rotayı seçme Routes API'de rota oluştururken rota jetonları isterseniz oluşturulan her rota için bir rota jetonu alırsınız. Ardından, kullanmak istediğiniz rotanın jetonunu seçerek Navigation SDK'ya iletebilirsiniz.

  • TVS ve mesafe tahminleri de dahil olmak üzere fiyatı önceden tahmin edin. Gerçek maliyet ve süre farklılık gösterse de bu tahmin, beklenen ve gerçek rota maliyeti arasındaki farkı azaltır.

  • Çevre dostu rota veya en kısa rota gibi daha gelişmiş rota hedefleri belirtebilirsiniz.

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. Aracınızın rotasını belirlemek için bu API'lerden herhangi birinden döndürülen rota jetonunu Navigasyon SDK'sına iletebilirsiniz.

Rota jetonu isteyip kullandığınızda şunlar olur:

  1. Routes API, Routes Preferred API veya Route Optimization API, rota çoklu çizgisini ve rota hedeflerini içeren şifrelenmiş bir rota jetonu döndürür.

  2. Rota jetonunu Navigasyon SDK'sına iletirsiniz.

  3. Navigation SDK, daha hızlı bir rota olsa bile planladığınız rotada navigasyonu başlatır.

  4. Yolculuk sırasında trafik veya yol koşulları değişirse ya da araç planlanan rotadan çıkarsa Navigasyon SDK'sı, rota jetonunuzda ayarlanan rota hedeflerine ve rota seçeneklerine uyan yeni bir rota hesaplar.

Bu işlem, gerçek rotanın planlanan rotanıza mümkün olduğunca yakın olmasını sağlar.

Planlanan rotanın tam olarak takip edilememesinin olası nedenleri

Navigasyon, planlanan rotanızda başlar ancak aşağıdaki gibi durumlarda gerçek rota, planlanan rotadan farklı olabilir:

  • Araç, planlanan başlangıç noktasından uzakta çalıştırılıyor.
  • Yolculuk sırasında trafik veya yol koşulları değiştiğinde
  • Araç, planlanan rotadan ayrıldığında.

Bu farklılıklar, planladığınız mesafe, TVS ve diğer önemli gezi özelliklerini etkileyebilir.

Rota jetonu kullanarak rota planlama

Bir rota jetonu oluşturup bunu Navigation SDK'ya ileterek rota planlayabilirsiniz. Bunun için aşağıdaki adımları uygulayın:

1. adım: Routes API, Routes Preferred API veya Route Optimization API'yi kullanarak rota jetonu oluşturun

  1. 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 alma 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 veya batchOptimizeTours. Route Optimization API'de rota jetonu isteme hakkında daha fazla bilgi için Geçiş Çoklu Çizgileri ve Rota Jetonları başlıklı makaleyi inceleyin.

  2. Rota jetonu kullanma koşullarını karşılamak için Routes API veya Routes Preferred API isteğinizi ayarlayın:

    • travelMode değerini DRIVE veya TWO_WHEELER olarak ayarlayın.
    • routingPreference değerini TRAFFIC_AWARE veya TRAFFIC_AWARE_OPTIMAL olarak ayarlayın.
    • Via yol noktası kullanmayın.

2. adım: Rota jetonunu Navigasyon SDK'sına iletin

  1. Rota jetonunu depolama: Navigation SDK'da 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",
    }
    
  2. Rota jetonunu oluştururken kullandığınız hedef ara noktalarını belirterek rota jetonunu Navigator.setDestinations yöntemini kullanarak 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 belirtilen varış noktasına giden bir rota bulursa RouteStatus.OK değerini döndürür.

Bu yöntem hakkında daha fazla bilgi için Navigator.setDestinations başlıklı makaleyi inceleyin.

Örnek

Aşağıdaki kod örneğinde, rota jetonu kullanarak planlanan 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ı ve Navigasyon SDK'sının etkileşimi

Navigation SDK'sı, planlanan rotanızı şu şekilde işler:

  • Uygulamanızdaki aşağıdaki ayarlar yerine rota jetonunuzda ayarlanan rota seçeneklerini kullanır. Bu ayarlar, yolculuk sırasında yeni bir rota hesaplarken de geçerlidir:

    • RoutingOptions.avoidHighways()
    • RoutingOptions.avoidTolls()
    • RoutingOptions.avoidFerries()
    • Navigator.setLicensePlateRestrictionInfo()
    • Uygulamanızda ayarlanan seyahat modu
  • Rotayı hesaplarken veya ayarlarken şu ayarları uygular:

    • Rota jetonunuzdaki rota hedefleri (ör. çevre dostu rota veya en kısa rota) Navigasyon SDK'sının rotayı ayarlaması gerekiyorsa rota jetonunu isterken belirttiğiniz rota hedeflerini kullanır.

    • Yol kenarı tercihi gibi uygulamanızdaki ara noktayla ilgili seçenekler. Rota jetonunu isterken belirttiğiniz ara nokta ile ilgili seçeneklerin aynısını kullanın.