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

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

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

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

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

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

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

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

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

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

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

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

  1. * के फ़ील्ड मास्क का इस्तेमाल करके, सभी फ़ील्ड का अनुरोध करें.
  2. जवाब में मौजूद फ़ील्ड की हैरारकी देखें और तय करें कि आपको किन फ़ील्ड की ज़रूरत है.
  3. फ़ील्ड हैरारकी का इस्तेमाल करके, अपना फ़ील्ड मास्क बनाएं.

उदाहरण के लिए, किसी ट्रांज़िट रास्ते से मिलने वाले इस आंशिक जवाब के लिए:

 "routes": [
  {
    "legs": [
    {
      "distanceMeters": 12886,
    }
...
]}]

अगर आपको सिर्फ़ distanceMeters फ़ील्ड वापस करना है, तो आपका फ़ील्ड मास्क यह है:

routes.legs.distanceMeters

दूसरा उदाहरण: जवाब में legs से जुड़ी सारी जानकारी दिखाने के लिए, आपका फ़ील्ड मास्क यह है:

routes.legs

कोई फ़ील्ड पाथ सेट करें

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

computeRoutes पर REST कॉल करें

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

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

computeRouteMatrix पर REST कॉल करें

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

-H X-Goog-FieldMask: originIndex,destinationIndex,duration

gRPC कॉल

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

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

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

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

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

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

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

  1. travel_mode को DRIVING पर सेट करें.
  2. routing_preference को TRAFFIC_AWARE या TRAFFIC_AWARE_OPTIMAL पर सेट करें.
  3. देखें कि आपके रास्ते के वेपॉइंट में से कोई via वेपॉइंट न हो.
  4. रूट टोकन फ़ील्ड मास्क तय करें:
    -H X-Goog-FieldMask: routes.route_token

नेविगेशन 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.route_token,routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline
'https://routes.googleapis.com/directions/v2:computeRoutes'

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