Method: computeRouteMatrix

यह फ़ंक्शन, शुरुआत की जगहों और मंज़िलों की सूची लेता है. साथ ही, यह एक स्ट्रीम दिखाता है. इस स्ट्रीम में, शुरुआत की हर जगह और मंज़िल के कॉम्बिनेशन के लिए रास्ते की जानकारी होती है.

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

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

  • मैन्युअल तरीके से जांच करने के लिए, सभी उपलब्ध फ़ील्ड का फ़ील्ड मास्क: X-Goog-FieldMask: *
  • रास्ते की अवधि, दूरी, एलिमेंट की स्थिति, शर्त, और एलिमेंट इंडेक्स का फ़ील्ड मास्क (उदाहरण के लिए, प्रोडक्शन सेटअप): X-Goog-FieldMask: originIndex,destinationIndex,status,condition,distanceMeters,duration

यह ज़रूरी है कि फ़ील्ड मास्क में status शामिल किया जाए. ऐसा न करने पर, सभी मैसेज ठीक दिखेंगे. Google, वाइल्डकार्ड (*) रिस्पॉन्स फ़ील्ड मास्क का इस्तेमाल करने का सुझाव नहीं देता है, क्योंकि:

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

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

POST https://routes.googleapis.com/distanceMatrix/v2:computeRouteMatrix

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

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

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

JSON के काेड में दिखाना
{
  "origins": [
    {
      object (RouteMatrixOrigin)
    }
  ],
  "destinations": [
    {
      object (RouteMatrixDestination)
    }
  ],
  "travelMode": enum (RouteTravelMode),
  "routingPreference": enum (RoutingPreference),
  "departureTime": string,
  "arrivalTime": string,
  "languageCode": string,
  "regionCode": string,
  "units": enum (Units),
  "extraComputations": [
    enum (ExtraComputation)
  ],
  "trafficModel": enum (TrafficModel),
  "transitPreferences": {
    object (TransitPreferences)
  }
}
फ़ील्ड
origins[]

object (RouteMatrixOrigin)

ज़रूरी है. ऑरिजिन का कलेक्शन, जिससे जवाब मैट्रिक्स की पंक्तियां तय होती हैं. ओरिजिन और डेस्टिनेशन के एलिमेंट की संख्या पर, साइज़ से जुड़ी कई पाबंदियां लागू होती हैं:

  • ओरिजन की संख्या + placeId या address के तौर पर तय की गई डेस्टिनेशन की संख्या का योग 50 से ज़्यादा नहीं होना चाहिए.
  • किसी भी मामले में, ऑरिजिन की संख्या × डेस्टिनेशन की संख्या का गुणनफल 625 से ज़्यादा नहीं होना चाहिए.
  • अगर routingPreference को TRAFFIC_AWARE_OPTIMAL पर सेट किया गया है, तो ऑरिजिन की संख्या × डेस्टिनेशन की संख्या का प्रॉडक्ट 100 से ज़्यादा नहीं होना चाहिए.
  • अगर travelMode को TRANSIT पर सेट किया गया है, तो ऑरिजिन की संख्या × डेस्टिनेशन की संख्या का प्रॉडक्ट 100 से ज़्यादा नहीं होना चाहिए.
destinations[]

object (RouteMatrixDestination)

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

travelMode

enum (RouteTravelMode)

ज़रूरी नहीं. यात्रा के साधन के बारे में बताता है.

routingPreference

enum (RoutingPreference)

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

departureTime

string (Timestamp format)

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

यह आरएफ़सी 3339 का इस्तेमाल करता है. इसमें जनरेट किया गया आउटपुट हमेशा Z-नॉर्मलाइज़ किया जाएगा और इसमें 0, 3, 6 या 9 फ़्रैक्शनल अंक इस्तेमाल किए जाएंगे. "Z" के अलावा, अन्य ऑफ़सेट भी स्वीकार किए जाते हैं. उदाहरण: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" या "2014-10-02T15:01:23+05:30".

arrivalTime

string (Timestamp format)

ज़रूरी नहीं. बस के पहुंचने का समय. ध्यान दें: इसे सिर्फ़ तब सेट किया जा सकता है, जब RouteTravelMode को TRANSIT पर सेट किया गया हो. departureTime या arrivalTime में से किसी एक को चुना जा सकता है, लेकिन दोनों को नहीं.

यह आरएफ़सी 3339 का इस्तेमाल करता है. इसमें जनरेट किया गया आउटपुट हमेशा Z-नॉर्मलाइज़ किया जाएगा और इसमें 0, 3, 6 या 9 फ़्रैक्शनल अंक इस्तेमाल किए जाएंगे. "Z" के अलावा, अन्य ऑफ़सेट भी स्वीकार किए जाते हैं. उदाहरण: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" या "2014-10-02T15:01:23+05:30".

languageCode

string

ज़रूरी नहीं. BCP-47 भाषा कोड, जैसे कि "en-US" या "sr-Latn". ज़्यादा जानकारी के लिए, यूनिकोड लोकल आइडेंटिफ़ायर देखें. इस्तेमाल की जा सकने वाली भाषाओं की सूची देखने के लिए, भाषा से जुड़ी सहायता देखें. इस वैल्यू को सबमिट न करने पर, डिसप्ले की भाषा का पता पहले ऑरिजिन की जगह के हिसाब से लगाया जाता है.

regionCode

string

ज़रूरी नहीं. क्षेत्र का कोड, जिसे ccTLD ("टॉप-लेवल डोमेन") के तौर पर दो वर्णों वाली वैल्यू के तौर पर तय किया जाता है. ज़्यादा जानकारी के लिए, देश के कोड के हिसाब से टॉप लेवल डोमेन देखें.

units

enum (Units)

ज़रूरी नहीं. यह डिसप्ले फ़ील्ड के लिए, मेज़रमेंट की यूनिट तय करता है.

extraComputations[]

enum (ExtraComputation)

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

trafficModel

enum (TrafficModel)

ज़रूरी नहीं. ट्रैफ़िक में लगने वाले समय का हिसाब लगाते समय इस्तेमाल की जाने वाली मान्यताओं के बारे में बताता है. इस सेटिंग से, RouteMatrixElement में मौजूद अवधि फ़ील्ड में दिखाई गई वैल्यू पर असर पड़ता है. इस फ़ील्ड में, ट्रैफ़िक में लगने वाले अनुमानित समय की जानकारी होती है. यह जानकारी, पिछले समय के औसत डेटा के आधार पर दी जाती है. TrafficModel सिर्फ़ उन अनुरोधों के लिए उपलब्ध है जिनमें RoutingPreference को TRAFFIC_AWARE_OPTIMAL और RouteTravelMode को DRIVE पर सेट किया गया है. अगर ट्रैफ़िक का अनुरोध किया गया है और TrafficModel के बारे में नहीं बताया गया है, तो डिफ़ॉल्ट वैल्यू BEST_GUESS होती है.

transitPreferences

object (TransitPreferences)

ज़रूरी नहीं. यह उन प्राथमिकताओं के बारे में बताता है जो TRANSIT रास्तों के लिए दिखाए गए रूट पर असर डालती हैं. ध्यान दें: RouteTravelMode को TRANSIT पर सेट करने के बाद ही, transitPreferences की जानकारी दी जा सकती है.

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

इसमें v2.computeRouteMatrix API में, शुरुआती जगह/मंज़िल के जोड़े के लिए कैलकुलेट की गई रास्ते की जानकारी होती है. इस प्रोटो को क्लाइंट को स्ट्रीम किया जा सकता है.

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

JSON के काेड में दिखाना
{
  "status": {
    object (Status)
  },
  "condition": enum (RouteMatrixElementCondition),
  "distanceMeters": integer,
  "duration": string,
  "staticDuration": string,
  "travelAdvisory": {
    object (RouteTravelAdvisory)
  },
  "fallbackInfo": {
    object (FallbackInfo)
  },
  "localizedValues": {
    object (LocalizedValues)
  },
  "originIndex": integer,
  "destinationIndex": integer
}
फ़ील्ड
status

object (Status)

इस एलिमेंट के लिए गड़बड़ी की स्थिति का कोड.

condition

enum (RouteMatrixElementCondition)

इससे पता चलता है कि रास्ता मिला या नहीं. स्टेटस से कोई फ़र्क़ नहीं पड़ता.

distanceMeters

integer

रास्ते की दूरी, मीटर में.

duration

string (Duration format)

रास्ते पर चलने में लगने वाला समय. अगर routingPreference को TRAFFIC_UNAWARE पर सेट किया जाता है, तो यह वैल्यू staticDuration के बराबर होती है. अगर आपने routingPreference को TRAFFIC_AWARE या TRAFFIC_AWARE_OPTIMAL पर सेट किया है, तो इस वैल्यू का हिसाब लगाते समय ट्रैफ़िक की स्थितियों को ध्यान में रखा जाता है.

यह अवधि सेकंड में होती है. इसमें नौ दशमलव अंक तक हो सकते हैं. इसके आखिर में 's' होता है. उदाहरण: "3.5s".

staticDuration

string (Duration format)

ट्रैफ़िक की स्थिति को ध्यान में रखे बिना, इस रास्ते से यात्रा करने में लगने वाला समय.

यह अवधि सेकंड में होती है. इसमें नौ दशमलव अंक तक हो सकते हैं. इसके आखिर में 's' होता है. उदाहरण: "3.5s".

travelAdvisory

object (RouteTravelAdvisory)

रास्ते के बारे में अतिरिक्त जानकारी. उदाहरण के लिए: पाबंदी से जुड़ी जानकारी और टोल की जानकारी

fallbackInfo

object (FallbackInfo)

कुछ मामलों में, जब सर्वर इस ऑरिजिन/डेस्टिनेशन पेयर के लिए, दी गई प्राथमिकताओं के हिसाब से रास्ते का हिसाब नहीं लगा पाता है, तो वह हिसाब लगाने के लिए किसी दूसरे मोड का इस्तेमाल कर सकता है. फ़ॉलबैक मोड का इस्तेमाल करने पर, इस फ़ील्ड में फ़ॉलबैक रिस्पॉन्स के बारे में पूरी जानकारी होती है. ऐसा न होने पर, इस फ़ील्ड को सेट नहीं किया जाता.

localizedValues

object (LocalizedValues)

RouteMatrixElement की प्रॉपर्टी के टेक्स्ट फ़ॉर्मैट.

originIndex

integer

अनुरोध में मौजूद ऑरिजिन का ज़ीरो-आधारित इंडेक्स.

destinationIndex

integer

अनुरोध में मौजूद डेस्टिनेशन का ज़ीरो-आधारित इंडेक्स.

RouteMatrixOrigin

ComputeRouteMatrixRequest के लिए एक ही ऑरिजिन

JSON के काेड में दिखाना
{
  "waypoint": {
    object (Waypoint)
  },
  "routeModifiers": {
    object (RouteModifiers)
  }
}
फ़ील्ड
waypoint

object (Waypoint)

ज़रूरी है. यात्रा शुरू करने की जगह

routeModifiers

object (RouteModifiers)

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

RouteMatrixDestination

ComputeRouteMatrixRequest के लिए एक डेस्टिनेशन

JSON के काेड में दिखाना
{
  "waypoint": {
    object (Waypoint)
  }
}
फ़ील्ड
waypoint

object (Waypoint)

ज़रूरी है. डेस्टिनेशन वेपॉइंट

ExtraComputation

अनुरोध पूरा करते समय, अतिरिक्त गणनाएं की जाती हैं.

Enums
EXTRA_COMPUTATION_UNSPECIFIED इस्तेमाल नहीं किया गया. इस वैल्यू वाले अनुरोध पूरे नहीं किए जा सकेंगे.
TOLLS मैट्रिक्स एलिमेंट के लिए टोल की जानकारी.

RouteMatrixElementCondition

दिखाए जा रहे रास्ते की स्थिति.

Enums
ROUTE_MATRIX_ELEMENT_CONDITION_UNSPECIFIED इसका इस्तेमाल सिर्फ़ तब किया जाता है, जब एलिमेंट का status ठीक न हो.
ROUTE_EXISTS रास्ता मिल गया है और एलिमेंट के लिए उससे जुड़ी जानकारी भर दी गई है.
ROUTE_NOT_FOUND कोई रास्ता नहीं मिला. रास्ते की जानकारी देने वाले फ़ील्ड, जैसे कि distanceMeters या duration, एलिमेंट में नहीं भरे जाएंगे.

LocalizedValues

कुछ प्रॉपर्टी के टेक्स्ट फ़ॉर्मैट.

JSON के काेड में दिखाना
{
  "distance": {
    object (LocalizedText)
  },
  "duration": {
    object (LocalizedText)
  },
  "staticDuration": {
    object (LocalizedText)
  },
  "transitFare": {
    object (LocalizedText)
  }
}
फ़ील्ड
distance

object (LocalizedText)

यात्रा की दूरी को टेक्स्ट के तौर पर दिखाया गया है.

duration

object (LocalizedText)

ट्रैफ़िक की स्थितियों को ध्यान में रखते हुए, अवधि को टेक्स्ट के रूप में दिखाया जाता है. ध्यान दें: अगर ट्रैफ़िक की जानकारी का अनुरोध नहीं किया गया था, तो यह वैल्यू, staticDuration की वैल्यू के बराबर होती है.

staticDuration

object (LocalizedText)

इसमें यात्रा में लगने वाले समय को टेक्स्ट के तौर पर दिखाया जाता है. इसमें ट्रैफ़िक की स्थिति को ध्यान में नहीं रखा जाता.

transitFare

object (LocalizedText)

किराये की जानकारी टेक्स्ट के तौर पर दी गई है.