भौगोलिक स्थान से जुड़ा अनुरोध और जवाब

जगह की जानकारी के अनुरोध

जियोलोकेशन के अनुरोध, पीओएसटी तरीके से यहां दिए गए यूआरएल पर भेजे जाते हैं:

https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR_API_KEY

आपको अपने अनुरोध में एक कुंजी बतानी होगी, जिसे key पैरामीटर की वैल्यू के तौर पर शामिल किया गया है. key आपके ऐप्लिकेशन का है एपीआई पासकोड. यह कुंजी कोटा के उद्देश्यों के लिए आपके ऐप्लिकेशन की पहचान करती है मैनेज करना. कुंजी पाने का तरीका जानें.

अनुरोध का मुख्य भाग

अनुरोध का मुख्य हिस्सा, JSON फ़ॉर्मैट में होना चाहिए. अगर अनुरोध का मुख्य हिस्सा शामिल नहीं है, तो नतीजे अनुरोध की जगह के आईपी पते के आधार पर लौटाए जाते हैं. नीचे दिए गए फ़ील्ड और सभी फ़ील्ड वैकल्पिक होते हैं, जब तक कि अलग से निर्देश न दिए जाएं:

फ़ील्ड JSON का टाइप ब्यौरा नोट
homeMobileCountryCode number (uint32) डिवाइस के होम नेटवर्क के लिए मोबाइल देश कोड (एमसीसी). radioType gsm (डिफ़ॉल्ट) के लिए इस्तेमाल किया जा सकता है, wcdma, lte, और nr; cdma के लिए इस्तेमाल नहीं किया गया.
मान्य रेंज: 0 से 999.
homeMobileNetworkCode number (uint32) डिवाइस के होम नेटवर्क के लिए मोबाइल नेटवर्क कोड. यह GSM, डब्ल्यूसीडीएमए, एलटीई, और एनआर के लिए एमएनसी है.
CNAME, सिस्टम आईडी (SID) का इस्तेमाल करता है
एमएनसी के लिए मान्य रेंज: 0 से 999 के बीच.
एसआईडी के लिए मान्य रेंज: 0–32767.
radioType string मोबाइल रेडियो का टाइप. gsm, cdma, और इन फ़ॉर्मैट वाली वैल्यू इस्तेमाल की जा सकती हैं wcdma, lte, और nr. यह फ़ील्ड ज़रूरी नहीं है. हालांकि, अगर रेडियो टाइप है, तो इसे हमेशा शामिल करना चाहिए इससे क्लाइंट को पता चलता है.
अगर इस फ़ील्ड को खाली छोड़ा जाता है, तो Geolocation API डिफ़ॉल्ट तौर पर gsm पर सेट हो जाता है, किस तरह के रेडियो टाइप के होने पर अमान्य या शून्य नतीजे मिलेंगे गलत.
carrier string मोबाइल और इंटरनेट सेवा देने वाली कंपनी का नाम.
considerIp boolean इससे यह तय होता है कि अगर वाई-फ़ाई और सेल टावर के सिग्नल मौजूद नहीं हैं, खाली हैं या डिवाइस की जगह का अनुमान लगाने के लिए ज़रूरी नहीं हैं, तो आईपी जियोलोकेशन का इस्तेमाल किया जाए या नहीं. डिफ़ॉल्ट तौर पर, यह true पर सेट होती है. considerIp को सेट करें वापस आने से रोकने के लिए false.
cellTowers array सेल टावर से जुड़े ऑब्जेक्ट का कलेक्शन. नीचे सेल टावर ऑब्जेक्ट सेक्शन देखें.
wifiAccessPoints array वाई-फ़ाई ऐक्सेस पॉइंट से जुड़े ऑब्जेक्ट का कलेक्शन. वाई-फ़ाई ऐक्सेस पॉइंट ऑब्जेक्ट सेक्शन देखें देखें.

Geolocation API अनुरोध का एक उदाहरण नीचे दिया गया है.

{
  "homeMobileCountryCode": 310,
  "homeMobileNetworkCode": 410,
  "radioType": "gsm",
  "carrier": "Vodafone",
  "considerIp": true,
  "cellTowers": [
    // See the Cell Tower Objects section below.
  ],
  "wifiAccessPoints": [
    // See the WiFi Access Point Objects section below.
  ]
}

सेल टावर ऑब्जेक्ट

अनुरोध के मुख्य हिस्से के cellTowers कलेक्शन में शून्य या उससे ज़्यादा हैं सेल टावर ऑब्जेक्ट दिखाना.

फ़ील्ड JSON का टाइप ब्यौरा नोट
cellId number (uint32) सेल का यूनीक आइडेंटिफ़ायर. radioType gsm (डिफ़ॉल्ट), cdma के लिए ज़रूरी है, wcdma और lte; nr के लिए अस्वीकार कर दिया गया.
नीचे सेल आईडी कैलकुलेट करना सेक्शन देखें. इसमें यह भी बताया गया है कि हर रेडियो टाइप के लिए मान्य वैल्यू रेंज.
newRadioCellId number (uint64) एनआर (5G) सेल का यूनीक आइडेंटिफ़ायर. radioType nr के लिए ज़रूरी है; अन्य के लिए अस्वीकार किया गया प्रकार.
नीचे दिया गया RadioCellId का हिसाब लगाना सेक्शन देखें, इसमें फ़ील्ड के लिए मान्य वैल्यू रेंज भी शामिल होती है.
locationAreaCode number (uint32) GSM और डब्ल्यूसीडीएमए नेटवर्क के लिए जगह का एरिया कोड (एलएसी).
CDMA नेटवर्क के लिए नेटवर्क आईडी (NID).
LTE और एनआर नेटवर्क के लिए ट्रैकिंग एरिया कोड (TAC).
radioType gsm (डिफ़ॉल्ट) और cdma, अन्य वैल्यू के लिए ज़रूरी नहीं है.
gsm, cdma, wcdma और lte: 0–65535.
nr की मान्य रेंज: 0–16777215.
mobileCountryCode number (uint32) सेल टावर के मोबाइल देश का कोड (एमसीसी). radioType gsm (डिफ़ॉल्ट), wcdma के लिए ज़रूरी है, lte और nr; cdma के लिए इस्तेमाल नहीं किया गया.
मान्य सीमा: 0–999.
mobileNetworkCode number (uint32) सेल टावर का मोबाइल नेटवर्क कोड. यह GSM, डब्ल्यूसीडीएमए, एलटीई, और एनआर के लिए एमएनसी है.
CNAME, सिस्टम आईडी (SID) का इस्तेमाल करता है.
ज़रूरी है.
एमएनसी के लिए मान्य रेंज: 0 से 999 के बीच.
एसआईडी के लिए मान्य रेंज: 0–32767.

नीचे दिए गए वैकल्पिक फ़ील्ड का इस्तेमाल नहीं किया गया है. हालांकि, अगर मान इस तरह हैं, तो उन्हें शामिल किया जा सकता है उपलब्ध हैं.

फ़ील्ड JSON का टाइप ब्यौरा नोट
age number (uint32) मिलीसेकंड की संख्या जब से यह सेल मुख्य थी. अगर उम्र 0 है, तो cellId या newRadioCellId मौजूदा और उन्हें मापा जा सकता है.
signalStrength number (double) रेडियो सिग्नल की ताकत, dBm में मापी गई.
timingAdvance number (double) कॉन्टेंट बनाने टाइमिंग एडवांस वैल्यू.

cellId को कैलकुलेट किया जा रहा है

एनआर (5G) से पहले के रेडियो टाइप, नेटवर्क पास करने के लिए 32-बिट cellId फ़ील्ड का इस्तेमाल करते हैं सेल आईडी को भौगोलिक स्थान एपीआई से जोड़ा गया.

  • GSM (2G) नेटवर्क, 16-बिट सेल आईडी (CID) का इस्तेमाल करते हैं. मान्य सीमा: 0–65535.
  • CNAME (2G) नेटवर्क, 16-बिट बेस स्टेशन आईडी (BID) का इस्तेमाल करते हैं. मान्य सीमा: 0–65535.
  • WCDMA (3G) नेटवर्क, UTRAN/GERAN सेल आइडेंटिटी (UC-ID) का इस्तेमाल करते हैं. यह 28-बिट वाली एक पूर्णांक वैल्यू होती है, जिसमें 12-बिट रेडियो नेटवर्क कंट्रोलर आइडेंटिफ़ायर (RNC-ID) और 16-बिट सेल आईडी (CID) को जोड़ा जाता है.
    फ़ॉर्मूला: rnc_id << 16 | cid.
    मान्य रेंज: 0–268435455.
    ध्यान दें: डब्ल्यूसीडीएमए नेटवर्क में सिर्फ़ 16-बिट सेल आईडी की वैल्यू तय करने से, गलत या शून्य परिणाम.
  • LTE (4G) नेटवर्क, E-UTRAN सेल आइडेंटिटी (ईसीआई) का इस्तेमाल करते हैं, जो 28-बिट वाली पूर्णांक वैल्यू होती है 20-बिट E-UTRAN नोड B आइडेंटिफ़ायर (eNBId) और 8-बिट सेल आईडी (CID) को जोड़ना.
    फ़ॉर्मूला: enb_id << 8 | cid.
    मान्य रेंज: 0–268435455.
    ध्यान दें: LTE नेटवर्क में सिर्फ़ 8-बिट सेल आईडी की वैल्यू तय करने से, गलत या शून्य परिणाम.

एपीआई अनुरोध में इन रेंज के बाहर वैल्यू रखने पर, तय नहीं किया जा सकता. एपीआई, अपने विवेक से, वह संख्या को काट सकता है, ताकि वह दस्तावेज़ की गई रेंज में आ सके. radioType में सुधार करें या बिना कोई बदलाव किए NOT_FOUND नतीजा दिखाएं इंडिकेटर पर क्लिक करें.

यहां LTE सेल टावर ऑब्जेक्ट का एक उदाहरण दिया गया है.

{
  "cellTowers": [
    {
      "cellId": 170402199,
      "locationAreaCode": 35632,
      "mobileCountryCode": 310,
      "mobileNetworkCode": 410,
      "age": 0,
      "signalStrength": -60,
      "timingAdvance": 15
    }
  ]
}

गणना हो रही है newRadioCellId

नए नेटवर्क, जिनके सेल आईडी 32 बिट से ज़्यादा हैं वे 64-बिट का इस्तेमाल करते हैं नेटवर्क सेल आईडी पास करने के लिए newRadioCellId फ़ील्ड जियोलोकेशन एपीआई.

  • एनआर (5G) नेटवर्क, 36-बिट न्यू रेडियो सेल आइडेंटिटी (एनसीआई) का इस्तेमाल करते हैं.
    मान्य रेंज: 0–68719476735.

एनआर सेल टावर ऑब्जेक्ट का एक उदाहरण नीचे दिया गया है.

{
  "cellTowers": [
    {
      "newRadioCellId": 68719476735,
      "mobileCountryCode": 310,
      "mobileNetworkCode": 410,
      "age": 0,
      "signalStrength": -60,
    }
  ]
}

वाई-फ़ाई ऐक्सेस पॉइंट ऑब्जेक्ट

अनुरोध के मुख्य हिस्से के wifiAccessPoints कलेक्शन में दो वैल्यू होनी चाहिए या ज़्यादा वाई-फ़ाई ऐक्सेस पॉइंट ऑब्जेक्ट. macAddress ज़रूरी है; सभी अन्य फ़ील्ड वैकल्पिक हैं.

फ़ील्ड JSON का टाइप ब्यौरा नोट
macAddress string वाई-फ़ाई नोड का MAC पता. इसे आम तौर पर BSS, BSSID या MAC पता कहा जाता है. ज़रूरी है. कोलोन से अलग की गई (:) हेक्साडेसिमल स्ट्रिंग.
एपीआई की मदद से, सिर्फ़ दुनिया भर में मैनेज किए जाने वाले MAC पते ढूंढे जा सकते हैं. अन्य MAC पते सूचना नहीं दी गई है. इसकी वजह से, एपीआई अनुरोध सही तरीके से लागू हो सकता है खाली. ज़्यादा जानकारी के लिए, इस्तेमाल न होने वाले वाई-फ़ाई का ऐक्सेस छोड़ना अंक.
signalStrength number (double) मौजूदा सिग्नल की क्षमता, dBm में मापी गई. वाई-फ़ाई ऐक्सेस पॉइंट के लिए, dBm वैल्यू आम तौर पर -35 या उससे कम होती है और इसकी रेंज -128 से -10 dBm तक होती है. माइनस का निशान ज़रूर शामिल करें.
age number (uint32) इस ऐक्सेस पॉइंट का पता चलने के बाद से अब तक के मिलीसेकंड.
channel number (uint32) वह चैनल जिस पर क्लाइंट, ऐक्सेस पॉइंट से संपर्क कर रहा है.
signalToNoiseRatio number (double) मौजूदा सिग्नल और शोर का अनुपात dB में मापा जाता है.

वाई-फ़ाई ऐक्सेस पॉइंट ऑब्जेक्ट का एक उदाहरण नीचे दिखाया गया है.

{
  "macAddress": "f0:d5:bf:fd:12:ae",
  "signalStrength": -43,
  "signalToNoiseRatio": 0,
  "channel": 11,
  "age": 0
}

सैंपल अनुरोध

अगर आपको सैंपल डेटा के साथ Geolocation API आज़माना है, तो नीचे दिए गए JSON को किसी फ़ाइल में सेव करें:

{
  "considerIp": "false",
  "wifiAccessPoints": [
    {
      "macAddress": "3c:37:86:5d:75:d4",
      "signalStrength": -35,
      "signalToNoiseRatio": 0
    },
    {
      "macAddress": "30:86:2d:c4:29:d0",
      "signalStrength": -35,
      "signalToNoiseRatio": 0
    }
  ]
}

इसके बाद, cURL का इस्तेमाल करके कमांड लाइन से अपना अनुरोध करें:

$ curl -d @your_filename.json -H "Content-Type: application/json" -i "https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR_API_KEY"

पिछले MAC पतों के लिए जवाब इस तरह दिखता है:

{
  "location": {
    "lat": 37.4241173,
    "lng": -122.0915717
  },
  "accuracy": 20
}

इस्तेमाल नहीं किए गए वाई-फ़ाई ऐक्सेस पॉइंट छोड़े जा रहे हैं

ऐसे वाई-फ़ाई ऐक्सेस पॉइंट ऑब्जेक्ट हटाए जा रहे हैं जो macAddress वाले हैं स्थानीय तौर पर मैनेज किया जाने वाला इनपुट के रूप में वाई-फ़ाई का इस्तेमाल करने वाले Geolocation API कॉल की सफलता की दर को बेहतर बना सकता है. अगर फ़िल्टर करने के बाद, यह तय किया जा सकता है कि Geolocation API कॉल हो सकता है कि जगह की जानकारी के पुराने सिग्नल या वाई-फ़ाई APs का इस्तेमाल न करने जैसे खतरों को कम किया जा सके कमज़ोर सिग्नल का इस्तेमाल किया जा सकता है. इस तरीके को अपनाने से, आपके किसी ऐप्लिकेशन को जगह का अनुमान लगाने और उसे सटीक तरीके से बाज़ार से हटाने के लिए ज़रूरतें. फ़िल्टर करने की नीचे दी गई तकनीकों से, फ़िल्टर करने का तरीका पता चलता है लेकिन उन खतरों को न दिखाएं जो आप लागू कर सकते हैं. इंजीनियर, लागू करने का विकल्प चुनें.

स्थानीय रूप से प्रबंधित MAC पते, API और चुपचाप अनुरोधों को छोड़ दिया जाता है. ऐसे MAC पतों को हटाया जा सकता है इसके लिए, पहले यह पक्का किया जाएगा कि दूसरा सबसे कम अहम हिस्सा macAddress का सबसे अहम बाइट 0 है, उदाहरण के लिए, यह 1 बिट को 2 में दिखाया जा रहा है 02:00:00:00:00:00. ब्रॉडकास्ट MAC पता (FF:FF:FF:FF:FF:FF) MAC पते का एक उदाहरण है, जिसे इस फ़िल्टर से उपयोगी तरीके से बाहर रखा जा सकता है.

00:00:5E:00:00:00 और के बीच MAC पतों की रेंज 00:00:5E:FF:FF:FF यह हैं रिज़र्व है इसे IANA के लिए इस्तेमाल किया जाता है. इसे अक्सर नेटवर्क मैनेजमेंट और मल्टीकास्ट फ़ंक्शन के लिए इस्तेमाल किया जाता है जो उन्हें जगह के सिग्नल के तौर पर इस्तेमाल होने से रोकती है. आपको इन्हें भी हटा देना चाहिए एपीआई के इनपुट से मिले MAC पते.

उदाहरण के लिए, जियोलोकेशन के लिए इस्तेमाल किए जा सकने वाले MAC पतों को यहां से इकट्ठा किया जा सकता है: macs नाम की macAddress स्ट्रिंग का अरे:

जावा
String[] macs = {"12:34:56:78:9a:bc", "1c:34:56:78:9a:bc", "00:00:5e:00:00:01"};
ArrayList<String> _macs = new ArrayList<>(Arrays.asList(macs));
_macs.removeIf(m -> !(0 == (2 & Integer.parseInt(m.substring(1, 2), 16))
                      && !m.substring(0, 8).toUpperCase().equals("00:00:5E")));
    
Python
macs = ['12:34:56:78:9a:bc', '1c:34:56:78:9a:bc', '00:00:5e:00:00:01']
macs = [m for m in macs if (0 == (2 & int(m[1], 16)) and m[:8].upper() != '00:00:5E')]
    
JavaScript
macs = ['12:34:56:78:9a:bc', '1c:34:56:78:9a:bc', '00:00:5e:00:00:01'];
macs = macs.filter(m => 0 === (2 & Number.parseInt(m[1], 16))
                           && m.substr(0, 8).toUpperCase() !== '00:00:5E');
    

इस फ़िल्टर का इस्तेमाल करने पर, सूची में सिर्फ़ 1c:34:56:78:9a:bc बचे हैं. इस सूची में दो से कम वाई-फ़ाई मैक पते होने की वजह से, अनुरोध पूरा नहीं होगा और एचटीटीपी 404 (notFound) रिस्पॉन्स दिखेगा.

जगह की जानकारी से जुड़े जवाब

जगह की जानकारी का अनुरोध पूरा होने पर, JSON फ़ॉर्मैट में जवाब मिलता है. इसमें जगह और दायरा की जानकारी होती है.

  • location: उपयोगकर्ता का अनुमानित अक्षांश और देशांतर डिग्री में निर्देशांक. एक lat और एक lng शामिल है सबफ़ील्ड पर क्लिक करें.
  • accuracy: अनुमानित जगह की सटीक जानकारी मीटर. यह दी गई जानकारी के चारों ओर वृत्त की त्रिज्या को दिखाता है location.
{
  "location": {
    "lat": 37.421875199999995,
    "lng": -122.0851173
  },
  "accuracy": 120
}