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

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

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

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 और NR नेटवर्क के लिए ट्रैकिंग एरिया कोड (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.
  • डब्ल्यूसीडीएमए (3G) नेटवर्क, UTRAN/GERAN सेल आइडेंटिटी (UC-ID) का इस्तेमाल करते हैं, जो 28-बिट वाला पूर्णांक होता है 12-बिट रेडियो नेटवर्क कंट्रोलर आइडेंटिफ़ायर (RNC-ID) और 16-बिट को जोड़ने वाली वैल्यू सेल आईडी (सीआईडी).
    फ़ॉर्मूला: 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 मिलता है सूची में बचे हुए हैं. क्योंकि इस सूची में दो वाई-फ़ाई MAC पतों से कम हो, तो अनुरोध पूरा नहीं हो पाएगा और एचटीटीपी 404 (notFound) जवाब दिया जाएगा.

भौगोलिक-स्थान से जुड़े जवाब

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

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