जियोकोडिंग, पतों ("1600 Amphitheatre Parkway, Mountain View, CA") को भौगोलिक निर्देशांकों (37.423021, -122.083739) में बदलने की प्रोसेस है. इनका इस्तेमाल करके, मार्कर लगाए जा सकते हैं या मैप की पोज़िशन तय की जा सकती है. Google Maps Platform API, जियोकोडिंग के लिए दो तरीके उपलब्ध कराते हैं:
- क्लाइंट-साइड जियोकोडिंग, जो ब्राउज़र में लागू होती है. आम तौर पर, उपयोगकर्ता की कार्रवाई के जवाब में. Maps JavaScript API, ऐसी क्लास उपलब्ध कराता है जो आपके लिए अनुरोध करती हैं. इस तरीके के बारे में, Maps JavaScript API के दस्तावेज़ में बताया गया है.
- एचटीटीपी सर्वर-साइड जियोकोडिंग, जिससे आपका सर्वर, जियोकोड के लिए Google के सर्वर से सीधे क्वेरी कर सकता है. Geocoding API एक ऐसी वेब सेवा है जो यह सुविधा उपलब्ध कराती है. आम तौर पर, इस सेवा को सर्वर-साइड पर चल रहे अन्य कोड के साथ इंटिग्रेट किया जाता है. सर्वर-साइड जियोकोडिंग के बारे में, Geocoding API के दस्तावेज़ में बताया गया है.
क्लाइंट-साइड और सर्वर-साइड जियोकोडिंग के उदाहरण
यहां क्लाइंट-साइड जियोकोडिंग का एक सैंपल दिया गया है. यह किसी पते को जियोकोड करता है, मैप के सेंटर को उस जगह पर ले जाता है, और वहां मैप मार्कर जोड़ता है:
geocoder = new google.maps.Geocoder(); geocoder.geocode({ 'address': address }, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { map.setCenter(results[0].geometry.location); var marker = new google.maps.Marker({ map: map, position: results[0].geometry.location }); } });
ज़्यादा उदाहरणों के लिए, Maps JavaScript API से जुड़े दस्तावेज़ देखें.
यहां Geocoding API v4 में, सर्वर-साइड जियोकोडिंग का अनुरोध करने के लिए, Python का इस्तेमाल करने का एक उदाहरण दिया गया है:
import json import urllib.request address = "1600+Amphitheatre+Parkway,+Mountain+View,+CA" key = "my-key-here" url = f"https://geocode.googleapis.com/v4/geocode/address/{address}" headers = {"X-Goog-Api-Key": key} req = urllib.request.Request(url, headers=headers) with urllib.request.urlopen(req) as response: result = json.loads(response.read().decode("utf-8"))
इससे, यहां दिए गए कॉन्टेंट वाला एक JSON ऑब्जेक्ट बनता है:
{ "results": [ { "place": "places/ChIJiSSC8QK6j4AR98Thup8mqTc", "placeId": "ChIJiSSC8QK6j4AR98Thup8mqTc", "location": { "latitude": 37.4224864, "longitude": -122.0855962 }, "granularity": "ROOFTOP", "viewport": { "low": { "latitude": 37.4211700197085, "longitude": -122.08691558029149 }, "high": { "latitude": 37.4238679802915, "longitude": -122.08421761970851 } }, "bounds": { "low": { "latitude": 37.4221145, "longitude": -122.0860002 }, "high": { "latitude": 37.4228775, "longitude": -122.085133 } }, "formattedAddress": "Google Building 41, 1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA", "postalAddress": { "regionCode": "US", "languageCode": "en", "postalCode": "94043-1351", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1600 Amphitheatre Pkwy" ] }, "addressComponents": [ { "longText": "Google Building 41", "shortText": "Google Building 41", "types": [ "premise" ], "languageCode": "en" }, { "longText": "1600", "shortText": "1600", "types": [ "street_number" ] }, { "longText": "Amphitheatre Parkway", "shortText": "Amphitheatre Pkwy", "types": [ "route" ], "languageCode": "en" }, { "longText": "Mountain View", "shortText": "Mountain View", "types": [ "locality", "political" ], "languageCode": "en" }, { "longText": "Santa Clara County", "shortText": "Santa Clara County", "types": [ "administrative_area_level_2", "political" ], "languageCode": "en" }, { "longText": "California", "shortText": "CA", "types": [ "administrative_area_level_1", "political" ], "languageCode": "en" }, { "longText": "United States", "shortText": "US", "types": [ "country", "political" ], "languageCode": "en" }, { "longText": "94043", "shortText": "94043", "types": [ "postal_code" ] }, { "longText": "1351", "shortText": "1351", "types": [ "postal_code_suffix" ] } ], "types": [ "premise", "street_address" ] } ] }
ज़्यादा उदाहरणों के लिए, Geocoding API v4 की खास जानकारी और पते को जियोकोड करने की गाइड देखें.
कोटा और लागत का हिसाब
इस दस्तावेज़ में बताई गई रणनीतियां, जियोकोडिंग की लागत, कोटा, और अनुरोध संख्या सीमित करने की सुविधा के हिसाब से तय की जाती हैं.
लागत
जियोकोडिंग के अनुरोधों के लिए, हर दिन के कोटा (क्यूपीडी) की सीमाएं लागू नहीं होती हैं. इसके बजाय, जियोकोडिंग के हर अनुरोध के लिए, हर अनुरोध के हिसाब से बिल भेजा जाता है. भले ही, वह अनुरोध ब्राउज़र के ज़रिए क्लाइंट-साइड से किया गया हो या Geocoding API वेब सेवा के ज़रिए सर्वर-साइड से किया गया हो. इस्तेमाल की लागत को मैनेज करने के लिए, इस्तेमाल करने की सीमाएं और कोटा मैनेज करें.
अनुरोध संख्या सीमित करना
जियोकोडिंग सेवा के लिए, अनुरोध संख्या सीमित करने की सुविधा के तहत, हर मिनट 3,000 क्वेरी (क्यूपीएम) की जा सकती हैं. इसमें क्लाइंट-साइड और सर्वर-साइड क्वेरी, दोनों शामिल हैं.
मोबाइल ऐप्लिकेशन की तरह, क्लाइंट-साइड जियोकोडिंग के अनुरोधों को समय-समय पर चलाने पर, आपके अनुरोधों में गड़बड़ियां दिख सकती हैं. ऐसा तब होता है, जब आपके सभी उपयोगकर्ता एक ही समय पर अनुरोध कर रहे हों. उदाहरण के लिए, हर मिनट के एक ही सेकंड पर. इससे बचने के लिए, इनमें से कोई एक तरीका अपनाएं:
- अपने अनुरोधों में रैंडम इंटरवल (जिटर) जोड़ें. पक्का करें कि अनुरोध, आपके सभी उपयोगकर्ताओं के लिए रैंडम हों.
- अगर Android के लिए ऐप्लिकेशन डेवलप किया जा रहा है, तो बार-बार बजने वाले अलार्म का इस्तेमाल करें.
- अगर Android के लिए ऐप्लिकेशन डेवलप किया जा रहा है, तो जगह की जानकारी की सही रणनीति चुनें.
कैश मेमोरी में सेव करना
कैश मेमोरी में सेव करने के बारे में जानने के लिए, Geocoding API की नीतियां देखें.
v4 में सर्वर-साइड बनाम क्लाइंट-साइड आर्किटेक्चर
Geocoding API v4 को सर्वर-टू-सर्वर एपीआई के तौर पर डिज़ाइन किया गया है. इसमें SearchDestinations, GeocodeAddress, GeocodeLocation, और GeocodePlace शामिल हैं. अपने बैकएंड सर्वर से v4 एंडपॉइंट को कॉल करने के कई अहम फ़ायदे हैं:
- हाइपरलोकल अराइवल इंटेलिजेंस:
SearchDestinationsतरीका (POST /v4/geocode/destinations) सिर्फ़ सर्वर-साइड REST या gRPC अनुरोधों का इस्तेमाल करके उपलब्ध होता है. यह बिल्डिंग के एंट्री पॉइंट, रूट किए जा सकने वाले नेविगेशन पॉइंट, बिल्डिंग की आउटलाइन, और आस-पास की ऐसी जगहों की जानकारी दिखाता है जो क्लाइंट-साइड ब्राउज़र जियोकोडर में उपलब्ध नहीं होती हैं. - एपीआई की बेहतर सुरक्षा: सर्वर-साइड कॉल, आपके एपीआई पासकोड और OAuth टोकन को क्लाइंट ब्राउज़र में दिखने से बचाते हैं. एपीआई की सुरक्षा देखें.
- जवाब के फ़ील्ड मास्क: सर्वर-साइड v4 एंडपॉइंट, फ़ील्ड मास्क के साथ काम करते हैं. इससे आपको सिर्फ़ उन फ़ील्ड के लिए अनुरोध करने की सुविधा मिलती है जिनकी ज़रूरत आपके ऐप्लिकेशन को पेलोड के साइज़ और इंतज़ार के समय को कम करने के लिए होती है.
क्लाइंट-साइड ब्राउज़र लुकअप का इस्तेमाल कब करना चाहिए
लाइव कीस्ट्रोक का जवाब देने वाले इंटरैक्टिव ब्राउज़र ऐप्लिकेशन के लिए, क्लाइंट-साइड किसी जगह के शुरुआती अक्षर लिखने पर पूरा नाम सुझाने की सुविधा (उपयोगकर्ता के इनपुट को साफ़ तौर पर समझने और जगह का आईडी पाने के लिए) को SearchDestinations या GeocodePlace के बैकएंड कॉल के साथ जोड़ें. इससे हाइपरलोकल जानकारी या निर्देशांक सुरक्षित तरीके से वापस पाए जा सकते हैं.