खास जानकारी
जियोकोडिंग, पतों को भौगोलिक निर्देशांक में बदलने की प्रोसेस है. जैसे, "1600 Amphitheatre Parkway, Mountain View, CA" को अक्षांश 37.423021 और देशांतर -122.083739 में बदलना. इन निर्देशांकों का इस्तेमाल, मार्कर डालने या मैप की जगह तय करने के लिए किया जा सकता है.
रिवर्स जियोकोडिंग, भौगोलिक निर्देशांकों को ऐसे पते में बदलने की प्रोसेस है जिसे इंसान पढ़ सके. रिवर्स जियोकोडिंग (पता लुकअप) देखें.
किसी दिए गए जगह के आईडी का पता ढूंढने के लिए भी, जियोकोडर का इस्तेमाल किया जा सकता है.
Maps JavaScript API, उपयोगकर्ता के इनपुट से डाइनैमिक तौर पर जियोकोडिंग और रिवर्स जियोकोडिंग करने के लिए, Geocoder क्लास उपलब्ध कराता है. अगर आपको स्थिर और पहले से मौजूद पतों को जियोकोड करना है, तो जियोकोडिंग वेब सेवा देखें.
शुरू करना
Maps JavaScript API में जियोकोडिंग सेवा का इस्तेमाल करने से पहले, पहले यह पक्का करें कि Google Cloud Console में जियोकोडिंग एपीआई चालू हो. यह वही प्रोजेक्ट होना चाहिए जिसे आपने 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
के लिए जियोकोड के नतीजों को ज़्यादा प्राथमिकता दी जाती है.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 के अन्य एपीआई के साथ किया जा सकता है. उदाहरण के लिए, किसी स्थानीय कारोबार की जानकारी पाने के लिए,place_id
का इस्तेमाल Google Places API लाइब्रेरी के साथ किया जा सकता है. जैसे, फ़ोन नंबर, कारोबार के खुले होने का समय, उपयोगकर्ताओं की समीक्षाएं वगैरह. जगह की जानकारी वाले आईडी के बारे में खास जानकारी देखें.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
पैरामीटर सेट करें, ताकि इस व्यूपोर्ट की सीमाएं तय की जा सकें. ध्यान दें कि बायसिंग की सुविधा, सिर्फ़ तय सीमा के अंदर के नतीजों को प्राथमिकता देती है. अगर इन सीमाओं के बाहर ज़्यादा काम के नतीजे मौजूद हैं, तो उन्हें शामिल किया जा सकता है.
उदाहरण के लिए, "विनेटका" के लिए दिया गया जियोकोड, आम तौर पर शिकागो के इस उपनगर को दिखाता है:
{ "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 ऐप्लिकेशन, जियोकोडिंग की सुविधा देता है. ध्यान दें कि किसी खास डोमेन के लिए नतीजों को प्राथमिकता देने का मतलब है कि उन्हें ज़्यादा प्राथमिकता दी जाती है. हालांकि, अगर इस डोमेन से बाहर के नतीजे ज़्यादा काम के हैं, तो उन्हें भी शामिल किया जा सकता है.
उदाहरण के लिए, "Toledo" के लिए जियोकोड यह नतीजा दिखाता है, क्योंकि जियोकोडिंग सेवा के लिए डिफ़ॉल्ट डोमेन, अमेरिका पर सेट है:
{ "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"
जब इनपुट कोऑर्डिनेट, एरिया के किनारे के करीब हो.
पते के ब्यौरे की कवरेज
यह सुविधा सिर्फ़ चुनिंदा देशों में उपलब्ध है.
यह सुविधा, झलक के तौर पर उपलब्ध है. हमें इस सुविधा के बारे में सुझाव, राय या शिकायत देकर हमें बताएं. कृपया [email protected] पर ईमेल करें.
रिवर्स जियोकोडिंग (पता लुकअप)
आम तौर पर, जियोकोडिंग का मतलब, मैप पर किसी ऐसी जगह की जानकारी को बदलना है जिसे कोई भी व्यक्ति पढ़ सकता है. इसके उलट, मैप पर मौजूद किसी जगह की जानकारी को ऐसे पते में बदलने की प्रोसेस को रिवर्स जियोकोडिंग कहा जाता है जिसे इंसान पढ़ सके.
टेक्स्ट वाले 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 के अन्य एपीआई के साथ किया जा सकता है. उदाहरण के लिए, स्नैप किए गए पॉइंट का पता पाने के लिए, सड़कों के एपीआई से मिले 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;