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

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

  • रूट के लिए पॉलीलाइन

  • रूट के मकसद

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

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

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

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

  • लागत कम करना और सुरक्षा बेहतर बनाना: राइड-शेयरिंग का कोई कारोबार, ऐसा रूट ढूंढना चाहेगा जो राइडर के लिए कम खर्चीला हो और सुरक्षा की वजहों से कुछ इलाकों से न गुज़रे.

रूट टोकन का इस्तेमाल करके रूट प्लान करने के बारे में ज़्यादा जानने के लिए, Routes API में रूट टोकन का अनुरोध करना और Route Optimization API में पॉलीलाइन और रूट टोकन में बदलाव करना लेख पढ़ें.

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

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

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

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

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

  • रूट के ज़्यादा बेहतर मकसद तय करें, जैसे कि पर्यावरण के अनुकूल रूट या सबसे छोटा रूट.

रूट टोकन कैसे काम करते हैं

रूट के मकसद का इस्तेमाल करके रूट प्लान करने के लिए, Routes API, Routes Preferred API या Route Optimization API का इस्तेमाल किया जा सकता है. इनमें से किसी भी एपीआई से मिले रूट टोकन को, Navigation SDK को पास किया जा सकता है, ताकि यह बताया जा सके कि आपके वाहन के लिए रूट कैसे तय किया जाए.

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

  1. Routes API, Routes Preferred API या Route Optimization API, एन्क्रिप्ट किया गया रूट टोकन दिखाता है. इसमें रूट की पॉलीलाइन और रूट के मकसद शामिल होते हैं.

  2. रूट टोकन को Navigation SDK को पास करें.

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

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

इस प्रोसेस से, असल रूट और प्लान किए गए रूट के बीच का अंतर कम हो जाता है.

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

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

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

रूट टोकन बनाकर और फिर उसे Navigation SDK को पास करके, रूट प्लान किया जा सकता है. इसके लिए, यहां दिया गया तरीका अपनाएं:

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

  1. इनमें से किसी एक तरीके से, रूट टोकन का अनुरोध करें:

  2. रूट टोकन का इस्तेमाल करने के लिए, Routes API या Routes Preferred API के अनुरोध को सेट अप करें:

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

दूसरा चरण: रूट टोकन को Navigation SDK को पास करना

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

    let routeToken = "route token returned by Routes API"
    

    मिले रूट टोकन का उदाहरण:

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

    mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})
    

    Navigator.setDestinations तरीका, अनुरोध की स्थिति दिखाता है. अगर उपयोगकर्ता की जगह से दिए गए डेस्टिनेशन तक का रूट मिलता है, तो यहRouteStatus.OK दिखाता है.

एक से ज़्यादा स्टॉप वाले रूट की स्थितियां

ज़्यादा से ज़्यादा 25 वेपॉइंट कॉन्फ़िगर किए जा सकते हैं.

setDestinations तरीका, एक से ज़्यादा स्टॉप वाली यात्राओं के लिए काम नहीं करता. यात्रा के अगले चरण पर जाने के लिए, वेपॉइंट को आगे बढ़ाने के लिए continueToNextDestinationWithCompletion() का इस्तेमाल करें.

उदाहरण

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

Swift

let location = CLLocationCoordinate2D(latitude: 47.67, longitude: -122.20)
let waypoint1 = GMSNavigationWaypoint(location: location, title: "waypoint from location")!
let waypoint2 = GMSNavigationWaypoint(placeID: "samplePlaceID", title: "waypoint from Place ID")!

let routeToken = "route token returned by Routes API"
mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})

Objective-C

CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint1 = [[GMSNavigationWaypoint alloc] initWithLocation:coordinate title:@"waypoint from location"];
GMSNavigationWaypoint *waypoint2 = [[GMSNavigationWaypoint alloc] initWithPlaceID:@"samplePlaceID"
                                                                            title:@"waypoint from Place ID"];
NSString *routeToken = @"route token returned by Routes API";

[mapView.navigator setDestinations:@[waypoint1, waypoint2]
                        routeToken:routeToken
                          callback:^(GMSRouteStatus routeStatus){...}];

रूट टोकन और Navigation SDK कैसे इंटरैक्ट करते हैं

Navigation SDK से जनरेट किया गया रूट और रूट टोकन में प्लान किया गया रूट कैसे इंटरैक्ट करते हैं, यहां बताया गया है:

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

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

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

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

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • इन विकल्पों को फ़ॉलो करता है:

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

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