Method: computeCustomRoutes

टर्मिनल और इंटरमीडिएट वेपॉइंट के सेट और रूट का मकसद दिए जाने पर, रूट के मकसद के लिए सबसे अच्छे रूट की गिनती करता है. सबसे तेज़ और सबसे छोटे रास्ते को रेफ़रंस के तौर पर भी दिखाता है.

ध्यान दें: इस तरीके का इस्तेमाल करने के लिए, आपको इनपुट में रिस्पॉन्स फ़ील्ड मास्क तय करना होगा. यूआरएल पैरामीटर $fields या fields का इस्तेमाल करके या एचटीटीपी/gRPC हेडर X-Goog-FieldMask का इस्तेमाल करके, रिस्पॉन्स फ़ील्ड मास्क उपलब्ध कराया जा सकता है. उपलब्ध यूआरएल पैरामीटर और हेडर देखें. यह वैल्यू, कॉमा लगाकर अलग की गई फ़ील्ड पाथ की सूची होती है. फ़ील्ड पाथ बनाने के तरीके के बारे में ज़्यादा जानकारी वाला दस्तावेज़ देखें.

उदाहरण के लिए, इस तरीके से:

  • सभी उपलब्ध फ़ील्ड का फ़ील्ड मास्क (मैन्युअल जांच के लिए): X-Goog-FieldMask: *
  • रास्ते की दूरी, कुल दूरी, टोकन, और टोल की जानकारी का फ़ील्ड मास्क: X-Goog-FieldMask: routes.route.distanceMeters,routes.route.duration,routes.token,routes.route.travelAdvisory.tollInfo

Google, वाइल्डकार्ड (*) रिस्पॉन्स फ़ील्ड मास्क या टॉप लेवल (routes) पर फ़ील्ड मास्क तय करने की सलाह नहीं देता, क्योंकि:

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

एचटीटीपी अनुरोध

POST https://routespreferred.googleapis.com/v1:computeCustomRoutes

यूआरएल, gRPC ट्रांसकोडिंग सिंटैक्स का इस्तेमाल करता है.

अनुरोध का मुख्य भाग

अनुरोध के मुख्य हिस्से में इस तरह का डेटा शामिल होता है:

जेएसओएन के काेड में दिखाना
{
  "origin": {
    object (Waypoint)
  },
  "destination": {
    object (Waypoint)
  },
  "intermediates": [
    {
      object (Waypoint)
    }
  ],
  "travelMode": enum (RouteTravelMode),
  "routingPreference": enum (RoutingPreference),
  "polylineQuality": enum (PolylineQuality),
  "polylineEncoding": enum (PolylineEncoding),
  "departureTime": string,
  "routeModifiers": {
    object (RouteModifiers)
  },
  "routeObjective": {
    object (RouteObjective)
  },
  "languageCode": string,
  "units": enum (Units)
}
फ़ील्ड
origin

object (Waypoint)

ज़रूरी है. ऑरिजिन वेपॉइंट.

destination

object (Waypoint)

ज़रूरी है. मंज़िल की वेपॉइंट.

intermediates[]

object (Waypoint)

ज़रूरी नहीं. रास्ते पर वेपॉइंट का एक सेट (टर्मिनल पॉइंट को छोड़कर), जहां से या तो रुकता है या गुज़रता है. ज़्यादा से ज़्यादा 25 इंटरमीडिएट वेपॉइंट इस्तेमाल किए जा सकते हैं.

travelMode

enum (RouteTravelMode)

ज़रूरी नहीं. परिवहन का साधन बताता है. अब सिर्फ़ Drive इस्तेमाल किया जा सकता है.

routingPreference

enum (RoutingPreference)

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

polylineQuality

enum (PolylineQuality)

ज़रूरी नहीं. पॉलीलाइन की क्वालिटी के लिए आपकी पसंद बताता है.

polylineEncoding

enum (PolylineEncoding)

ज़रूरी नहीं. यह पॉलीलाइन के लिए कोड में बदलने के पसंदीदा तरीके के बारे में बताता है.

departureTime

string (Timestamp format)

ज़रूरी नहीं. रवानगी का समय. अगर यह वैल्यू सेट नहीं की जाती है, तो यह वैल्यू डिफ़ॉल्ट रूप से आपके अनुरोध किए गए समय से सेट हो जाएगी. अगर इस वैल्यू को ऐसे समय पर सेट किया जाता है जो पहले हो चुका है, तो अनुरोध नहीं हो पाएगा.

RFC3339 यूटीसी "ज़ुलु" फ़ॉर्मैट में एक टाइमस्टैंप, जिसमें नैनोसेकंड रिज़ॉल्यूशन और नौ फ़्रैक्शनल अंक तक हो सकते हैं. उदाहरण: "2014-10-02T15:01:23Z" और "2014-10-02T15:01:23.045123456Z".

routeModifiers

object (RouteModifiers)

ज़रूरी नहीं. ऐसी शर्तों का सेट जो पूरे किए जाने वाले रास्तों का हिसाब लगाने के तरीके पर असर डालती हैं.

routeObjective

object (RouteObjective)

ज़रूरी है. रूट का मकसद, जिसके लिए ऑप्टिमाइज़ करना है.

languageCode

string

ज़रूरी नहीं. BCP-47 भाषा कोड, जैसे "en-US" या "sr-Latn". ज़्यादा जानकारी के लिए, http://www.unicode.org/reports/tr35/#Unicode_locale_identifier देखें. इस्तेमाल की जाने वाली भाषाओं की सूची के लिए भाषा से जुड़ी सहायता देखें. अगर यह वैल्यू नहीं दी जाती है, तो डिसप्ले भाषा का अनुमान उस जगह से लगाया जाता है जहां अनुरोध किया गया था.

units

enum (Units)

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

जवाब का मुख्य भाग

कामयाब रहने पर, जवाब के मुख्य हिस्से में ComputeCustomRoutesResponse का एक इंस्टेंस शामिल किया जाता है.

अनुमति पाने के लिंक

नीचे दिए गए OAuth के लिंक की ज़रूरत हाेती है:

  • https://www.googleapis.com/auth/maps-platform.routespreferred

ज़्यादा जानकारी के लिए, OAuth 2.0 की खास जानकारी देखें.