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

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

रिस्पॉन्स फ़ील्ड मास्क बनाकर, फ़ील्ड की सूची बनाई जा सकती है. इसके बाद, यूआरएल पैरामीटर $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: रिस्पॉन्स में, Route ऑब्जेक्ट के उन फ़ील्ड की जानकारी देता है जिन्हें दिखाना है. इन फ़ील्ड के नाम के आगे 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 तरीका एक रास्ता. इस उदाहरण में, हेडर में फ़ील्ड मास्क तय किए गए हैं, ताकि रिस्पॉन्स में रूट 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 का रेफ़रंस.