जियोकोडिंग सेवा

खास जानकारी

जियोकोडिंग, पतों (जैसे कि "1600 Amphitheatre Parkway, Mountain View, CA") को भौगोलिक निर्देशांक (जैसे अक्षांश 37.423021 और देशांतर -122.083739) में बदलने की प्रक्रिया है. इसका इस्तेमाल मार्कर लगाने या मैप की जगह तय करने के लिए किया जा सकता है.

रिवर्स जियोकोडिंग भौगोलिक निर्देशांक को लोगों के पढ़ने लायक पते में बदलने की प्रक्रिया है (रिवर्स जियोकोडिंग (पता लुकअप) देखें).

किसी जगह के आईडी का पता ढूंढने के लिए, जियोकोडर का भी इस्तेमाल किया जा सकता है.

Maps JavaScript API, उपयोगकर्ता के इनपुट से डाइनैमिक तौर पर जियोकोडिंग और रिवर्स जियोकोडिंग के लिए एक जियोकोडर क्लास उपलब्ध कराता है. अगर आपको स्टैटिक, जाने-पहचाने पतों को जियोकोड करना है, तो जियोकोडिंग वेब सेवा देखें.

शुरुआत करना

Maps JavaScript API में जियोकोडिंग सेवा का इस्तेमाल करने से पहले, पक्का करें कि Google Cloud Console में जियोकोडिंग एपीआई चालू है या नहीं. यह भी पक्का करें कि आपने Maps JavaScript API के लिए जिस प्रोजेक्ट को सेट अप किया है उसी प्रोजेक्ट में यह चालू हो.

चालू किए गए एपीआई की सूची देखने के लिए:

  1. Google Cloud Console पर जाएं.
  2. प्रोजेक्ट चुनें बटन पर क्लिक करें. इसके बाद, उसी प्रोजेक्ट को चुनें जिसे आपने Maps JavaScript API के लिए सेट अप किया है और खोलें पर क्लिक करें.
  3. डैशबोर्ड पर एपीआई की सूची में, जियोकोडिंग एपीआई खोजें.
  4. अगर आपको सूची में एपीआई दिखता है, तो इसका मतलब है कि सेटअप पूरा हो गया है. अगर एपीआई सूची में नहीं है, तो उसे चालू करें:
    1. लाइब्रेरी टैब दिखाने के लिए, पेज पर सबसे ऊपर, एपीआई चालू करें को चुनें. इसके अलावा, बाईं ओर मौजूद मेन्यू से लाइब्रेरी भी चुनें.
    2. जियोकोडिंग एपीआई खोजें. इसके बाद, नतीजों की सूची से इसे चुनें.
    3. चालू करें को चुनें. प्रोसेस पूरी होने के बाद, जियोकोडिंग एपीआई, डैशबोर्ड पर एपीआई की सूची में दिखता है.

कीमत और नीतियां

कीमत

'मैप', 'रूट', और 'जगह' के लिए एक नई कीमत तय करने की योजना 16 जुलाई, 2018 से लागू की गई थी. JavaScript जियोकोडिंग सेवा के इस्तेमाल की नई कीमतों और इस्तेमाल की सीमाओं के बारे में ज़्यादा जानने के लिए, जियोकोडिंग एपीआई के लिए इस्तेमाल और बिलिंग देखें.

नीतियां

जियोकोडिंग सेवा का इस्तेमाल, जियोकोडिंग एपीआई के लिए बताई गई नीतियों के मुताबिक होना चाहिए.

जियोकोडिंग अनुरोध

जियोकोडिंग सेवा को ऐक्सेस करना एसिंक्रोनस होता है, क्योंकि 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 — उस जगह का आईडी जिसे आपको सबसे नज़दीक का पता देना है और जिसे लोग पढ़ सकते हैं. जगह के आईडी के लिए पता वापस पाने के बारे में ज़्यादा जानें.

वैकल्पिक पैरामीटर:

  • boundsLatLngBounds ऐसे नतीजों को बेहतर तरीके से दिखाता है जिनमें Gboard को मापदंड के तौर पर मापदंड से बाहर रखा जाता है. bounds पैरामीटर का असर, सिर्फ़ जियोकोडर के नतीजों पर होगा, न कि पूरी तरह से. व्यूपोर्ट के मापदंड तय करने के बारे में ज़्यादा जानकारी नीचे देखें.
  • componentRestrictions — इसका इस्तेमाल, नतीजों को किसी खास हिस्से तक सीमित करने के लिए किया जाता है. नीचे कॉम्पोनेंट को फ़िल्टर करने के बारे में ज़्यादा जानकारी देखें.
  • region — क्षेत्र का कोड, जिसे दो वर्ण वाले (बिना संख्या वाले) यूनिकोड के क्षेत्र के सबटैग के तौर पर बताया जाता है. ज़्यादातर मामलों में, ये टैग सीधे तौर पर जाने-पहचाने ccTLD ("टॉप-लेवल डोमेन") की दो वर्ण वाली वैल्यू से मैप करते हैं. region पैरामीटर सिर्फ़ जियोकोडर के नतीजों पर असर डालेगा, पूरी तरह से नहीं. क्षेत्र के कोड का मापदंड तय करने के बारे में ज़्यादा जानकारी नीचे देखें.

जियोकोडिंग जवाब

जियोकोडर के नतीजे वापस पाने पर उसे लागू करने के लिए, जियोकोडिंग सेवा को कॉलबैक करने वाले तरीके की ज़रूरत होती है. इस कॉलबैक को 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 एवेन्यू, न्यूयॉर्क, न्यूयॉर्क" में ये कॉम्पोनेंट शामिल होते हैं: "111" (सड़क का नंबर), "8वां ऐवेन्यू" (रास्ता), "न्यूयॉर्क" (शहर) और "न्यूयॉर्क" (अमेरिका का राज्य).

    फ़ॉर्मैट किए गए पते को प्रोग्राम के हिसाब से पार्स न करें. इसके बजाय, आपको अलग-अलग पते के कॉम्पोनेंट का इस्तेमाल करना चाहिए. फ़ॉर्मैट किए गए पता फ़ील्ड के साथ-साथ, एपीआई के रिस्पॉन्स में यह कॉम्पोनेंट भी शामिल होता है.

  • address_components[] एक कलेक्शन है, जिसमें इस पते पर लागू होने वाले अलग-अलग कॉम्पोनेंट शामिल हैं.

    पते से जुड़े हर कॉम्पोनेंट में आम तौर पर, नीचे दिए गए फ़ील्ड होते हैं:

    • types[] एक कलेक्शन है, जिससे पता चलता है कि पता कॉम्पोनेंट का टाइप क्या है. इस्तेमाल किए जा सकने वाले टाइप की सूची देखें.
    • long_name, जियोकोडर से मिला पूरा टेक्स्ट ब्यौरा या पता कॉम्पोनेंट का नाम है.
    • अगर उपलब्ध हो, तो पता कॉम्पोनेंट के लिए short_name एक छोटा टेक्स्ट नाम होता है. उदाहरण के लिए, अलास्का राज्य के लिए किसी पते के कॉम्पोनेंट में "अलास्का" का long_name और दो अक्षर के डाक के छोटे रूप का इस्तेमाल करके "AK" का short_name हो सकता है.

    address_components[] कलेक्शन के बारे में इन बातों का ध्यान रखें:

    • पते के कॉम्पोनेंट की कैटगरी में, formatted_address से ज़्यादा कॉम्पोनेंट हो सकते हैं.
    • ज़रूरी नहीं है कि इस कलेक्शन में, formatted_address में शामिल पते वाली सभी राजनैतिक इकाइयों के अलावा, सभी राजनैतिक इकाइयां शामिल हों. किसी खास पते वाली सभी राजनैतिक इकाइयों को वापस पाने के लिए, आपको रिवर्स जियोकोडिंग का इस्तेमाल करना चाहिए. साथ ही, अनुरोध के पैरामीटर के तौर पर पते के अक्षांश/देशांतर को पास करना चाहिए.
    • इस बात की कोई गारंटी नहीं है कि अलग-अलग अनुरोधों के लिए रिस्पॉन्स का फ़ॉर्मैट एक जैसा रहेगा. खास तौर पर, address_components की संख्या, अनुरोध किए गए पते के हिसाब से अलग-अलग होती है. साथ ही, एक ही पते के लिए समय के साथ संख्या बदल सकती है. कोई कॉम्पोनेंट, ऐरे में जगह बदल सकता है. कॉम्पोनेंट का टाइप बदल सकता है. ऐसा हो सकता है कि बाद के रिस्पॉन्स में कोई खास कॉम्पोनेंट मौजूद न हो.

    पते के टाइप और अलग-अलग तरह के पतों के बारे में ज़्यादा जानकारी पाने के लिए, नीचे दी गई जानकारी देखें.

  • partial_match बताता है कि जियोकोडर ने मूल अनुरोध से एग्ज़ैक्ट मैच नहीं किया. हालांकि, वह अनुरोध किए गए पते से मेल खा रहा था. हो सकता है कि आप गलत स्पेलिंग और/या अधूरे पते के लिए मूल अनुरोध की जांच करना चाहें.

    आंशिक मिलान अक्सर उन मोहल्ले के पतों के लिए होते हैं जो अनुरोध में आपके पास किए गए इलाके में मौजूद नहीं होते. जब कोई अनुरोध एक ही शहर की दो या ज़्यादा जगहों से मेल खाता है, तब भी आंशिक रूप से मेल खाने वाले नतीजे दिखाए जा सकते हैं. उदाहरण के लिए, "हिल्पर सेंट, ब्रिस्टल, यूनाइटेड किंगडम" के लिए वही शब्द दिखेगा जो हेनरी स्ट्रीट और हेनरिटा स्ट्रीट, दोनों के लिए सटीक है. ध्यान दें कि अगर अनुरोध में पते का गलत स्पेलिंग वाला कॉम्पोनेंट शामिल है, तो जियोकोडिंग सेवा किसी दूसरे पते का सुझाव दे सकती है. इस तरह ट्रिगर किए गए सुझाव भी मिलते-जुलते नतीजे के तौर पर मार्क कर दिए जाएंगे.

  • place_idकिसी जगह का यूनीक आइडेंटिफ़ायर है, जिसे दूसरे Google API के साथ इस्तेमाल किया जा सकता है. उदाहरण के लिए, किसी स्थानीय कारोबार के बारे में जानकारी पाने के लिए, Google Places एपीआई लाइब्रेरी के साथ 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 का मतलब है कि ऐसी कोई दीवानी इकाई है जो पहले ऑर्डर की गई हो और देश के लेवल से नीचे हो. अमेरिका में, ये प्रशासनिक स्तर शामिल हैं. सभी देशों में, एडमिन के ये लेवल तय नहीं हैं. ज़्यादातर मामलों में, admin_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, डेटा को कोड में बदलकर जगह का रेफ़रंस देता है, जो अक्षांश और देशांतर से मिलता है. Plus Code का इस्तेमाल उन जगहों पर मोहल्ले के पते के बदले किया जा सकता है जहां वे मौजूद नहीं हैं (जहां इमारतों को नंबर नहीं दिया गया है या सड़कों के नाम नहीं दिए गए हैं). ज़्यादा जानकारी के लिए https://plus.codes देखें.
  • postal_code एक पिन कोड दिखाता है, जिसका इस्तेमाल देश में डाक डाक के लिए किया जाता है.
  • natural_feature एक अहम प्राकृतिक सुविधा है.
  • airport किसी हवाई अड्डे की जानकारी देता है.
  • park, नाम वाले पार्क को दिखाता है.
  • point_of_interest, नाम वाली लोकप्रिय जगह को दिखाता है. आम तौर पर, ये "लोकप्रिय जगह" ऐसी प्रमुख स्थानीय इकाइयां होती हैं जो किसी अन्य कैटगरी में आसानी से फ़िट नहीं होती हैं. जैसे, "एंपायर स्टेट बिल्डिंग" या "आइफ़िल टावर".

टाइप की खाली सूची से पता चलता है कि किसी खास पते के कॉम्पोनेंट के लिए कोई जानकारी मौजूद नहीं है. उदाहरण के लिए, फ़्रांस के लिए ल्यू-डिट.

इसके अलावा, पते के कॉम्पोनेंट में नीचे दिए गए टाइप शामिल हो सकते हैं.

ध्यान दें: इस सूची में पूरी जानकारी नहीं है और इसमें बदलाव भी किए जा सकते हैं.

  • 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 देश के कोड से मेल खाता है. ध्यान दें: एपीआई, देशों को तय करने के लिए ISO स्टैंडर्ड का पालन करता है. फ़िल्टर, किसी देश के ISO कोड का इस्तेमाल करते समय सबसे सही तरीके से काम करता है.

इस उदाहरण में, 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);
  }
});
}

रिवर्स जियोकोडिंग (पता लुकअप)

आम तौर पर, जियोकोडिंग शब्द का मतलब ऐसे पते से है जिसे कोई व्यक्ति पढ़ सकता है. ऐसा मैप पर किसी जगह पर किया जा सकता है. मैप में किसी जगह को ऐसे पते में बदलने की प्रक्रिया को रिवर्स जियोकोडिंग कहते हैं जिसे इंसान पढ़ सकते हैं.

टेक्स्ट 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 API के साथ किया जा सकता है. उदाहरण के लिए, किसी स्नैप किए गए पॉइंट का पता पाने के लिए, 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;
उदाहरण देखें

नमूना आज़माएं