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

कभी-कभी, आपको अपने ऐप्लिकेशन में उपयोगकर्ताओं को दिखाए जाने वाले रूट की योजना बनानी पड़ सकती है. 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 को DRIVING या 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?.continueToNextDestination([waypoint1, waypoint2], routeToken: routeToken, callback: {...})
    

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

एक से ज़्यादा स्टॉप वाले रूट

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

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

उपयोगकर्ता को सलाह दें. जैसे, उसे ऐसी जगह पर जाने के लिए कहें जहां बेहतर कनेक्टिविटी हो.

उदाहरण

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

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 continueToNextDestination:@[waypoint1, waypoint2]
                         routeToken:routeToken
                           callback:^(GMSRouteStatus routeStatus){...}];

रास्ते के टोकन और Navigation SDK एक-दूसरे के साथ कैसे इंटरैक्ट करते हैं

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

  • Overrides, पहले से सेट किए गए किसी भी डेस्टिनेशन को ओवरराइड करता है.

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

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

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

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

    • रास्ते में पड़ने वाली जगह से जुड़े विकल्प, जैसे कि सड़क के किस ओर से जाना है.

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