चुनें कि कौनसी जानकारी वापस करनी है

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

रिस्पॉन्स फ़ील्ड मास्क बनाकर, फ़ील्ड की सूची बनाई जा सकती है. इसके बाद, यूआरएल पैरामीटर $fields या fields या एचटीटीपी या gRPC हेडर X-Goog-FieldMask का इस्तेमाल करके, रिस्पॉन्स फ़ील्ड मास्क को किसी भी तरीके में पास किया जा सकता है.

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

यूआरएल पैरामीटर के बारे में ज़्यादा जानने के लिए, सिस्टम पैरामीटर देखें.

रिस्पॉन्स फ़ील्ड मास्क तय करें

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

फ़ील्ड पाथ इस तरह बनाएं और तय करें:

  1. Routes API से, वे फ़ील्ड ढूंढें जिनमें आपके काम की जानकारी मौजूद है. जानकारी के लिए, फ़ील्ड रेफ़रंस देखें.
  2. आपको जिन फ़ील्ड की ज़रूरत है उनके पाथ तय करें और उनके लिए फ़ील्ड मास्क बनाएं: ज़्यादा जानकारी के लिए, तय करें कि आपको कौनसा फ़ील्ड मास्क इस्तेमाल करना है लेख पढ़ें.
  3. अपनी ज़रूरत के सभी फ़ील्ड के लिए, फ़ील्ड मास्क जोड़ें. साथ ही, फ़ील्ड मास्क को कॉमा से अलग करें. उदाहरण के लिए, मंज़िल तक पहुंचने के लिए distanceMeters का अनुरोध करने और रास्ते के हर चरण की अवधि के लिए अनुरोध करने के लिए, दोनों को कॉमा से अलग करते हुए डालें. साथ ही, रास्ते के बीच में खाली जगह न छोड़ें:

    routes.legs.distanceMeters,routes.legs.steps.duration
  4. अपने एपीआई अनुरोध के साथ फ़ील्ड मास्क भेजें. उदाहरण के लिए, cURL अनुरोध में, -H और X-Goog-FieldMask के साथ फ़ील्ड मास्क तय करना होगा:

    -H X-Goog-FieldMask: routes.legs.distanceMeters,routes.legs.steps.duration
उदाहरण और ज़्यादा जानकारी के लिए, नीचे दिए गए सेक्शन देखें.

फ़ील्ड रेफ़रंस

फ़ील्ड मास्क के ज़रिए जवाब में जिन फ़ील्ड का अनुरोध किया जा सकता है उन्हें देखने के लिए, नीचे दी गई सूची में दिए गए Routes API के रेफ़रंस देखें. रेफ़रंस में दिखाए गए तरीके से, ऊंट के केस में फ़ील्ड चुनें. उदाहरण के लिए, routePreference.

इन रेफ़रंस में, उपलब्ध फ़ील्ड शामिल होते हैं. हालांकि, पूरा फ़ील्ड मास्क पाथ तय करने के लिए, आपको फ़ील्ड की हैरारकी देखनी होगी. फ़ील्ड की हैरारकी पाने से जुड़ी जानकारी के लिए, तय करें कि आपको कौनसा फ़ील्ड मास्क इस्तेमाल करना है.

  • कंप्यूट रूट फ़ील्ड मास्क
    • REST: रिटर्न करने के रिस्पॉन्स में, रूट ऑब्जेक्ट के फ़ील्ड के बारे में बताता है. इसकी शुरुआत में routes. का इस्तेमाल किया जाता है, जैसे कि routes.distanceMeters.
    • gRPC: रिटर्न के रिस्पॉन्स में Route ऑब्जेक्ट के फ़ील्ड के बारे में बताता है.
  • रूट मैट्रिक्स फ़ील्ड मास्क की गिनती करना

तय करें कि कौनसे फ़ील्ड मास्क का इस्तेमाल करना है

यहां बताया गया है कि आपको किन फ़ील्ड का इस्तेमाल करना है, यह कैसे तय करें और उनके लिए फ़ील्ड मास्क कैसे बनाएं:

  1. * के फ़ील्ड मास्क का इस्तेमाल करके, सभी फ़ील्ड का अनुरोध करें.
  2. आपको जो फ़ील्ड चाहिए उसके जवाब में, फ़ील्ड की हैरारकी देखें.
  3. पिछले चरण में दिखाए गए फ़ील्ड की हैरारकी का इस्तेमाल करके, अपने फ़ील्ड मास्क बनाएं. इसके लिए, यह फ़ॉर्मैट इस्तेमाल करें:

    topLevelField[.secondLevelField][.thirdLevelField][...]

उदाहरण के लिए, किसी रूट से इस आंशिक जवाब के लिए:

"routes": [
    {
        "legs": [
            {  "steps": [
                    {"distanceMeters": 119},
                    {"distanceMeters": 41}  ]
            }
        ],
        "distanceMeters": 160
    }
]

अगर आपको रूट लेग के लिए सिर्फ़ distanceMeters फ़ील्ड दिखाना है, यानी पिछले सैंपल में आखिरी distanceMeters, तो आपका फ़ील्ड मास्क इस तरह है:

routes.legs.distanceMeters

अगर आपको इसके बजाय, रूट लेग के हर चरण के लिए distanceMeters फ़ील्ड दिखाना है, यानी पिछले सैंपल में steps के अंदर distanceMeters, तो आपका फ़ील्ड मास्क इस तरह होगा:

routes.legs.steps.distanceMeters

अगर आपको ऊपर दिए गए नतीजे के साथ दोनों नतीजे दिखाने हैं, तो आपका फ़ील्ड मास्क इस तरह दिखेगा:

routes.legs.distanceMeters,routes.legs.steps.distanceMeters

फ़ील्ड मास्क पाथ के उदाहरण

इस सेक्शन में REST और gRPC कॉल में रिस्पॉन्स फ़ील्ड मास्क के हिस्से के तौर पर किसी फ़ील्ड पाथ को तय करने के तरीके के बारे में ज़्यादा उदाहरण दिए गए हैं.

computeRoutes पर REST कॉल करें

पहले उदाहरण में, आपने रूट कैलकुलेट करने के लिए, computeRoutes तरीके के साथ REST कॉल का इस्तेमाल किया है. इस उदाहरण में, हेडर में आपको फ़ील्ड मास्क बताने का विकल्प मिलता है. इससे, रिस्पॉन्स में distanceMeters और duration रूट का फ़ील्ड दिखाया जाता है. फ़ील्ड के नाम से पहले routes लगाना ध्यान रखें.

X-Goog-FieldMask: routes.distanceMeters,routes.duration

computeRouteMatrix पर REST कॉल करें

रूट मैट्रिक्स की गणना करने के लिए इस्तेमाल किए जाने वाले REST computeRouteMatrix तरीके के लिए, हेडर में यह बताएं कि ऑरिजिन और डेस्टिनेशन के हर कॉम्बिनेशन के लिए originIndex, destinationIndex, और duration देना है:

X-Goog-FieldMask: originIndex,destinationIndex,duration

gRPC कॉल

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

const (
  fieldMask = "routes.distanceMeters,routes.duration,routes.polyline.encodedPolyline"
)

फ़ील्ड पाथ पर ध्यान देना

सिर्फ़ वे फ़ील्ड शामिल करें जिनकी आपको ज़रूरत के मुताबिक फ़ील्ड दिखाने के जवाब में चाहिए:

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

फ़ील्ड मास्क बनाने के बारे में ज़्यादा जानकारी के लिए, field_mask.proto देखें.

रूट टोकन का अनुरोध करें

रूट एपीआई से, जनरेट किए गए रूट के लिए रूट टोकन दिखाने का अनुरोध करने के लिए, यह तरीका अपनाएं:

  1. रूट टोकन दिखाने के लिए ज़रूरी इन पैरामीटर को सेट करें:
    • travelMode को DRIVE पर सेट करें.
    • routingPreference को TRAFFIC_AWARE या TRAFFIC_AWARE_OPTIMAL पर सेट करें.
  2. देखें कि आपके रास्ते के वेपॉइंट में से कोई via वेपॉइंट न हो.
  3. रूट टोकन देने के लिए routes.routeToken फ़ील्ड मास्क तय करें:
    X-Goog-FieldMask: routes.routeToken

नेविगेशन SDK टूल में, पहले से तय रास्ते के लिए रूट टोकन का इस्तेमाल किया जा सकता है. ज़्यादा जानकारी के लिए, रूट प्लान करना (Android) या रूट प्लान करना (iOS) देखें.

रूट टोकन का उदाहरण

यहां एक ऑरिजिन और सिंगल-डेस्टिनेशन रूट के लिए, cURL अनुरोध की बॉडी का उदाहरण दिया गया है. इसमें रूट टोकन का अनुरोध करने के लिए फ़ील्ड मास्क का इस्तेमाल किया गया है. साथ ही, रूट की अवधि, दूरी, और रूट की पॉलीलाइन के बारे में भी बताया गया है:

curl -X POST -d
{"origin":{
    "location": {
        "latLng":{
            "latitude":  -37.8167,
            "longitude": 144.9619
        }
    }
},
"destination":{
    "location": {
        "latLng":{
            "latitude":-37.8155,
            "longitude": 144.9663
        }
    }
},
"routingPreference":"TRAFFIC_AWARE",
"travelMode":"DRIVE"
}
-H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H X-Goog-FieldMask: routes.routeToken,routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline
'https://routes.googleapis.com/directions/v2:computeRoutes'

ज़्यादा जानकारी के लिए, Compute Routes API का रेफ़रंस देखें.