खास जानकारी
जियोकोडिंग, पतों को भौगोलिक निर्देशांकों में बदलने की प्रोसेस है. जैसे, "1600 Amphitheatre Parkway, Mountain View, CA" को अक्षांश 37.423021 और देशांतर -122.083739 में बदला जाता है. इन निर्देशांकों का इस्तेमाल, मार्कर लगाने या मैप को सही जगह पर सेट करने के लिए किया जा सकता है.
रिवर्स जियोकोडिंग, भौगोलिक निर्देशांकों को ऐसे पते में बदलने की प्रोसेस है जिसे इंसान पढ़ सके. रिवर्स जियोकोडिंग (पते की जानकारी ढूंढना) लेख पढ़ें.
किसी दिए गए जगह के आईडी के लिए पता ढूंढने के लिए, जियोकोडर का भी इस्तेमाल किया जा सकता है.
Maps JavaScript API, उपयोगकर्ता के इनपुट से डाइनैमिक तरीके से जियोकोडिंग और रिवर्स जियोकोडिंग करने के लिए, Geocoder क्लास उपलब्ध कराता है. अगर आपको स्टैटिक और जाने-पहचाने पतों को जियोकोड करना है, तो Geocoding web service देखें.
अपनी प्रोफ़ाइल बनाना शुरू करें
Maps JavaScript API में जियोकोडिंग सेवा का इस्तेमाल करने से पहले, पक्का करें कि Google Cloud Console में जियोकोडिंग एपीआई चालू हो. यह उसी प्रोजेक्ट में चालू होना चाहिए जिसे आपने Maps JavaScript API के लिए सेट अप किया है.
चालू किए गए एपीआई की सूची देखने के लिए:
- Google Cloud Console पर जाएं.
- कोई प्रोजेक्ट चुनें बटन पर क्लिक करें. इसके बाद, वही प्रोजेक्ट चुनें जिसे आपने Maps JavaScript API के लिए सेट अप किया था. इसके बाद, खोलें पर क्लिक करें.
- डैशबोर्ड पर मौजूद एपीआई की सूची में, Geocoding API ढूंढें.
- अगर आपको सूची में एपीआई दिखता है, तो आपको कोई कार्रवाई करने की ज़रूरत नहीं है. अगर एपीआई सूची में नहीं है, तो
इसे चालू करें:
- पेज पर सबसे ऊपर, API चालू करें को चुनें. इससे लाइब्रेरी टैब दिखेगा. इसके अलावा, बाईं ओर मौजूद मेन्यू से लाइब्रेरी को चुनें.
- Geocoding API खोजें. इसके बाद, नतीजों की सूची से इसे चुनें.
- चालू करें को चुनें. प्रोसेस पूरी होने के बाद, डैशबोर्ड पर मौजूद एपीआई की सूची में Geocoding API दिखता है.
किराया और नीतियां
कीमत
JavaScript Geocoding सेवा की कीमत और इस्तेमाल से जुड़ी नीतियों के बारे में जानने के लिए, Geocoding API के लिए इस्तेमाल और बिलिंग देखें.
नीतियां
जियोकोडिंग सेवा का इस्तेमाल, Geocoding API के लिए बनी नीतियों के मुताबिक होना चाहिए.
जियोकोडिंग के अनुरोध
जियोकोडिंग सेवा को एसिंक्रोनस तरीके से ऐक्सेस किया जाता है, क्योंकि Google Maps API को किसी बाहरी सर्वर पर कॉल करना होता है. इसलिए, अनुरोध पूरा होने पर आपको कॉलबैक तरीका पास करना होगा. यह कॉलबैक तरीका, नतीजे प्रोसेस करता है. ध्यान दें कि जियोकोडर एक से ज़्यादा नतीजे दिखा सकता है.
अपने कोड में Google Maps API की जियोकोडिंग सेवा को ऐक्सेस करने के लिए, google.maps.Geocoder कंस्ट्रक्टर ऑब्जेक्ट का इस्तेमाल करें. Geocoder.geocode() वाला तरीका, जियोकोडिंग सेवा के लिए अनुरोध शुरू करता है. साथ ही, इसमें GeocoderRequest ऑब्जेक्ट लिटरल पास करता है. इस ऑब्जेक्ट लिटरल में, इनपुट शब्द और जवाब मिलने पर लागू होने वाला कॉलबैक तरीका होता है.
GeocoderRequest ऑब्जेक्ट लिटरल में ये फ़ील्ड शामिल होते हैं:
{ address: string, location: LatLng, placeId: string, bounds: LatLngBounds, componentRestrictions: GeocoderComponentRestrictions, region: string }
ज़रूरी पैरामीटर: आपको इनमें से सिर्फ़ एक फ़ील्ड की वैल्यू देनी होगी:
address— वह पता जिसे आपको जियोकोड करना है.
या
location— वहLatLng(याLatLngLiteral) जिसके लिए आपको सबसे सटीक और पढ़ने में आसान पता चाहिए. जियोकोडर, रिवर्स जियोकोड करता है. ज़्यादा जानकारी के लिए, रिवर्स जियोकोडिंग देखें.
या
placeId— यह उस जगह का आईडी होता है जिसके लिए आपको सबसे करीबी और आसानी से पढ़ा जा सकने वाला पता चाहिए. किसी जगह के आईडी के लिए पता वापस पाने के बारे में ज़्यादा जानें.
ज़रूरी नहीं पैरामीटर:
bounds— वहLatLngBoundsजिसमें जियोकोड के नतीजों को ज़्यादा प्रमुखता से दिखाया जाता है.boundsपैरामीटर, जियोकोडर से मिले नतीजों पर सिर्फ़ असर डालेगा, उन्हें पूरी तरह से प्रतिबंधित नहीं करेगा. व्यूपोर्ट बायसिंग के बारे में ज़्यादा जानकारी के लिए, यहां देखें.componentRestrictions— इसका इस्तेमाल, नतीजों को किसी खास इलाके तक सीमित करने के लिए किया जाता है. कॉम्पोनेंट फ़िल्टर करने के बारे में ज़्यादा जानकारी यहां दी गई है.region— यह क्षेत्र का कोड होता है. इसे दो वर्णों वाले (गैर-संख्यात्मक) यूनिकोड क्षेत्र के सबटैग के तौर पर तय किया जाता है. ज़्यादातर मामलों में, ये टैग सीधे तौर पर जाने-पहचाने ccTLD ("टॉप-लेवल डोमेन") की दो वर्णों वाली वैल्यू पर मैप होते हैं.regionपैरामीटर, जियोकोडर से मिले नतीजों पर सिर्फ़ असर डालेगा. हालांकि, इससे जियोकोडर से मिले नतीजों पर पूरी तरह से पाबंदी नहीं लगेगी. क्षेत्र के कोड के हिसाब से पक्षपात के बारे में ज़्यादा जानकारी यहां देखें.extraComputations— इस पैरामीटर के लिए सिर्फ़ADDRESS_DESCRIPTORSवैल्यू इस्तेमाल की जा सकती है. ज़्यादा जानकारी के लिए, पता डिस्क्रिप्टर देखें.fulfillOnZeroResults— जवाब में ZERO_RESULT स्टेटस के बारे में जानकारी दें. ऐसा इसलिए किया जा सकता है, क्योंकि भले ही जियोकोडिंग के नतीजे न हों, लेकिन जवाब के लेवल पर अब भी अन्य फ़ील्ड दिख सकते हैं. ज़्यादा जानकारी के लिए, शून्य नतीजों पर अनुरोध पूरा करना लेख पढ़ें.
जियोकोडिंग के जवाब
जियोकोडिंग सेवा को, जियोकोडर के नतीजे मिलने पर कॉल करने के तरीके की ज़रूरत होती है. इस कॉलबैक को दो पैरामीटर पास करने चाहिए, ताकि results और status कोड को उस क्रम में रखा जा सके.
जियोकोडिंग के नतीजे
GeocoderResult ऑब्जेक्ट, जियोकोडिंग के एक नतीजे को दिखाता है. जियोकोड के अनुरोध पर, कई नतीजे ऑब्जेक्ट मिल सकते हैं:
results[]: { types[]: string, formatted_address: string, address_components[]: { short_name: string, long_name: string, postcode_localities[]: string, types[]: string }, partial_match: boolean, place_id: string, postcode_localities[]: string, geometry: { location: LatLng, location_type: GeocoderLocationType viewport: LatLngBounds, bounds: LatLngBounds } }
इन फ़ील्ड के बारे में यहां बताया गया है:
types[]एक ऐसा कलेक्शन है जो नतीजे में मिले पते के टाइप के बारे में बताता है. इस कलेक्शन में शून्य या उससे ज़्यादा टैग का सेट होता है. ये टैग, नतीजे में दिखाई गई सुविधा के टाइप की पहचान करते हैं. उदाहरण के लिए, "शिकागो" के जियोकोड से "locality" मिलता है. इससे पता चलता है कि "शिकागो" एक शहर है. साथ ही, इससे "political" भी मिलता है. इससे पता चलता है कि यह एक राजनैतिक इकाई है. पते के टाइप और पते के कॉम्पोनेंट के टाइप के बारे में ज़्यादा जानकारी यहां दी गई है.formatted_addressएक स्ट्रिंग है. इसमें इस जगह का पता होता है, ताकि लोग इसे आसानी से पढ़ सकें.आम तौर पर, यह पता डाक पते के बराबर होता है. ध्यान दें कि यूनाइटेड किंगडम जैसे कुछ देशों में, लाइसेंस से जुड़ी पाबंदियों की वजह से, सही पोस्टल पते शेयर करने की अनुमति नहीं है.
फ़ॉर्मैट किया गया पता, एक या उससे ज़्यादा पते के कॉम्पोनेंट से मिलकर बना होता है. उदाहरण के लिए, "111 8th Avenue, New York, NY" पते में ये कॉम्पोनेंट शामिल हैं: "111" (सड़क का नंबर), "8th Avenue" (रास्ता), "New York" (शहर), और "NY" (अमेरिका का राज्य).
फ़ॉर्मैट किए गए पते को प्रोग्राम के हिसाब से पार्स न करें. इसके बजाय, आपको पते के अलग-अलग कॉम्पोनेंट का इस्तेमाल करना चाहिए. एपीआई रिस्पॉन्स में, फ़ॉर्मैट किए गए पते वाले फ़ील्ड के साथ-साथ ये कॉम्पोनेंट भी शामिल होते हैं.
address_components[]एक कैटगरी है, जिसमें इस पते पर लागू होने वाले अलग-अलग कॉम्पोनेंट शामिल हैं.आम तौर पर, पते के हर कॉम्पोनेंट में ये फ़ील्ड शामिल होते हैं:
types[]एक ऐसा कलेक्शन है जो पते के कॉम्पोनेंट के टाइप के बारे में बताता है. इस्तेमाल किए जा सकने वाले टाइप की सूची देखें.long_name, पते के कॉम्पोनेंट का पूरा टेक्स्ट ब्यौरा या नाम है. इसे Geocoder से वापस भेजा जाता है.short_nameपते के कॉम्पोनेंट का छोटा किया गया नाम है. यह तब दिखता है, जब यह उपलब्ध हो. उदाहरण के लिए, अलास्का राज्य के पते के कॉम्पोनेंट में,long_nameकी वैल्यू "अलास्का" औरshort_nameकी वैल्यू "AK" हो सकती है. इसके लिए, दो अक्षरों वाले पोस्टल कोड का इस्तेमाल किया जाता है.
address_components[]ऐरे के बारे में यहां दी गई बातों का ध्यान रखें:- पते के कॉम्पोनेंट के ऐरे में,
formatted_addressसे ज़्यादा कॉम्पोनेंट हो सकते हैं. - इस कैटगरी में, ऐसी सभी राजनैतिक इकाइयां शामिल नहीं होती हैं जिनके पास पता है. हालांकि, इसमें
formatted_addressमें शामिल इकाइयां शामिल होती हैं. किसी खास पते वाली सभी राजनैतिक इकाइयों को फिर से पाने के लिए, आपको रिवर्स जियोकोडिंग का इस्तेमाल करना चाहिए. इसके लिए, अनुरोध में पते के अक्षांश/देशांतर को पैरामीटर के तौर पर पास करें. - यह ज़रूरी नहीं है कि अनुरोधों के बीच, जवाब का फ़ॉर्मैट एक जैसा ही रहे. खास तौर पर,
address_componentsकी संख्या, अनुरोध किए गए पते के हिसाब से अलग-अलग होती है. साथ ही, एक ही पते के लिए समय के साथ बदल सकती है. किसी कॉम्पोनेंट की पोज़िशन को ऐरे में बदला जा सकता है. कॉम्पोनेंट का टाइप बदला जा सकता है. ऐसा हो सकता है कि बाद के जवाब में कोई कॉम्पोनेंट मौजूद न हो.
पते के टाइप और पते के कॉम्पोनेंट के टाइप के बारे में ज़्यादा जानकारी यहां दी गई है.
-
partial_matchका मतलब है कि जियोकोडर ने मूल अनुरोध से पूरी तरह मेल खाने वाला नतीजा नहीं दिया. हालांकि, वह अनुरोध किए गए पते के कुछ हिस्से से मेल खाने वाला नतीजा दे पाया. ऐसा हो सकता है कि आपने पते में स्पेलिंग गलत लिखी हो और/या पता अधूरा हो. इसलिए, हमारा सुझाव है कि आप मूल अनुरोध की जांच करें.पते के कुछ हिस्से का मेल न खाने की समस्या, अक्सर उन सड़कों के पतों के लिए होती है जो अनुरोध में दिए गए इलाके में मौजूद नहीं हैं. जब कोई अनुरोध, एक ही इलाके में मौजूद दो या उससे ज़्यादा जगहों से मेल खाता है, तब भी कुछ नतीजे दिखाए जा सकते हैं. उदाहरण के लिए, "Hillpar St, Bristol, UK" के लिए, हेनरी स्ट्रीट और हेनरीटा स्ट्रीट, दोनों के लिए आंशिक तौर पर मेल खाने वाले नतीजे दिखेंगे. ध्यान दें कि अगर किसी अनुरोध में पते के कॉम्पोनेंट की स्पेलिंग गलत है, तो जियोकोडिंग सेवा, पते का कोई दूसरा सुझाव दे सकती है. इस तरह ट्रिगर किए गए सुझावों को भी आंशिक मिलान के तौर पर मार्क किया जाएगा.
place_idकिसी जगह का यूनीक आइडेंटिफ़ायर होता है. इसका इस्तेमाल, Google के अन्य एपीआई के साथ किया जा सकता है. उदाहरण के लिए, स्थानीय कारोबार की जानकारी पाने के लिए,place_idका इस्तेमाल Google Places API लाइब्रेरी के साथ किया जा सकता है. जैसे, फ़ोन नंबर, कारोबार के खुले होने का समय, उपयोगकर्ताओं की समीक्षाएं वगैरह. जगह के आईडी की खास जानकारी देखें.postcode_localities[]एक ऐसा कलेक्शन है जो किसी पिन कोड में मौजूद सभी इलाकों को दिखाता है. यह सिर्फ़ तब मौजूद होता है, जब नतीजा ऐसा पिन कोड होता है जिसमें कई इलाके शामिल होते हैं.geometryमें यह जानकारी शामिल होती है:locationमें जियोकोड की गई अक्षांश और देशांतर की वैल्यू शामिल होती है. ध्यान दें कि हम इस जगह की जानकारी को फ़ॉर्मैट की गई स्ट्रिंग के तौर पर नहीं, बल्किLatLngऑब्जेक्ट के तौर पर दिखाते हैं.location_typeइस कुकी में बताई गई जगह के बारे में अतिरिक्त डेटा सेव होता है. इन वैल्यू का इस्तेमाल किया जा सकता है:ROOFTOPसे पता चलता है कि जवाब में सटीक जियोकोड शामिल है.RANGE_INTERPOLATEDसे पता चलता है कि खोज के नतीजे में, दो सटीक पॉइंट (जैसे कि चौराहे) के बीच इंटरपोलेट की गई अनुमानित जानकारी (आम तौर पर सड़क पर) दिखाई गई है. आम तौर पर, इंटरपोलेट किए गए नतीजे तब दिखाए जाते हैं, जब किसी सड़क के पते के लिए रूफ़टॉप जियोकोड उपलब्ध नहीं होते.GEOMETRIC_CENTERसे पता चलता है कि लौटाया गया नतीजा, किसी नतीजे का ज्यामितीय केंद्र है. जैसे, पॉलीलाइन (उदाहरण के लिए, कोई सड़क) या पॉलीगॉन (क्षेत्र).APPROXIMATEसे पता चलता है कि दिखाया गया नतीजा अनुमानित है.
viewport, खोज के नतीजे के लिए सुझाए गए व्यूपोर्ट को सेव करता है.bounds(ज़रूरी नहीं)LatLngBoundsको सेव करता है. इसमें, जवाब के तौर पर मिले नतीजे को पूरी तरह से शामिल किया जा सकता है. ध्यान दें कि ये सीमाएं, सुझाई गई व्यूपोर्ट से मेल नहीं खा सकती हैं. (उदाहरण के लिए, सैन फ़्रांसिस्को में फ़ारालोन द्वीप समूह शामिल है. तकनीकी तौर पर, यह शहर का हिस्सा है, लेकिन इसे व्यूपोर्ट में नहीं दिखाया जाना चाहिए.)
Geocoder, ब्राउज़र की पसंदीदा भाषा की सेटिंग या एपीआई JavaScript को language पैरामीटर का इस्तेमाल करके लोड करते समय तय की गई भाषा का इस्तेमाल करके पते दिखाता है. (ज़्यादा जानकारी के लिए,
स्थानीय भाषा में उपलब्ध कराना लेख पढ़ें.)
पते के टाइप और पते के कॉम्पोनेंट के टाइप
जवाब में मौजूद GeocoderResult में मौजूद types[] ऐरे, पते का टाइप दिखाता है. पते के टाइप के उदाहरणों में, सड़क का पता, देश या राजनैतिक इकाई शामिल है. GeocoderAddressComponent में मौजूद types कैटगरी से, पते के हर हिस्से के टाइप के बारे में पता चलता है. उदाहरण के लिए, सड़क का नंबर या देश.
पते कई तरह के हो सकते हैं. टाइप को 'टैग' माना जा सकता है.
उदाहरण के लिए, कई शहरों को political और locality टाइप के हिसाब से टैग किया जाता है.
नीचे दिए गए टाइप काम करते हैं और इन्हें पते के टाइप और पते के कॉम्पोनेंट के टाइप, दोनों ऐरे में दिखाया जाता है:
| पते का प्रकार | ब्यौरा |
|---|---|
street_address |
मोहल्ले का सटीक पता. |
route |
नाम वाला कोई रास्ता (जैसे, "US 101"). |
intersection |
यह एक बड़ा चौराहा होता है. आम तौर पर, यह दो मुख्य सड़कों का चौराहा होता है. |
political |
कोई राजनैतिक इकाई. आम तौर पर, इस तरह के टाइप से किसी नागरिक प्रशासन के बहुभुज का पता चलता है. |
country |
यह राष्ट्रीय राजनैतिक इकाई होती है. आम तौर पर, यह Geocoder से मिलने वाला सबसे बड़ा ऑर्डर टाइप होता है. |
administrative_area_level_1 |
देश के स्तर से नीचे, पहले क्रम की नागरिक इकाई. अमेरिका में, ये प्रशासनिक लेवल राज्य हैं. सभी देशों में ये प्रशासनिक स्तर नहीं होते. ज़्यादातर मामलों में, administrative_area_level_1 छोटे नाम, ISO 3166-2 के सबडिविज़न और अन्य सूचियों से मिलते-जुलते होंगे. हालांकि, इसकी कोई गारंटी नहीं है, क्योंकि जियोकोडिंग के हमारे नतीजे कई तरह के सिग्नल और जगह की जानकारी पर आधारित होते हैं. |
administrative_area_level_2 |
'देश' स्तर से नीचे, दूसरे क्रम की नागरिक इकाई. अमेरिका में, ये प्रशासनिक लेवल काउंटी होते हैं. सभी देशों में ये प्रशासनिक स्तर नहीं होते. |
administrative_area_level_3 |
देश के स्तर से नीचे, तीसरे क्रम की नागरिक इकाई. इस टाइप से, छोटे नागरिक विभाग के बारे में पता चलता है. सभी देशों में ये प्रशासनिक स्तर नहीं होते. |
administrative_area_level_4 |
'देश' स्तर से नीचे, चौथे क्रम की नागरिक इकाई. इस टाइप से, छोटे नागरिक विभाग के बारे में पता चलता है. सभी देशों में ये प्रशासनिक स्तर नहीं होते. |
administrative_area_level_5 |
यह देश के स्तर से नीचे, पांचवें क्रम की नागरिक इकाई होती है. इस टाइप से, छोटे नागरिक विभाग के बारे में पता चलता है. सभी देशों में ये प्रशासनिक स्तर नहीं होते. |
administrative_area_level_6 |
देश के स्तर से नीचे, छठे क्रम की नागरिक इकाई. इस टाइप से, छोटे नागरिक विभाग के बारे में पता चलता है. सभी देशों में ये प्रशासनिक स्तर नहीं होते. |
administrative_area_level_7 |
यह देश के स्तर से नीचे, सातवें क्रम की नागरिक इकाई होती है. इस टाइप से, छोटे नागरिक विभाग के बारे में पता चलता है. सभी देशों में ये प्रशासनिक स्तर नहीं होते. |
colloquial_area |
आम तौर पर इस्तेमाल किया जाने वाला, इकाई का दूसरा नाम. |
locality |
निगमित शहर या टाउन की राजनैतिक इकाई. |
sublocality |
किसी इलाके से नीचे, पहले क्रम की नागरिक इकाई. कुछ जगहों के लिए, आपको इनमें से कोई एक अतिरिक्त टाइप मिल सकता है: sublocality_level_1 से sublocality_level_5. उप-स्थानीयता का हर लेवल, एक नागरिक इकाई होता है. ज़्यादा संख्या का मतलब है कि भौगोलिक क्षेत्र छोटा है. |
neighborhood |
आस-पास की जगह का नाम. |
premise |
किसी जगह का नाम, आम तौर पर किसी इमारत या एक ही नाम वाली इमारतों का समूह. |
subpremise |
परिसर के लेवल से नीचे की कोई ऐसी इकाई जिसका पता दिया जा सकता है. जैसे, अपार्टमेंट, यूनिट या सुइट. |
plus_code |
यह अक्षांश और देशांतर से मिला, जगह की जानकारी का एन्कोड किया गया रेफ़रंस होता है. प्लस कोड का इस्तेमाल, उन जगहों पर मोहल्ले के पतों की जगह किया जा सकता है जहां वे मौजूद नहीं हैं. जैसे, जहां बिल्डिंग के नंबर नहीं हैं या सड़कों के नाम नहीं हैं. ज़्यादा जानकारी के लिए, https://plus.codes पर जाएं. |
postal_code |
देश में डाक भेजने के लिए इस्तेमाल किया जाने वाला पिन कोड. |
natural_feature |
कोई खास प्राकृतिक जगह. |
airport |
हवाई अड्डा. |
park |
किसी पार्क का नाम. |
point_of_interest |
किसी लोकप्रिय जगह का नाम. आम तौर पर, ये "पीओआई" ऐसी स्थानीय इकाइयां होती हैं जिन्हें किसी दूसरी कैटगरी में आसानी से नहीं रखा जा सकता. जैसे, "एम्पायर स्टेट बिल्डिंग" या "एफ़िल टावर". |
टाइप की खाली सूची से पता चलता है कि पते के किसी कॉम्पोनेंट के लिए कोई टाइप मौजूद नहीं है. उदाहरण के लिए, फ़्रांस में Lieu-dit.
ऊपर दी गई जानकारी के अलावा, पते के कॉम्पोनेंट में यहां दिए गए टाइप भी शामिल हो सकते हैं.
ध्यान दें: इस सूची में पूरी जानकारी नहीं है और इसमें बदलाव किया जा सकता है.
ऊपर दी गई जानकारी के अलावा, पते के कॉम्पोनेंट में यहां दिए गए टाइप भी शामिल हो सकते हैं.
| पते के कॉम्पोनेंट का टाइप | ब्यौरा |
|---|---|
floor |
इमारत के पते का फ़्लोर. |
establishment |
आम तौर पर, यह ऐसी जगह होती है जिसे अब तक किसी कैटगरी में नहीं रखा गया है. |
landmark |
आस-पास की कोई जगह, जिसका इस्तेमाल नेविगेशन में मदद पाने के लिए रेफ़रंस के तौर पर किया जाता है. |
point_of_interest |
किसी लोकप्रिय जगह का नाम. |
parking |
पार्किंग की जगह या पार्किंग की सुविधा. |
post_box |
कोई पोस्ट ऑफ़िस बॉक्स. |
postal_town |
यह भौगोलिक क्षेत्रों का ग्रुप होता है. जैसे, locality और sublocality. इसका इस्तेमाल कुछ देशों में डाक पते के लिए किया जाता है. |
room |
इमारत के पते में मौजूद कमरा. |
street_number |
सड़क का सटीक नंबर. |
bus_station, train_station, और transit_station |
बस, ट्रेन या सार्वजनिक परिवहन के स्टॉप की जगह. |
स्टेटस कोड
status कोड इनमें से कोई एक वैल्यू दिखा सकता है:
"OK"से पता चलता है कि कोई गड़बड़ी नहीं हुई है. पते को पार्स कर लिया गया है और कम से कम एक जियोकोड मिला है."ZERO_RESULTS"का मतलब है कि जियोकोड सही है, लेकिन इससे कोई नतीजा नहीं मिला. ऐसा तब हो सकता है, जब जियोकोडर को ऐसाaddressपास किया गया हो जो मौजूद नहीं है."OVER_QUERY_LIMIT"का मतलब है कि आपने तय सीमा से ज़्यादा स्टोरेज का इस्तेमाल किया है."REQUEST_DENIED"का मतलब है कि आपका अनुरोध अस्वीकार कर दिया गया है. वेब पेज को जियोकोडर इस्तेमाल करने की अनुमति नहीं है."INVALID_REQUEST"से आम तौर पर यह पता चलता है कि क्वेरी (address,componentsयाlatlng) मौजूद नहीं है."UNKNOWN_ERROR"का मतलब है कि सर्वर में गड़बड़ी की वजह से अनुरोध को प्रोसेस नहीं किया जा सका. फिर से कोशिश करने पर, अनुरोध पूरा हो सकता है."ERROR"से पता चलता है कि अनुरोध का समय खत्म हो गया है या Google सर्वर से संपर्क करने में कोई समस्या आई है. फिर से कोशिश करने पर, अनुरोध पूरा हो सकता है.
इस उदाहरण में, हम किसी पते को जियोकोड करते हैं और लौटाए गए अक्षांश और देशांतर की वैल्यू पर मार्कर लगाते हैं. ध्यान दें कि हैंडलर को पहचान छिपाने वाले फ़ंक्शन के तौर पर पास किया जाता है.
var geocoder; var map; function initialize() { geocoder = new google.maps.Geocoder(); var latlng = new google.maps.LatLng(-34.397, 150.644); var mapOptions = { zoom: 8, center: latlng } map = new google.maps.Map(document.getElementById('map'), mapOptions); } function codeAddress() { var address = document.getElementById('address').value; geocoder.geocode( { 'address': address}, function(results, status) { if (status == 'OK') { map.setCenter(results[0].geometry.location); var marker = new google.maps.Marker({ map: map, position: results[0].geometry.location }); } else { alert('Geocode was not successful for the following reason: ' + status); } }); } <body onload="initialize()"> <div id="map" style="width: 320px; height: 480px;"></div> <div> <input id="address" type="textbox" value="Sydney, NSW"> <input type="button" value="Encode" onclick="codeAddress()"> </div> </body>
व्यूपोर्ट के हिसाब से नतीजे दिखाना
जियोकोडिंग सेवा को यह निर्देश दिया जा सकता है कि वह दिए गए व्यूपोर्ट (बाउंडिंग बॉक्स के तौर पर दिखाया गया) में मौजूद नतीजों को प्राथमिकता दे. इसके लिए, GeocoderRequest ऑब्जेक्ट लिटरल में bounds पैरामीटर सेट करें, ताकि इस व्यूपोर्ट की सीमाएं तय की जा सकें. ध्यान दें कि बाउंड्री के अंदर के नतीजों को प्राथमिकता देने का मतलब यह नहीं है कि बाउंड्री के बाहर के नतीजों को शामिल नहीं किया जाएगा. अगर बाउंड्री के बाहर ज़्यादा काम के नतीजे मौजूद हैं, तो उन्हें शामिल किया जा सकता है.
उदाहरण के लिए, "Winnetka" के लिए आम तौर पर यह जियोकोड मिलता है. यह शिकागो का एक उपनगर है:
{ "types":["locality","political"], "formatted_address":"Winnetka, IL, USA", "address_components":[{ "long_name":"Winnetka", "short_name":"Winnetka", "types":["locality","political"] },{ "long_name":"Illinois", "short_name":"IL", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "geometry":{ "location":[ -87.7417070, 42.1083080], "location_type":"APPROXIMATE" }, "place_id": "ChIJW8Va5TnED4gRY91Ng47qy3Q" }
हालांकि, लॉस एंजेलिस के सैन फ़र्नांडो वैली के लिए बाउंडिंग बॉक्स तय करने वाले bounds पैरामीटर को सेट करने पर, यह जियोकोड उस जगह के "Winnetka" नाम के इलाके की जानकारी देता है:
{ "types":["sublocality","political"], "formatted_address":"Winnetka, California, USA", "address_components":[{ "long_name":"Winnetka", "short_name":"Winnetka", "types":["sublocality","political"] },{ "long_name":"Los Angeles", "short_name":"Los Angeles", "types":["administrative_area_level_3","political"] },{ "long_name":"Los Angeles", "short_name":"Los Angeles", "types":["administrative_area_level_2","political"] },{ "long_name":"California", "short_name":"CA", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "geometry":{ "location": [34.213171,-118.571022], "location_type":"APPROXIMATE" }, "place_id": "ChIJ0fd4S_KbwoAR2hRDrsr3HmQ" }
क्षेत्र कोड के हिसाब से खोज के नतीजों को बेहतर बनाना
region पैरामीटर का इस्तेमाल करके, Geocoding Service को किसी खास इलाके के हिसाब से नतीजे दिखाने के लिए सेट किया जा सकता है. इस पैरामीटर में, क्षेत्र का कोड शामिल होता है. इसे दो वर्णों वाले (गैर-संख्यात्मक) यूनिकोड क्षेत्र के सबटैग के तौर पर तय किया जाता है. ये टैग, जाने-पहचाने ccTLD ("टॉप-लेवल डोमेन") की दो वर्ण वाली वैल्यू से सीधे तौर पर मैप होते हैं. उदाहरण के लिए, "co.uk" में "uk". कुछ मामलों में, region टैग ISO-3166-1 कोड के साथ भी काम करता है. ये कोड कभी-कभी ccTLD वैल्यू से अलग होते हैं. उदाहरण के लिए, "ग्रेट ब्रिटेन" के लिए "GB".
region पैरामीटर का इस्तेमाल करते समय:
- सिर्फ़ एक देश या इलाके का नाम डालें. एक से ज़्यादा वैल्यू को अनदेखा किया जाता है. इससे अनुरोध पूरा नहीं हो पाता.
- सिर्फ़ दो वर्णों वाले क्षेत्र के सबटैग (यूनिकोड CLDR फ़ॉर्मैट) का इस्तेमाल करें. अन्य सभी इनपुट से गड़बड़ियां होंगी.
- सिर्फ़ उन देशों और इलाकों के लिए यह सुविधा उपलब्ध है जिनके नाम Google Maps Platform की कवरेज की जानकारी में दिए गए हैं.
जियोकोडिंग के अनुरोध, हर उस डोमेन के लिए भेजे जा सकते हैं जहां Google Maps ऐप्लिकेशन में जियोकोडिंग की सुविधा उपलब्ध है. ध्यान दें कि किसी डोमेन को प्राथमिकता देने का मतलब यह नहीं है कि उस डोमेन के बाहर के ज़्यादा काम के नतीजे शामिल नहीं किए जाएंगे. इसका मतलब सिर्फ़ यह है कि उस डोमेन के नतीजों को प्राथमिकता दी जाएगी.
उदाहरण के लिए, "टॉलेडो" के जियोकोड के लिए यह नतीजा मिलता है, क्योंकि जियोकोडिंग सेवा के लिए डिफ़ॉल्ट डोमेन, अमेरिका पर सेट है:
{ "types":["locality","political"], "formatted_address":"Toledo, OH, USA", "address_components":[{ "long_name":"Toledo", "short_name":"Toledo", "types":["locality","political"] },{ "long_name":"Ohio", "short_name":"OH", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "place_id": "ChIJeU4e_C2HO4gRRcM6RZ_IPHw" }
region फ़ील्ड को 'es' (स्पेन) पर सेट करके, "टॉलेडो" के लिए जियोकोड करने पर, स्पेन का यह शहर दिखेगा:
{ "types":["locality","political"], "formatted_address":"Toledo, España", "address_components":[{ "long_name":"Toledo", "short_name":"Toledo", "types":["locality","political"] },{ "long_name":"Toledo", "short_name":"TO", "types":["administrative_area_level_2","political"] },{ "long_name":"Castilla-La Mancha", "short_name":"CM", "types":["administrative_area_level_1","political"] },{ "long_name":"España", "short_name":"ES", "types":["country","political"] }], "place_id": "ChIJ8f21C60Lag0R_q11auhbf8Y" }
कॉम्पोनेंट फ़िल्टर करना
कॉम्पोनेंट फ़िल्टर का इस्तेमाल करके, जियोकोडिंग सेवा को इस तरह सेट किया जा सकता है कि वह किसी खास इलाके के पते के नतीजे दिखाए.
componentRestrictions पैरामीटर में फ़िल्टर तय करें. फ़िल्टर की वैल्यू में, स्पेलिंग ठीक करने और कुछ हद तक मिलते-जुलते शब्दों को ढूंढने के लिए, जियोकोडिंग के अन्य अनुरोधों की तरह ही तरीकों का इस्तेमाल किया जाता है.
जियोकोडर, सिर्फ़ वे नतीजे दिखाता है जो कॉम्पोनेंट के सभी फ़िल्टर से मेल खाते हों. इसका मतलब है कि यह फ़िल्टर की शर्तों का आकलन AND के तौर पर करता है, न कि OR के तौर पर.
कॉम्पोनेंट फ़िल्टर में इनमें से एक या इससे ज़्यादा आइटम होते हैं:
routeकिसी रूट के पूरे नाम या छोटे नाम से मेल खाता है.locality, इलाके और उप-इलाके के टाइप से मेल खाता है.administrativeAreaएडमिनिस्ट्रेटिव एरिया के सभी लेवल से मेल खाता है.postalCodeपिन कोड और पिन कोड के प्रीफ़िक्स से मेल खाता है.country, देश के नाम या दो अक्षरों वाले ISO 3166-1 देश कोड से मेल खाता हो. ध्यान दें: एपीआई, देशों को तय करने के लिए आईएसओ स्टैंडर्ड का पालन करता है. साथ ही, फ़िल्टर करने की सुविधा सबसे अच्छी तरह तब काम करती है, जब देश के आईएसओ कोड का इस्तेमाल किया जाता है.
यहां दिए गए उदाहरण में, country और postalCode के हिसाब से फ़िल्टर करने के लिए,
componentRestrictions पैरामीटर का इस्तेमाल दिखाया गया है:
function codeAddress() { geocoder.geocode({ componentRestrictions: { country: 'AU', postalCode: '2000' } }, function(results, status) { if (status == 'OK') { map.setCenter(results[0].geometry.location); var marker = new google.maps.Marker({ map: map, position: results[0].geometry.location }); } else { window.alert('Geocode was not successful for the following reason: ' + status); } }); }
बिना किसी नतीजे के खोज क्वेरी पूरी करना
रिवर्स जियोकोडिंग के लिए, डिफ़ॉल्ट रूप से प्रॉमिस status=ZERO_RESULTS पर पूरा नहीं होता है. हालांकि, इस मामले में plus_code और address_descriptor के जवाब के लेवल वाले अतिरिक्त फ़ील्ड अब भी भरे जा सकते हैं. अगर fulfillOnZeroResults पैरामीटर के लिए सही वैल्यू दी गई है, तो इस मामले में यह फ़ील्ड भर जाता है. अगर fulfillOnZeroResults पैरामीटर के लिए सही वैल्यू दी जाती है, तो
प्रॉमिस पूरा किया जाता है. साथ ही, अगर ये अतिरिक्त फ़ील्ड मौजूद हैं, तो इन्हें प्रॉमिस से ऐक्सेस किया जा सकता है.
अंटार्कटिका में अक्षांश/देशांतर के लिए, इस व्यवहार का एक उदाहरण यहां दिया गया है.
रिवर्स जियोकोडिंग के नतीजे न होने पर भी, अगर हम fulfillOnZeroResults=true सेट करते हैं, तो हम वादे में प्लस कोड प्रिंट कर सकते हैं.
function addressDescriptorReverseGeocoding() { var latlng = new google.maps.LatLng(-75.290330, 38.653861); geocoder .geocode({ 'location': latlng, 'fulfillOnZeroResults': true, }) .then((response) => { console.log(response.plus_code); }) .catch((error) => { window.alert(`Error`); }); }
Address Descriptors
पते के बारे में ज़्यादा जानकारी देने वाले शब्दों में ऐसी अतिरिक्त जानकारी शामिल होती है जिससे लैंडमार्क और इलाकों का इस्तेमाल करके, किसी जगह के बारे में बताया जा सकता है. इस सुविधा के बारे में जानने के लिए, पते के बारे में खास जानकारी बताने की सुविधा का डेमो देखें.
extraComputations पैरामीटर का इस्तेमाल करके, पते के बारे में बताने वाले शब्दों को चालू किया जा सकता है. जवाब में पते के बारे में जानकारी पाने के लिए, extra_computations=ADDRESS_DESCRIPTORS को जियोकोडिंग के अनुरोध
, रिवर्स जियोकोडिंग के अनुरोध
या जगहों की जियोकोडिंग के अनुरोध
में शामिल करें.
जगहों की जियोकोडिंग का उदाहरण
यहां दी गई क्वेरी में दिल्ली की किसी जगह का पता शामिल है.
function addressDescriptorPlaceIdLookup() { geocoder.geocode({ geocoder.geocode({ 'placeId': 'ChIJyxAX8Bj9DDkRgBfAnBYa66Q', 'extraComputations': ['ADDRESS_DESCRIPTORS'] }, function(results, status) { if (status == 'OK') { console.log(results[0].address_descriptor); } else { window.alert('Geocode was not successful for the following reason: ' + status); } }); }
रिवर्स जियोकोडिंग का उदाहरण
इस क्वेरी में दिल्ली की किसी जगह के अक्षांश/देशांतर की वैल्यू शामिल है.
function addressDescriptorReverseGeocoding() { var latlng = new google.maps.LatLng(28.640964,77.235875); geocoder .geocode({ 'location': latlng, 'extraComputations': ["ADDRESS_DESCRIPTORS"], }) .then((response) => { console.log(response.address_descriptor); }) .catch((error) => { window.alert(`Error`); }); }
पते के बारे में खास जानकारी देने वाले एलिमेंट का उदाहरण
address_descriptor का एक उदाहरण यहां दिया गया है.
{ "address_descriptor" : { "areas" : [ { "containment" : "OUTSKIRTS", "display_name" : { "language_code" : "en", "text" : "Turkman Gate" }, "place_id" : "ChIJ_7LLvyb9DDkRMKKxP9YyXgs" }, { "containment" : "OUTSKIRTS", "display_name" : { "language_code" : "en", "text" : "Chandni Chowk" }, "place_id" : "ChIJWcXciBr9DDkRUb4dCDykTwI" }, { "containment" : "NEAR", "display_name" : { "language_code" : "en", "text" : "Katar Ganj" }, "place_id" : "ChIJH3cWUyH9DDkRaw-9CjvcRvY" } ], "landmarks" : [ { "display_name" : { "language_code" : "en", "text" : "Delite Cinema" }, "straight_line_distance_meters" : 29.9306755065918, "place_id" : "ChIJLfiYDCT9DDkROoEa7NdupUM", "travel_distance_meters" : 418.7794799804688, "spatial_relationship" : "ACROSS_THE_ROAD", "types" : [ "establishment", "movie_theater", "point_of_interest" ] }, { "display_name" : { "language_code" : "en", "text" : "YES Bank" }, "straight_line_distance_meters" : 66.83731079101562, "place_id" : "ChIJFYHM3yb9DDkRRKGkZl2mpSQ", "travel_distance_meters" : 489.0340270996094, "spatial_relationship" : "DOWN_THE_ROAD", "types" : [ "bank", "establishment", "finance", "point_of_interest" ] }, { "display_name" : { "language_code" : "en", "text" : "UCO Bank" }, "straight_line_distance_meters" : 25.38849639892578, "place_id" : "ChIJ-c6_wCb9DDkRjIk1LeqRtGM", "travel_distance_meters" : 403.2246398925781, "spatial_relationship" : "ACROSS_THE_ROAD", "types" : [ "atm", "bank", "establishment", "finance", "point_of_interest" ] }, { "display_name" : { "language_code" : "en", "text" : "Delhi By Cycle Meeting Point" }, "straight_line_distance_meters" : 44.02867126464844, "place_id" : "ChIJNxVfkSb9DDkRJD22l-eGFdM", "travel_distance_meters" : 97.41281890869141, "spatial_relationship" : "AROUND_THE_CORNER", "types" : [ "establishment", "point_of_interest", "tourist_attraction", "travel_agency" ] }, { "display_name" : { "language_code" : "en", "text" : "Axis Bank Branch" }, "straight_line_distance_meters" : 102.3495178222656, "place_id" : "ChIJr3uaDCT9DDkR8roHTVSn1x4", "travel_distance_meters" : 330.8566284179688, "spatial_relationship" : "DOWN_THE_ROAD", "types" : [ "bank", "establishment", "finance", "point_of_interest" ] } ] } }
हर address_descriptor ऑब्जेक्ट में दो कलेक्शन होते हैं: landmarks और areas. landmarks ऐरे में ज़्यादा से ज़्यादा पांच नतीजे होते हैं. इनकी रैंकिंग, अनुरोध किए गए कोऑर्डिनेट से दूरी, लैंडमार्क की मौजूदगी, और उसकी दृश्यता के हिसाब से की जाती है. लैंडमार्क के हर नतीजे में ये वैल्यू शामिल होती हैं:
place_id, लैंडमार्क के नतीजे का प्लेस आईडी है. जगह के आईडी की खास जानकारी देखें.display_name, लैंडमार्क का डिसप्ले नेम है. इसमेंlanguage_codeऔरtextशामिल हैं.straight_line_distance_meters, इनपुट किए गए निर्देशांक और लैंडमार्क के नतीजे के बीच की दूरी है. यह दूरी मीटर में होती है.travel_distance_meters, सड़क नेटवर्क का इस्तेमाल करके तय की गई दूरी है. यह दूरी मीटर में होती है. इसमें इनपुट किए गए कोऑर्डिनेट और लैंडमार्क के नतीजे के बीच की दूरी को मापा जाता है. इसमें सड़क से जुड़ी पाबंदियों को अनदेखा किया जाता है.spatial_relationship, इनपुट किए गए निर्देशांक और लैंडमार्क के नतीजे के बीच अनुमानित संबंध है:- अगर इनमें से कोई भी शर्त पूरी नहीं होती है, तो डिफ़ॉल्ट संबंध
"NEAR"होता है. "WITHIN"तब, जब इनपुट कोऑर्डिनेट, लैंडमार्क से जुड़े स्ट्रक्चर की सीमाओं के अंदर हो."BESIDE"जब इनपुट किया गया कोऑर्डिनेट, लैंडमार्क या लैंडमार्क के ऐक्सेस पॉइंट के ठीक बगल में हो."ACROSS_THE_ROAD"जब इनपुट किया गया कोऑर्डिनेट, रास्ते के दूसरी ओर मौजूद लैंडमार्क के ठीक सामने हो."DOWN_THE_ROAD"तब, जब इनपुट कोऑर्डिनेट, लैंडमार्क के रास्ते पर हो, लेकिन"BESIDES"या"ACROSS_THE_ROAD"न हो."AROUND_THE_CORNER"जब इनपुट कोऑर्डिनेट, लैंडमार्क के लंबवत रास्ते पर हो (सिर्फ़ एक बार मुड़ने की अनुमति है)."BEHIND"जब इनपुट किया गया कोऑर्डिनेट, लैंडमार्क के आस-पास हो, लेकिन उसके ऐक्सेस पॉइंट से दूर हो.types, लैंडमार्क के जगह के टाइप हैं.
areas ऑब्जेक्ट में ज़्यादा से ज़्यादा तीन जवाब होते हैं. साथ ही, यह सिर्फ़ उन जगहों के बारे में जानकारी देता है जो छोटे इलाकों को दिखाती हैं. जैसे, आस-पास के इलाके, उप-स्थानीयताएं, और बड़े कॉम्प्लेक्स. जिन इलाकों में अनुरोध किया गया निर्देशांक मौजूद है उन्हें सबसे पहले दिखाया जाता है. साथ ही, उन्हें सबसे छोटे से लेकर सबसे बड़े के क्रम में लगाया जाता है. हर areas नतीजे में ये वैल्यू शामिल होती हैं:
place_id, इलाके के नतीजों का प्लेस आईडी है. जगह के आईडी की खास जानकारी देखें.display_name, इलाके का डिसप्ले नेम है. इसमेंlanguage_codeऔरtextशामिल हैं.containment, इनपुट कोऑर्डिनेट और क्षेत्रों के नतीजे के बीच, अनुमानित कंटेनमेंट रिलेशनशिप है:- अगर इनमें से कोई भी शर्त पूरी नहीं होती है, तो डिफ़ॉल्ट संबंध
"NEAR"होता है. "WITHIN", जब इनपुट किया गया कोऑर्डिनेट, इलाके के बीच के हिस्से के आस-पास हो."OUTSKIRTS"जब इनपुट कोऑर्डिनेट, इलाके के किनारे के आस-पास हो.
Address Descriptor Coverage
भारत में पते के बारे में खास जानकारी बताने की सुविधा, अब सामान्य रूप से उपलब्ध है. भारत में इस सुविधा के लिए कोई अतिरिक्त शुल्क नहीं लिया जाता. साथ ही, इसका इस्तेमाल मौजूदा Geocoding (India) Essentials SKU प्लान के तहत किया जाता है.
सुझाव/राय दें या शिकायत करें
यह सुविधा सभी देशों/इलाकों में उपलब्ध है. यह भारत के लिए सामान्य रूप से उपलब्ध है. साथ ही, अन्य सभी देशों/इलाकों के लिए यह एक्सपेरिमेंट के तौर पर उपलब्ध है. हमें आपके सुझाव/राय/शिकायत का इंतज़ार रहेगा:
- भारत में आने वाली समस्याओं के लिए, सहायता टीम से संपर्क करें.
- एक्सपेरिमेंट के तौर पर रिलीज़ की गई इस सुविधा के बारे में सुझाव/राय देने या शिकायत करने के लिए, हमें address-descriptors-feedback@google.com पर ईमेल करें.
- ज़्यादा जानकारी के लिए, पते के डिस्क्रिप्टर की कवरेज की जानकारी देखें.
रिवर्स जियोकोडिंग (पते की जानकारी ढूंढना)
जियोकोडिंग का मतलब आम तौर पर, किसी पते को मैप पर मौजूद जगह में बदलना होता है. इसके उलट, मैप पर मौजूद किसी जगह की जानकारी को ऐसे पते में बदलने की प्रोसेस जिसे इंसान आसानी से पढ़ सके, रिवर्स जियोकोडिंग कहलाती है.
टेक्स्ट के तौर पर address देने के बजाय, location पैरामीटर में कॉमा लगाकर अलग किया गया अक्षांश/देशांतर का जोड़ा दें.
यहां दिए गए उदाहरण में, अक्षांश/देशांतर की वैल्यू को जियोकोड किया गया है. साथ ही, मैप को उस जगह पर सेंटर किया गया है. इससे, फ़ॉर्मैट किए गए पते के साथ जानकारी वाली विंडो खुल जाती है:
TypeScript
let marker; async function initMap() { // Request the needed libraries. const [{ Map, InfoWindow }, { Geocoder }, { AdvancedMarkerElement }] = await Promise.all([ google.maps.importLibrary( 'maps' ) as Promise<google.maps.MapsLibrary>, google.maps.importLibrary( 'geocoding' ) as Promise<google.maps.GeocodingLibrary>, google.maps.importLibrary( 'marker' ) as Promise<google.maps.MarkerLibrary>, ]); // Get the gmp-map element. const mapElement = document.querySelector( 'gmp-map' ) as google.maps.MapElement; // Get the inner map. const innerMap = mapElement.innerMap; // Get the latlng input box. const latLngQuery = document.getElementById('latlng') as HTMLInputElement; // Get the submit button. const submitButton = document.getElementById('submit') as HTMLElement; // Set the cursor to crosshair. innerMap.setOptions({ draggableCursor: 'crosshair', zoom: 13, }); // Create a marker for re-use. marker = new AdvancedMarkerElement({ map: innerMap, }); const geocoder = new Geocoder(); const infowindow = new InfoWindow(); // Add a click event listener to the submit button. submitButton.addEventListener('click', () => { geocodeLatLng(geocoder, innerMap, infowindow); }); // Add a click event listener to the map. innerMap.addListener('click', (event) => { latLngQuery.value = `${event.latLng.lat()}, ${event.latLng.lng()}`; geocodeLatLng(geocoder, innerMap, infowindow); }); // Make an initial request upon loading. geocodeLatLng(geocoder, innerMap, infowindow); } async function geocodeLatLng( geocoder: google.maps.Geocoder, map: google.maps.Map, infowindow: google.maps.InfoWindow ) { const input = (document.getElementById('latlng') as HTMLInputElement).value; const latlngStr = input.split(',', 2); const latlng = { lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1]), }; geocoder .geocode({ location: latlng }) .then((response) => { if (response.results[0]) { marker.position = latlng; map.setCenter(latlng); infowindow.setContent(response.results[0].formatted_address); infowindow.open(map, marker); } else { window.alert('No results found'); } }) .catch((e) => window.alert('Geocoder failed due to: ' + e)); } initMap();
JavaScript
let marker; async function initMap() { // Request the needed libraries. const [{ Map, InfoWindow }, { Geocoder }, { AdvancedMarkerElement }] = await Promise.all([ google.maps.importLibrary('maps'), google.maps.importLibrary('geocoding'), google.maps.importLibrary('marker'), ]); // Get the gmp-map element. const mapElement = document.querySelector('gmp-map'); // Get the inner map. const innerMap = mapElement.innerMap; // Get the latlng input box. const latLngQuery = document.getElementById('latlng'); // Get the submit button. const submitButton = document.getElementById('submit'); // Set the cursor to crosshair. innerMap.setOptions({ draggableCursor: 'crosshair', zoom: 13, }); // Create a marker for re-use. marker = new AdvancedMarkerElement({ map: innerMap, }); const geocoder = new Geocoder(); const infowindow = new InfoWindow(); // Add a click event listener to the submit button. submitButton.addEventListener('click', () => { geocodeLatLng(geocoder, innerMap, infowindow); }); // Add a click event listener to the map. innerMap.addListener('click', (event) => { latLngQuery.value = `${event.latLng.lat()}, ${event.latLng.lng()}`; geocodeLatLng(geocoder, innerMap, infowindow); }); // Make an initial request upon loading. geocodeLatLng(geocoder, innerMap, infowindow); } async function geocodeLatLng(geocoder, map, infowindow) { const input = document.getElementById('latlng').value; const latlngStr = input.split(',', 2); const latlng = { lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1]), }; geocoder .geocode({ location: latlng }) .then((response) => { if (response.results[0]) { marker.position = latlng; map.setCenter(latlng); infowindow.setContent(response.results[0].formatted_address); infowindow.open(map, marker); } else { window.alert('No results found'); } }) .catch((e) => window.alert('Geocoder failed due to: ' + e)); } initMap();
सैंपल आज़माएं
ध्यान दें कि पिछले उदाहरण में, हमने results[0] को चुनकर पहला नतीजा दिखाया था. रिवर्स जियोकोडर अक्सर एक से ज़्यादा नतीजे दिखाता है. जियोकोड किए गए पते सिर्फ़ डाक पते नहीं होते, बल्कि किसी जगह को भौगोलिक तौर पर नाम देने का कोई भी तरीका होता है. उदाहरण के लिए, शिकागो शहर में किसी पॉइंट को जियोकोड करते समय, जियोकोड किए गए पॉइंट को सड़क का पता, शहर (शिकागो), राज्य (इलिनॉय) या देश (अमेरिका) के तौर पर लेबल किया जा सकता है. ये सभी पते, जियोकोडर के लिए हैं. रिवर्स जियोकोडर, ये सभी नतीजे दिखाता है.
रिवर्स जियोकोडर, राजनैतिक इकाइयों (देश, प्रांत, शहर, और मोहल्ले), सड़क के पतों, और पिन कोड से मेल खाता है.
यहां उन पतों की सूची का उदाहरण दिया गया है जो ऊपर दी गई क्वेरी से मिल सकते हैं:
results[0].formatted_address: "277 Bedford Ave, Brooklyn, NY 11211, USA" results[1].formatted_address: "Grand St/Bedford Av, Brooklyn, NY 11211, USA" results[2].formatted_address: "Williamsburg, Brooklyn, NY, USA" results[3].formatted_address: "Brooklyn, NY, USA" results[4].formatted_address: "New York, NY, USA" results[5].formatted_address: "Brooklyn, NY 11211, USA" results[6].formatted_address: "Kings County, NY, USA" results[7].formatted_address: "New York-Northern New Jersey-Long Island, NY-NJ-PA, USA" results[8].formatted_address: "New York Metropolitan Area, USA" results[9].formatted_address: "New York, USA"
पतों को सबसे ज़्यादा मिलते-जुलते से लेकर सबसे कम मिलते-जुलते क्रम में दिखाया जाता है. आम तौर पर, सटीक पते को सबसे अहम नतीजे के तौर पर दिखाया जाता है. इस मामले में भी ऐसा ही हुआ है.
ध्यान दें कि हम अलग-अलग तरह के पते दिखाते हैं. इनमें सबसे सटीक गली का पता और कम सटीक राजनैतिक इकाइयां, जैसे कि आस-पड़ोस, शहर, काउंटी, राज्य वगैरह शामिल हैं. अगर आपको किसी सामान्य पते से मिलान करना है, तो results[].types फ़ील्ड की जांच करें.
ध्यान दें: रिवर्स जियोकोडिंग कोई सटीक विज्ञान नहीं है. जियोकोडर, एक तय सीमा के अंदर, पते के हिसाब से सबसे सटीक जगह का पता लगाने की कोशिश करेगा.
किसी जगह के आईडी के लिए पता पाना
किसी जगह के आईडी का पता ढूंढने के लिए, placeId एट्रिब्यूट की वैल्यू दें. जगह का आईडी, एक यूनीक आइडेंटिफ़ायर होता है. इसका इस्तेमाल Google के अन्य एपीआई के साथ किया जा सकता है. उदाहरण के लिए, स्नैप किए गए पॉइंट का पता पाने के लिए, Roads API से मिले placeId का इस्तेमाल किया जा सकता है. जगह के आईडी के बारे में ज़्यादा जानने के लिए, जगह के आईडी की खास जानकारी देखें.
placeId उपलब्ध कराने पर, अनुरोध में इनमें से कोई भी फ़ील्ड शामिल नहीं किया जा सकता:
addresslatLnglocationcomponentRestrictions
यहां दिए गए उदाहरण में, जगह का आईडी स्वीकार किया जाता है. इसके बाद, उससे जुड़ा पता ढूंढा जाता है और मैप को उस जगह पर फ़ोकस किया जाता है. साथ ही, यह जानकारी देने वाली एक विंडो भी दिखाता है. इसमें जगह का फ़ॉर्मैट किया गया पता दिखता है:
TypeScript
// Initialize the map. function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 8, center: { lat: 40.72, lng: -73.96 }, } ); const geocoder = new google.maps.Geocoder(); const infowindow = new google.maps.InfoWindow(); (document.getElementById("submit") as HTMLElement).addEventListener( "click", () => { geocodePlaceId(geocoder, map, infowindow); } ); } // This function is called when the user clicks the UI button requesting // a geocode of a place ID. function geocodePlaceId( geocoder: google.maps.Geocoder, map: google.maps.Map, infowindow: google.maps.InfoWindow ) { const placeId = (document.getElementById("place-id") as HTMLInputElement) .value; geocoder .geocode({ placeId: placeId }) .then(({ results }) => { if (results[0]) { map.setZoom(11); map.setCenter(results[0].geometry.location); const marker = new google.maps.Marker({ map, position: results[0].geometry.location, }); infowindow.setContent(results[0].formatted_address); infowindow.open(map, marker); } else { window.alert("No results found"); } }) .catch((e) => window.alert("Geocoder failed due to: " + e)); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// Initialize the map. function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 8, center: { lat: 40.72, lng: -73.96 }, }); const geocoder = new google.maps.Geocoder(); const infowindow = new google.maps.InfoWindow(); document.getElementById("submit").addEventListener("click", () => { geocodePlaceId(geocoder, map, infowindow); }); } // This function is called when the user clicks the UI button requesting // a geocode of a place ID. function geocodePlaceId(geocoder, map, infowindow) { const placeId = document.getElementById("place-id").value; geocoder .geocode({ placeId: placeId }) .then(({ results }) => { if (results[0]) { map.setZoom(11); map.setCenter(results[0].geometry.location); const marker = new google.maps.Marker({ map, position: results[0].geometry.location, }); infowindow.setContent(results[0].formatted_address); infowindow.open(map, marker); } else { window.alert("No results found"); } }) .catch((e) => window.alert("Geocoder failed due to: " + e)); } window.initMap = initMap;