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 ट्रांसकोडिंग सिंटैक्स का इस्तेमाल किया गया है.

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

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

JSON के काेड में दिखाना
{
  "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 और 'TWO_WHEELER' का इस्तेमाल किया जा सकता है.

routingPreference

enum (RoutingPreference)

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

polylineQuality

enum (PolylineQuality)

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

polylineEncoding

enum (PolylineEncoding)

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

departureTime

string (Timestamp format)

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

आरएफ़सी3339 यूटीसी के "Zulu" फ़ॉर्मैट में एक टाइमस्टैंप, नैनोसेकंड रिज़ॉल्यूशन और नौ दशमलव अंकों के साथ. उदाहरण: "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". ज़्यादा जानकारी के लिए, यूनिकोड लोकल आइडेंटिफ़ायर देखें. इस्तेमाल की जा सकने वाली भाषाओं की सूची के लिए, भाषा की सुविधा पर जाएं. अगर आपने यह वैल्यू नहीं दी है, तो डिसप्ले भाषा का अनुमान, रास्ते के अनुरोध की जगह से लगाया जाता है.

units

enum (Units)

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

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

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

अनुमति के दायरे

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

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

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