खास जानकारी
जियोकोडिंग, पतों को भौगोलिक निर्देशांक में बदलने की प्रोसेस है. जैसे, "1600 Amphitheatre Parkway, Mountain View, CA" को अक्षांश 37.423021 और देशांतर -122.083739 में बदलना. इन निर्देशांकों का इस्तेमाल, मार्कर डालने या मैप की जगह तय करने के लिए किया जा सकता है.
रिवर्स जियोकोडिंग, भौगोलिक निर्देशांकों को ऐसे पते में बदलने की प्रोसेस है जिसे इंसान पढ़ सके. रिवर्स जियोकोडिंग (पता लुकअप) देखें.
किसी दिए गए जगह के आईडी का पता ढूंढने के लिए भी, जियोकोडर का इस्तेमाल किया जा सकता है.
Maps JavaScript API, उपयोगकर्ता के इनपुट से डाइनैमिक तौर पर जियोकोडिंग और रिवर्स जियोकोडिंग करने के लिए, Geocoder क्लास उपलब्ध कराता है. अगर आपको स्थिर और पहले से मौजूद पतों को जियोकोड करना है, तो जियोकोडिंग वेब सेवा देखें.
शुरू करना
Maps JavaScript API में जियोकोडिंग सेवा का इस्तेमाल करने से पहले, पक्का करें कि Google Cloud Console में Geocoding API को चालू किया गया है. यह सुविधा उसी प्रोजेक्ट में चालू है जिसे आपने Maps JavaScript API के लिए सेट अप किया है.
चालू किए गए एपीआई की सूची देखने के लिए:
- Google Cloud Console पर जाएं.
- प्रोजेक्ट चुनें बटन पर क्लिक करें. इसके बाद, वह प्रोजेक्ट चुनें जिसे आपने Maps JavaScript API के लिए सेट अप किया है. इसके बाद, खोलें पर क्लिक करें.
- डैशबोर्ड पर एपीआई की सूची में, Geocoding API ढूंढें.
- अगर आपको सूची में एपीआई दिखता है, तो इसका मतलब है कि आपका काम हो गया है. अगर एपीआई सूची में नहीं है, तो इसे चालू करें:
- लाइब्रेरी टैब देखने के लिए, पेज पर सबसे ऊपर, एपीआई चालू करें चुनें. इसके अलावा, बाईं ओर दिए गए मेन्यू से लाइब्रेरी को भी चुना जा सकता है.
- Geocoding API खोजें. इसके बाद, नतीजों की सूची से उसे चुनें.
- चालू करें को चुनें. प्रोसेस पूरी होने के बाद, डैशबोर्ड पर एपीआई की सूची में Geocoding API दिखेगा.
कीमत और नीतियां
कीमत
Maps, रास्तों, और जगहों की जानकारी के लिए, 16 जुलाई, 2018 से, 'इस्तेमाल के हिसाब से पैसे चुकाएं' वाला नया प्लान लागू हो गया है. JavaScript जियोकोडिंग सेवा के इस्तेमाल के लिए, कीमत और इस्तेमाल की नई सीमाओं के बारे में ज़्यादा जानने के लिए, 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[]
एक ऐरे है, जो दिखाता है कि नतीजे में मिले पते का टाइप क्या है. इस कलेक्शन में शून्य या एक से ज़्यादा टैग का सेट होता है, जो नतीजे में दिखने वाली सुविधा के टाइप की पहचान करता है. उदाहरण के लिए, "मुंबई" के लिए, जियोकोड "इलाका" दिखाता है. इससे पता चलता है कि "मुंबई" एक शहर है. साथ ही, यह "राजनैतिक" भी दिखाता है. इससे पता चलता है कि यह एक राजनैतिक इकाई है. पते के टाइप और पते के कॉम्पोनेंट के टाइप के बारे में ज़्यादा जानकारी देखें.formatted_address
एक ऐसी स्ट्रिंग है जिसमें इस जगह का ऐसा पता होता है जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है.आम तौर पर, यह पता डाक पते के बराबर होता है. ध्यान दें कि लाइसेंस से जुड़ी पाबंदियों की वजह से, कुछ देशों, जैसे कि यूनाइटेड किंगडम में, असली डाक पते शेयर करने की अनुमति नहीं है.
फ़ॉर्मैट किया गया पता, लॉजिकल तरीके से एक या उससे ज़्यादा पते कॉम्पोनेंट से मिलकर बनता है. उदाहरण के लिए, पते "111 8th Avenue, New York, NY" में ये कॉम्पोनेंट शामिल हैं: "111" (सड़क का नंबर), "8th Avenue" (रास्ता), "New York" (शहर) और "NY" (अमेरिका का राज्य).
फ़ॉर्मैट किए गए पते को प्रोग्राम के हिसाब से पार्स न करें. इसके बजाय, आपको पते के अलग-अलग कॉम्पोनेंट का इस्तेमाल करना चाहिए, जिसे फ़ॉर्मैट किए गए पते के फ़ील्ड के साथ-साथ, एपीआई के रिस्पॉन्स में शामिल किया जाता है.
address_components[]
एक कलेक्शन है, जिसमें इस पते पर लागू होने वाले अलग-अलग कॉम्पोनेंट शामिल होते हैं.आम तौर पर, पते के हर कॉम्पोनेंट में ये फ़ील्ड होते हैं:
types[]
एक कलेक्शन है, जो पता कॉम्पोनेंट का टाइप बताता है. इस्तेमाल किए जा सकने वाले टाइप की सूची देखें.long_name
, पते के कॉम्पोनेंट का पूरा ब्यौरा या उसका नाम होता है, जो जियोकोडर दिखाता है.short_name
, पते के कॉम्पोनेंट का छोटा नाम होता है. हालांकि, यह नाम सिर्फ़ तब दिखता है, जब यह उपलब्ध हो. उदाहरण के लिए, अलास्का राज्य के पते के कॉम्पोनेंट में, "Alaska" के तौर परlong_name
और दो अक्षरों वाले डाक संक्षिप्त नाम का इस्तेमाल करके, "AK" के तौर परshort_name
हो सकता है.
address_components[]
ऐरे के बारे में इन बातों का ध्यान रखें:- पते के कॉम्पोनेंट के कलेक्शन में,
formatted_address
से ज़्यादा कॉम्पोनेंट हो सकते हैं. formatted_address
में शामिल राजनैतिक इकाइयों के अलावा, कैटगरी में उन सभी राजनैतिक इकाइयों को शामिल करना ज़रूरी नहीं है जिनका पता मौजूद है. किसी खास पते वाली सभी राजनैतिक इकाइयों को पाने के लिए, आपको रिवर्स जियोकोडिंग का इस्तेमाल करना चाहिए. इसके लिए, अनुरोध के पैरामीटर के तौर पर पते के अक्षांश/देशांतर को पास करें.- यह ज़रूरी नहीं है कि एक अनुरोध के जवाब का फ़ॉर्मैट, दूसरे अनुरोध के जवाब के फ़ॉर्मैट से मेल खाए. खास तौर पर, अनुरोध किए गए पते के आधार पर
address_components
की संख्या अलग-अलग होती है. साथ ही, एक ही पते के लिए समय के साथ यह संख्या बदल सकती है. कोई कॉम्पोनेंट, कलेक्शन में अपनी जगह बदल सकता है. कॉम्पोनेंट का टाइप बदल सकता है. हो सकता है कि बाद में मिलने वाले जवाब में कोई कॉम्पोनेंट मौजूद न हो.
पते के टाइप और पते के कॉम्पोनेंट के टाइप के बारे में ज़्यादा जानकारी यहां देखें.
-
partial_match
से पता चलता है कि जियोकोडर ने मूल अनुरोध के लिए, एग्ज़ैक्ट मैच नहीं दिया. हालांकि, वह अनुरोध किए गए पते के कुछ हिस्से से मैच कर सका. आपके पास, मूल अनुरोध की जांच करने का विकल्प है. इससे आपको पता चलेगा कि उसमें वर्तनी की गड़बड़ियां हैं या/और पता अधूरा है.आम तौर पर, सड़क के ऐसे पतों के लिए कुछ हद तक मैच मिलते हैं जो अनुरोध में बताई गई जगह में मौजूद नहीं होते. जब कोई अनुरोध, एक ही इलाके में दो या उससे ज़्यादा जगहों से मैच होता है, तो कुछ हद तक मैच होने वाली जगहों की जानकारी भी दी जा सकती है. उदाहरण के लिए, "Hillpar St, Bristol, UK" से, हेनरी स्ट्रीट और हेनरीटा स्ट्रीट, दोनों के लिए कुछ हद तक मैच करने वाले नतीजे मिलेंगे. ध्यान दें कि अगर किसी अनुरोध में पते के किसी कॉम्पोनेंट को गलत तरीके से लिखा गया है, तो जियोकोडिंग सेवा किसी अन्य पते का सुझाव दे सकती है. इस तरह से ट्रिगर किए गए सुझावों को भी कुछ हद तक मैच करने वाले के तौर पर मार्क किया जाएगा.
place_id
किसी जगह का यूनीक आइडेंटिफ़ायर होता है. इसका इस्तेमाल, Google के अन्य एपीआई के साथ किया जा सकता है. उदाहरण के लिए, Google Places API की लाइब्रेरी के साथplace_id
का इस्तेमाल करके, किसी स्थानीय कारोबार की जानकारी पाई जा सकती है. जैसे, फ़ोन नंबर, कारोबार के खुले होने का समय, उपयोगकर्ताओं की समीक्षाएं वगैरह. जगह की जानकारी देने वाले आईडी के बारे में खास जानकारी देखें.postcode_localities[]
एक कलेक्शन है, जिसमें पिन कोड में मौजूद सभी जगहों की जानकारी होती है. यह सिर्फ़ तब दिखता है, जब नतीजा एक ऐसा पिन कोड हो जिसमें एक से ज़्यादा जगहें शामिल हों.geometry
में यह जानकारी शामिल होती है:location
में, भौगोलिक कोड वाली अक्षांश और देशांतर की वैल्यू शामिल होती है. ध्यान दें कि हम इस जगह की जानकारी कोLatLng
ऑब्जेक्ट के तौर पर दिखाते हैं, न कि फ़ॉर्मैट की गई स्ट्रिंग के तौर पर.location_type
, बताई गई जगह के बारे में अतिरिक्त डेटा सेव करता है. फ़िलहाल, ये वैल्यू इस्तेमाल की जा सकती हैं:ROOFTOP
से पता चलता है कि दिखाए गए नतीजे में सटीक जियोकोड दिखता है.RANGE_INTERPOLATED
से पता चलता है कि दिखाया गया नतीजा, आम तौर पर सड़क पर, दो सटीक बिंदुओं (जैसे कि चौराहे) के बीच के अनुमानित बिंदु को दिखाता है. आम तौर पर, इंटरपोलेशन वाले नतीजे तब दिखाए जाते हैं, जब सड़क के पते के लिए, रूफ़टॉप जियोकोड उपलब्ध न हों.GEOMETRIC_CENTER
से पता चलता है कि दिखाया गया नतीजा, किसी नतीजे का ज्यामितीय केंद्र है. जैसे, कोई पॉलीलाइन (उदाहरण के लिए, कोई सड़क) या पॉलीगॉन (इलाका).APPROXIMATE
से पता चलता है कि मिला नतीजा अनुमानित है.
viewport
, दिखाए गए नतीजे के लिए सुझाया गया व्यूपोर्ट सेव करता है.bounds
(ज़रूरी नहीं है)LatLngBounds
को सेव करता है, जिसमें दिखाए गए नतीजे को पूरी तरह शामिल किया जा सकता है. ध्यान दें कि हो सकता है कि ये सीमाएं, सुझाए गए व्यूपोर्ट से मेल न खाएं. (उदाहरण के लिए, सैन फ़्रांसिस्को में फ़ैरालोन द्वीप शामिल हैं, जो तकनीकी तौर पर शहर का हिस्सा हैं, लेकिन उन्हें व्यूपोर्ट में नहीं दिखाया जाना चाहिए.)
जियोकोडर, ब्राउज़र की पसंदीदा भाषा सेटिंग का इस्तेमाल करके पते दिखाएगा. इसके अलावा, language
पैरामीटर का इस्तेमाल करके एपीआई JavaScript को लोड करते समय बताई गई भाषा का भी इस्तेमाल किया जा सकता है. (ज़्यादा जानकारी के लिए,
लोकलाइज़ेशन देखें.)
पते के टाइप और पते के कॉम्पोनेंट के टाइप
GeocoderResult में मौजूद types[]
कलेक्शन से, पते का टाइप पता चलता है. खास पता कॉम्पोनेंट का टाइप दिखाने के लिए, types[]
कलेक्शन को GeocoderAddressComponent
के अंदर भी दिखाया जा सकता है. जियोकोडर से मिले पतों के कई टाइप हो सकते हैं. इन टाइप को टैग माना जा सकता है.
उदाहरण के लिए, कई शहरों को political
और
locality
टाइप के साथ टैग किया गया है.
जियोकोडर, इन टाइप के पतों और पते के कॉम्पोनेंट को पता करने की सुविधा देता है और उन्हें दिखाता है:
street_address
, सटीक मोहल्ले का पता दिखाता है.route
नाम वाले रास्ते के बारे में बताता है (जैसे कि "US 101").intersection
, आम तौर पर दो मुख्य सड़कों के मुख्य चौराहे के बारे में बताता है.political
से किसी राजनैतिक इकाई के बारे में पता चलता है. आम तौर पर, इस टाइप से किसी सिविल एडमिनिस्ट्रेशन के पॉलीगॉन का पता चलता है.country
से राष्ट्रीय राजनैतिक इकाई का पता चलता है. आम तौर पर, यह जियोकोडर से मिलने वाला सबसे ज़्यादा ऑर्डर टाइप होता है.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
पैरामीटर की जानकारी देने पर, इस जियोकोड से उस जगह के "विनेटका" नाम के इलाके की जानकारी मिलती है:
{ "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
पैरामीटर का इस्तेमाल करके, जियोकोडिंग सेवा को किसी खास इलाके के नतीजे दिखाने के लिए सेट किया जा सकता है. इस पैरामीटर में, क्षेत्र का कोड डाला जाता है. यह कोड, दो वर्णों (न्यूमेरिक नहीं) वाले यूनिकोड क्षेत्र के सबटैग के तौर पर तय किया जाता है. ये टैग सीधे तौर पर, 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=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`); }); }
पते के डिस्क्रिप्टर
पते के ब्यौरे में अतिरिक्त जानकारी शामिल होती है. इससे लैंडमार्क और इलाकों का इस्तेमाल करके, किसी जगह के बारे में जानकारी देने में मदद मिलती है. इस सुविधा के बारे में जानने के लिए, पते के ब्यौरे का डेमो देखें.
extraComputations
पैरामीटर का इस्तेमाल करके, पते के ब्यौरे की सुविधा चालू की जा सकती है. अपने जवाब में पते के ब्यौरे पाने के लिए, जियोकोडिंग के अनुरोध
, रिवर्स जियोकोडिंग के अनुरोध
या जगहों की जियोकोडिंग के अनुरोध में extra_computations=ADDRESS_DESCRIPTORS
शामिल करें.
जगहों की जियोकोडिंग का उदाहरण
नीचे दी गई क्वेरी में दिल्ली के किसी जगह का पता शामिल है.
function addressDescriptorPlaceIdLookup() { 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-descriptors-feedback@google.com पर ईमेल करें.
रिवर्स जियोकोडिंग (पता लुकअप)
आम तौर पर, जियोकोडिंग का मतलब, मैप पर किसी ऐसी जगह की जानकारी को बदलना है जिसे कोई भी व्यक्ति पढ़ सकता है. इसके उलट, मैप पर मौजूद किसी जगह की जानकारी को ऐसे पते में बदलने की प्रोसेस को रिवर्स जियोकोडिंग कहा जाता है जिसे इंसान पढ़ सके.
टेक्स्ट वाले address
के बजाय, location
पैरामीटर में कॉमा लगाकर,
अक्षांश/देशांतर जोड़े.
नीचे दिए गए उदाहरण में अक्षांश/देशांतर की वैल्यू को जियोकोड किया गया है और मैप को उस जगह पर सेंटर किया गया है. इससे, फ़ॉर्मैट किए गए पते के साथ एक जानकारी विंडो सामने आती है:
TypeScript
function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 8, center: { lat: 40.731, lng: -73.997 }, } ); const geocoder = new google.maps.Geocoder(); const infowindow = new google.maps.InfoWindow(); (document.getElementById("submit") as HTMLElement).addEventListener( "click", () => { geocodeLatLng(geocoder, map, infowindow); } ); } 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]) { map.setZoom(11); const marker = new google.maps.Marker({ position: latlng, map: map, }); 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)); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 8, center: { lat: 40.731, lng: -73.997 }, }); const geocoder = new google.maps.Geocoder(); const infowindow = new google.maps.InfoWindow(); document.getElementById("submit").addEventListener("click", () => { geocodeLatLng(geocoder, map, infowindow); }); } 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]) { map.setZoom(11); const marker = new google.maps.Marker({ position: latlng, map: map, }); 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)); } window.initMap = 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
सबमिट करने पर, अनुरोध में इनमें से कोई भी फ़ील्ड नहीं होना चाहिए:
address
latLng
location
componentRestrictions
नीचे दिए गए उदाहरण में, जगह का आईडी स्वीकार किया गया है, उससे जुड़ा पता ढूंढा गया है, और मैप को उस जगह पर सेंटर कर दिया गया है. इसमें एक जानकारी विंडो भी दिखेगी. इसमें सही जगह का फ़ॉर्मैट किया गया पता दिखेगा:
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;