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

arrivalTime

string (Timestamp format)

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

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

languageCode

string

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

regionCode

string

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

units

enum (Units)

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

extraComputations[]

enum (ExtraComputation)

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

trafficModel

enum (TrafficModel)

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

transitPreferences

object (TransitPreferences)

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

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

इसमें 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)

बस, मेट्रो वगैरह का किराया, टेक्स्ट फ़ॉर्मैट में दिखाया जाता है.