रास्ते की योजना बनाना

कभी-कभी ऐसा हो सकता है कि आप ड्राइवर के लिए अपने ऐप्लिकेशन का रास्ता तय करना चाहें. Routes API (या Routes Preferred API) से रूट टोकन का इस्तेमाल करने से, आपको पहले से तय रास्ते के लिए दो चीज़ें तय करने में मदद मिल सकती है:

  • रास्ते के लिए पॉलीलाइन

  • आपके रास्ते के मकसद

उदाहरण के लिए, यहां रूटिंग के मकसद के कुछ उदाहरण दिए गए हैं, जो आपके पास हो सकते हैं:

  • डिलीवरी में लगने वाले समय को कम करना: डिलीवरी करने वाला कारोबार, खाना डिलीवर करने में लगने वाले समय को कम करना चाहे.

  • यात्रा में लगने वाले समय या ईंधन की खपत को कम करना: लॉजिस्टिक से जुड़ा कारोबार अपने ड्राइवर की बचत करने और ईंधन का खर्च कम करने के बारे में सोच सकता है.

  • डेस्टिनेशन तक पहुंचने में लगने वाला समय कम करें: सेवा डिस्पैच कार्रवाई करने से, ऑपरेटर को काम का अनुरोध मिलने में लगने वाले समय को कम किया जा सकता है.

  • कम खर्च और सुरक्षा में सुधार: राइड शेयर करने वाला कारोबार शायद ऐसा रास्ता खोजना चाहे जिसकी राइड कम किराये पर हो और सुरक्षा की वजहों से कुछ जगहों पर जाने से बचना चाहिए.

रूट टोकन का इस्तेमाल करके रूट प्लान करने के बारे में ज़्यादा जानकारी के लिए, रूट टोकन का अनुरोध करना देखें.

रूट के मकसद के लिए रूट टोकन का इस्तेमाल क्यों करना चाहिए

Routes या Routes Preferred API से मिलने वाले रूट टोकन की मदद से, आपके पास दिए गए रूट पर ज़्यादा कंट्रोल होता है:

  • नेविगेशन SDK टूल के लिए पहले से रूट तय कर लें, ताकि ज़रूरत पड़ने पर इसका इस्तेमाल किया जा सके.

  • नेविगेशन SDK टूल के इस्तेमाल के लिए सबसे अच्छा रास्ता चुनें. अगर Routes API में रूट जनरेट करते समय, रूट टोकन के लिए अनुरोध किया जाता है, तो आपको जनरेट किए गए हर रूट के लिए एक रूट टोकन मिलता है. इसके बाद, उस रूट के लिए टोकन चुनें जिसका इस्तेमाल आपको नेविगेशन SDK टूल को पास करना है.

  • पहले से ही कीमत का अनुमान लगाएं. इसमें ETA और दूरी के अनुमान भी शामिल हैं. हालांकि, असल लागत और समय अलग हो सकते हैं, लेकिन यह अनुमान, अनुमानित और असल रास्ते की लागत के बीच के अंतर को कम करता है.

  • रास्ते के ज़्यादा बेहतर मकसद तय करें, जैसे कि ईको रूटिंग या सबसे छोटा रास्ता.

Routes API के रूट टोकन के काम करने का तरीका

रूट के मकसद का इस्तेमाल करके रूट तय करने के लिए, Routes API या Routes Preferred API का इस्तेमाल किया जा सकता है. Routes API एक रूट टोकन दिखाता है, जिसे नेविगेशन SDK टूल को पास किया जा सकता है. इससे यह पता चलता है कि यह आपके वाहन को कैसे रूट करता है.

यहां बताया गया है कि जब आप Routes API से रूट टोकन का अनुरोध करते हैं और उसे इस्तेमाल करते हैं, तो क्या होता है:

  1. Routes API, एन्क्रिप्ट (सुरक्षित) किया गया ऐसा रूट टोकन दिखाता है जिसमें रूट पॉलीलाइन और रूट के मकसद शामिल होते हैं.

  2. आप नेविगेशन SDK को रूट टोकन पास करते हैं.

  3. नेविगेशन SDK टूल, रूट को फिर से हासिल करता है या अगर स्थितियों में होने वाले बदलावों की वजह से रास्ता उपलब्ध नहीं होता है, तो यह सबसे बेहतर मैच करने वाला रूट हासिल करता है.

  4. ड्राइव करते समय, ट्रैफ़िक या अन्य सड़क की स्थिति बदलने पर या अगर कोई वाहन तय किए गए रास्ते से हट जाता है, तो बदले गए रास्ते की लगातार कोशिश होती है कि वह टोकन में दिए गए रूट के मकसद के आधार पर सबसे सही रूट से मेल खाए.

इस प्रक्रिया से तय होता है कि आपने जो रास्ता चुना है उससे तय किया गया रास्ता, उस रास्ते से कितना करीब है.

तय किए गए रास्ते को पूरी तरह से फ़ॉलो क्यों नहीं किया जा सकता

अपने तय किए गए रास्ते और रास्तों के मकसद को दिशा-निर्देशों के तौर पर मानें: ये निर्देश का पालन नहीं करते. आपको अपने तय किए गए रास्ते और निर्देशों के साथ नेविगेशन से मिले रास्ते के बीच अंतर दिख सकता है. ऐसा सड़क की स्थिति, शुरुआती जगह या तय किए गए रूट बनाने के बाद से बदले गए पैरामीटर में अंतर की वजह से होता है. इस अंतर की वजह से, यात्रा की दूसरी अहम आदतों के साथ-साथ दूरी और ईटीए के लिए, आपके तय किए गए और असल लक्ष्यों में फ़र्क़ हो सकता है.

रूट टोकन का इस्तेमाल करके रूट तय करना

रूट टोकन बनाकर और फिर उसे नेविगेशन SDK को पास करके, रूट की योजना बनाई जा सकती है, जैसा कि नीचे बताया गया है:

पहला चरण: Routes या Routes Preferred API का इस्तेमाल करके, रूट टोकन बनाना

  1. यहां दिए गए तरीकों में से किसी एक का इस्तेमाल करके, रूट टोकन का अनुरोध करें:

  2. रूट टोकन का इस्तेमाल करने से जुड़ी ज़रूरी शर्तें पूरी करने के लिए, रूट अनुरोध सेट अप करें:

    • travel_mode को DRIVING पर सेट करें
    • routing_preference को TRAFFIC_AWARE या TRAFFIC_AWARE_OPTIMAL पर सेट करें
    • वेपॉइंट का इस्तेमाल न करें

दूसरा चरण: नेविगेशन SDK टूल को रूट टोकन भेजना

  1. रूट टोकन सेव करें: नेविगेशन SDK टूल में, रूट टोकन सेव करने के लिए एक स्ट्रिंग सेट अप करें. उदाहरण के लिए:

    String routeToken = "route token returned by Routes API";

    लौटाए गए रूट टोकन का उदाहरण:

    {
    // Other fields
    "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g",
    }
    
  2. नेविगेशन SDK पर रूट टोकन पास करें. इसके लिए, Navigator.setDestinations तरीके का इस्तेमाल करें. साथ ही, उसी डेस्टिनेशन वेपॉइंट को तय करें जिसका इस्तेमाल आपने रूट टोकन बनाते समय किया था:

    setDestinations(List destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions);

    उदाहरण के लिए:

    CustomRoutesOptions customRoutesOptions =
          CustomRoutesOptions.builder()
          .setRouteToken(routeToken)
          .build();

Navigator.setDestinations वाला तरीका, अनुरोध की स्थिति दिखाता है. अगर इसे वाहन की जगह से दी गई मंज़िल तक का कोई रास्ता मिलता है, तो यह RouteStatus.OK दिखाता है.

इस तरीके के बारे में ज़्यादा जानकारी के लिए, Navigator.setDestinations देखें.

उदाहरण

नीचे दिए गए कोड के उदाहरण में, रूट टोकन का इस्तेमाल करके पहले से तय किए गए रास्ते के बारे में बताने का तरीका बताया गया है.

    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(CustomRoutesOptions.TravelMode.TWO_WHEELER)
          .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);

रूट टोकन और नेविगेशन SDK कैसे इंटरैक्ट करते हैं

यहां बताया गया है कि नेविगेशन SDK टूल से जनरेट किए गए रूट और रूट टोकन में मौजूद रूट टोकन के साथ कैसे इंटरैक्ट करते हैं:

  • पहले से सेट किए गए डेस्टिनेशन को बदल देता है.

  • वाहन शुरू करने की जगह का इस्तेमाल करता है.

  • सड़क और ट्रैफ़िक की स्थिति के हिसाब से बदलाव होते हैं. देखें पहले से तय किए गए रास्ते को किस वजह से शायद पूरी तरह से फ़ॉलो नहीं किया गया है.

  • रूटिंग से जुड़े इन विकल्पों को ग़ैर-ज़रूरी के रूप में अनदेखा करता है:

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • फ़ॉलो करते हैं:

    • वेपॉइंट से जुड़े विकल्प, जैसे कि सड़क के किनारे वाले विकल्प.

    • रूट के मकसद. अगर नेविगेशन SDK टूल को, दिए गए रूट में बदलाव करना पड़ता है, तो यह उन रूट मकसद का इस्तेमाल करता है जो आपने रूट टोकन का अनुरोध करते समय तय किए थे. इस वजह से, आपको उसी वेपॉइंट से जुड़े विकल्प इस्तेमाल करने चाहिए जो आपने Routes API में दिए हैं.