जियोकोडिंग का अनुरोध करते समय, फ़ील्ड मास्क का इस्तेमाल करके, जवाब में दिखाए जाने वाले फ़ील्ड की सूची तय की जा सकती है. फ़ील्ड मास्क, रिस्पॉन्स लेटेंसी को कम करने में मदद करते हैं. इससे यह पक्का होता है कि आपने ग़ैर-ज़रूरी डेटा का अनुरोध न किया हो.
जियोकोडिंग के बुनियादी तरीकों (किसी पते को जियोकोड करना, किसी जगह को जियोकोड करना, और किसी जगह को जियोकोड करना) के लिए, रिस्पॉन्स ऑब्जेक्ट में मौजूद सभी फ़ील्ड डिफ़ॉल्ट रूप से दिखाए जाते हैं. हालांकि, मंज़िलों को खोजने के लिए, फ़ील्ड मास्क की जानकारी देना ज़रूरी है. बुनियादी तरीकों के लिए फ़ील्ड मास्क की ज़रूरत नहीं होती. हालांकि, हमारा सुझाव है कि आप रिस्पॉन्स मिलने में लगने वाले समय को कम करने के लिए, फ़ील्ड मास्क का इस्तेमाल करें.
रिस्पॉन्स फ़ील्ड मास्क तय करना
रिस्पॉन्स फ़ील्ड मास्क, कॉमा लगाकर अलग किए गए पाथ की एक सूची होती है. इसमें कोई स्पेस नहीं होता. इसमें हर पाथ, रिस्पॉन्स ऑब्जेक्ट में एक यूनीक फ़ील्ड के बारे में बताता है. पाथ, टॉप-लेवल रिस्पॉन्स फ़ील्ड से शुरू होता है. साथ ही, किसी फ़ील्ड के लिए डॉट से अलग किए गए पाथ का इस्तेमाल करता है.
यूआरएल पैरामीटर $fields या fields का इस्तेमाल करके या एचटीटीपी या gRPC हेडर X-Goog-FieldMask का इस्तेमाल करके, रिस्पॉन्स फ़ील्ड मास्क को किसी अनुरोध में पास करें.
फ़ील्ड मास्क के उदाहरण
फ़ॉरवर्ड जियोकोडिंग के अनुरोध का पूरा जवाब यहां दिया गया है:
{ "results": [ { "place": "//places.googleapis.com/places/ChIJF4Yf2Ry7j4AR__1AkytDyAE", "placeId": "ChIJF4Yf2Ry7j4AR__1AkytDyAE", "location": { "latitude": 37.422010799999995, "longitude": -122.08474779999999 }, "granularity": "ROOFTOP", "viewport": { "low": { "latitude": 37.420656719708511, "longitude": -122.08547523029148 }, "high": { "latitude": 37.4233546802915, "longitude": -122.0827772697085 } }, "formattedAddress": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA", ... }
जवाब के फ़ील्ड की हैरारकी का इस्तेमाल करके, फ़ील्ड मास्क बनाएं. इसके लिए, इस फ़ॉर्मैट का इस्तेमाल करें:
topLevelField[.secondLevelField][.thirdLevelField][...]
डेस्टिनेशन फ़ील्ड मास्क खोजना
SearchDestinations को कॉल करते समय,
अपनी ज़रूरत के हिसाब से डेस्टिनेशन के सटीक एट्रिब्यूट की जानकारी दें. जैसे, जगह की मुख्य जानकारी, एंट्री पॉइंट, नेविगेशन पॉइंट, बिल्डिंग की आउटलाइन (displayPolygon), और लैंडमार्क:
curl -X POST -d '{"addressQuery": {"addressQuery": "1600 Amphitheatre Pkwy, Mountain View, CA"}}' \
-H 'Content-Type: application/json' \
-H 'X-Goog-FieldMask: destinations.primary.displayName,destinations.primary.displayPolygon,destinations.entrances,destinations.navigationPoints,destinations.landmarks' \
-H "X-Goog-Api-Key: API_KEY" \
https://geocode.googleapis.com/v4/geocode/destinations
जियोकोडिंग के मुख्य फ़ील्ड मास्क
उदाहरण के लिए, GeocodeAddress रिस्पॉन्स में सिर्फ़ placeId फ़ील्ड दिखाने के लिए, इस फ़ील्ड मास्क का इस्तेमाल करें:
curl -X GET -H 'Content-Type: application/json' \ -H 'X-Goog-FieldMask: results.placeId' \ -H "X-Goog-Api-Key: API_KEY" \ https://geocode.googleapis.com/v4/geocode/address/1600+Amphitheatre+Parkway,+Mountain+View,+CA
अब जवाब यह है:
{ "results": [ { "placeId": "ChIJF4Yf2Ry7j4AR__1AkytDyAE" } ] }
viewport फ़ील्ड को वापस लाने के लिए, आपका फ़ील्ड मास्क यह है:
-H 'X-Goog-FieldMask: results.viewport'
अब जवाब यह है:
{ "results": [ { "viewport": { "low": { "latitude": 37.420654569708496, "longitude": -122.08547618029148 }, "high": { "latitude": 37.423352530291496, "longitude": -122.0827782197085 } } } ] }
दोनों आइटम वापस करने के लिए:
-H 'X-Goog-FieldMask: results.placeId,results.viewport'
अब जवाब यह है:
{ "results": [ { "placeId": "ChIJF4Yf2Ry7j4AR__1AkytDyAE", "viewport": { "low": { "latitude": 37.420654569708496, "longitude": -122.08547618029148 }, "high": { "latitude": 37.423352530291496, "longitude": -122.0827782197085 } } } ] }
gRPC फ़ील्ड मास्क
gRPC के लिए, रिस्पॉन्स फ़ील्ड मास्क वाला वैरिएबल सेट करें. इसके बाद, उस वैरिएबल को अनुरोध में पास किया जा सकता है.
const ( fieldMask = "results.placeId,results.viewport" )
फ़ील्ड पाथ से जुड़ी ज़रूरी बातें
सिर्फ़ वे फ़ील्ड शामिल करें जिनकी आपको जवाब में ज़रूरत है, ताकि आपको सिर्फ़ ज़रूरी फ़ील्ड ही मिलें:
- प्रोसेसिंग में लगने वाला समय कम हो जाता है, ताकि आपको कम इंतज़ार करना पड़े.
- इससे इंतज़ार का समय कम होता है. अगर आपने सभी फ़ील्ड चुने हैं या टॉप लेवल पर सभी फ़ील्ड चुने हैं, तो नए फ़ील्ड जोड़ने और उन्हें आपके जवाब में अपने-आप शामिल करने पर, परफ़ॉर्मेंस में गिरावट आ सकती है.
- इससे रिस्पॉन्स का साइज़ छोटा हो जाता है, जिससे नेटवर्क थ्रूपुट बढ़ जाता है.
फ़ील्ड मास्क बनाने के बारे में ज़्यादा जानकारी के लिए, field_mask.proto देखें.