जगह की जानकारी के अनुरोध
जियोलोकेशन के अनुरोध, पीओएसटी तरीके से यहां दिए गए यूआरएल पर भेजे जाते हैं:
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
है, उदाहरण के लिए, यह
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")));
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')]
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 }