ভূ-অবস্থান অনুরোধ
ভৌগলিক অবস্থানের অনুরোধগুলি POST ব্যবহার করে নিম্নলিখিত URL এ পাঠানো হয়:
https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR_API_KEY
আপনার অনুরোধে আপনাকে অবশ্যই একটি কী নির্দিষ্ট করতে হবে, একটি key
প্যারামিটারের মান হিসাবে অন্তর্ভুক্ত করা হয়েছে। একটি key
হল আপনার অ্যাপ্লিকেশনের API কী। এই কী কোটা ব্যবস্থাপনার উদ্দেশ্যে আপনার আবেদনকে চিহ্নিত করে। কিভাবে একটি চাবি পেতে শিখুন.
শরীরের অনুরোধ
অনুরোধের অংশ অবশ্যই JSON হিসাবে ফর্ম্যাট করা উচিত। যদি অনুরোধের অংশটি অন্তর্ভুক্ত না করা হয়, তাহলে অনুরোধের অবস্থানের IP ঠিকানার উপর ভিত্তি করে ফলাফলগুলি ফেরত দেওয়া হয়। নিম্নলিখিত ক্ষেত্রগুলি সমর্থিত, এবং সমস্ত ক্ষেত্র ঐচ্ছিক, যদি না অন্যথায় বলা হয়:
মাঠ | JSON প্রকার | বর্ণনা | নোট |
---|---|---|---|
homeMobileCountryCode | number ( uint32 ) | ডিভাইসের হোম নেটওয়ার্কের জন্য মোবাইল কান্ট্রি কোড (MCC)। | radioType gsm (ডিফল্ট), wcdma , lte এবং nr জন্য সমর্থিত ; cdma এর জন্য ব্যবহার করা হয় না।বৈধ পরিসীমা: 0-999। |
homeMobileNetworkCode | number ( uint32 ) | ডিভাইসের হোম নেটওয়ার্কের জন্য মোবাইল নেটওয়ার্ক কোড। এটি GSM, WCDMA, LTE এবং NR-এর জন্য MNC। CDMA সিস্টেম আইডি (SID) ব্যবহার করে | MNC এর জন্য বৈধ পরিসীমা: 0-999। SID-এর জন্য বৈধ পরিসর: 0–32767। |
radioType | string | মোবাইল রেডিও প্রকার। সমর্থিত মানগুলি হল gsm , cdma , wcdma , lte এবং nr । | যদিও এই ক্ষেত্রটি ঐচ্ছিক, এটি সর্বদা অন্তর্ভুক্ত করা উচিত যদি রেডিও প্রকারটি ক্লায়েন্ট দ্বারা পরিচিত হয়। যদি ক্ষেত্রটি বাদ দেওয়া হয়, জিওলোকেশন এপিআই ডিফল্ট gsm , যার ফলে রেডিও টাইপটি ভুল হলে অবৈধ বা শূন্য ফলাফল হবে ৷ |
carrier | string | বাহকের নাম। | |
considerIp | boolean | ওয়াইফাই এবং সেল টাওয়ার সিগন্যাল অনুপস্থিত, খালি বা ডিভাইসের অবস্থান অনুমান করার জন্য যথেষ্ট না হলে IP ভূ-অবস্থানে ফিরে যেতে হবে কিনা তা নির্দিষ্ট করে৷ | ডিফল্ট থেকে true । পিছিয়ে পড়া রোধ করতে considerIp কে false সেট করুন। |
cellTowers | array | সেল টাওয়ার অবজেক্টের একটি অ্যারে। | নীচে সেল টাওয়ার অবজেক্ট বিভাগ দেখুন। |
wifiAccessPoints | array | ওয়াইফাই অ্যাক্সেস পয়েন্ট অবজেক্টের একটি অ্যারে। | নীচের ওয়াইফাই অ্যাক্সেস পয়েন্ট অবজেক্ট বিভাগ দেখুন। |
একটি উদাহরণ Geolocation API অনুরোধের বডি নীচে দেখানো হয়েছে।
{ "homeMobileCountryCode": 310, "homeMobileNetworkCode": 410, "radioType": "lte", "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 ) | NR (5G) সেলের অনন্য শনাক্তকারী। | radioType nr এর জন্য প্রয়োজনীয় ; অন্যান্য ধরনের জন্য প্রত্যাখ্যাত ।নীচের গণনা করা newRadioCellId বিভাগটি দেখুন, যা ক্ষেত্রের জন্য বৈধ মানের পরিসরও তালিকাভুক্ত করে। |
locationAreaCode | number ( uint32 ) | GSM এবং WCDMA নেটওয়ার্কের জন্য লোকেশন এরিয়া কোড (LAC)। CDMA নেটওয়ার্কের জন্য নেটওয়ার্ক আইডি (NID)। LTE এবং NR নেটওয়ার্কের জন্য ট্র্যাকিং এরিয়া কোড (TAC)। | radioType gsm (ডিফল্ট) এবং cdma জন্য প্রয়োজনীয় , অন্যান্য মানের জন্য ঐচ্ছিক।gsm , cdma , wcdma এবং lte সহ বৈধ পরিসীমা: 0–65535।nr সহ বৈধ পরিসীমা : 0–16777215৷ |
mobileCountryCode | number ( uint32 ) | সেল টাওয়ারের মোবাইল কান্ট্রি কোড (MCC)। | radioType gsm (ডিফল্ট), wcdma , lte এবং nr জন্য প্রয়োজনীয় ; cdma এর জন্য ব্যবহার করা হয় না।বৈধ পরিসীমা: 0-999। |
mobileNetworkCode | number ( uint32 ) | সেল টাওয়ারের মোবাইল নেটওয়ার্ক কোড। এটি GSM, WCDMA, LTE এবং NR-এর জন্য MNC। সিডিএমএ সিস্টেম আইডি (এসআইডি) ব্যবহার করে। | প্রয়োজন। MNC এর জন্য বৈধ পরিসীমা: 0-999। SID-এর জন্য বৈধ পরিসর: 0–32767। |
নিম্নলিখিত ঐচ্ছিক ক্ষেত্রগুলি ব্যবহার করা হয় না, তবে মান উপলব্ধ থাকলে অন্তর্ভুক্ত করা যেতে পারে।
মাঠ | JSON প্রকার | বর্ণনা | নোট |
---|---|---|---|
age | number ( uint32 ) | এই সেল প্রাথমিক হওয়ার পর থেকে মিলিসেকেন্ডের সংখ্যা৷ | বয়স 0 হলে, cellId বা newRadioCellId একটি বর্তমান পরিমাপের প্রতিনিধিত্ব করে। |
signalStrength | number ( double ) | রেডিও সংকেত শক্তি dBm পরিমাপ. | |
timingAdvance | number ( double ) | সময় অগ্রিম মান. |
cellId
গণনা করা হচ্ছে
NR (5G) এর পূর্বের রেডিও প্রকারগুলি 32-বিট cellId
ক্ষেত্র ব্যবহার করে জিওলোকেশন API এ নেটওয়ার্ক সেল আইডি পাস করার জন্য।
- জিএসএম (2জি) নেটওয়ার্কগুলি 16-বিট সেল আইডি (সিআইডি) ব্যবহার করে। বৈধ পরিসীমা: 0-65535।
- CDMA (2G) নেটওয়ার্ক 16-বিট বেস স্টেশন আইডি (BID) ব্যবহার করে। বৈধ পরিসীমা: 0-65535।
- WCDMA (3G) নেটওয়ার্কগুলি UTRAN/GERAN সেল আইডেন্টিটি (UC-ID) ব্যবহার করে, যা একটি 28-বিট পূর্ণসংখ্যা মান যা 12-বিট রেডিও নেটওয়ার্ক কন্ট্রোলার আইডেন্টিফায়ার (RNC-ID) এবং 16-বিট সেল আইডি (CID) কে সংযুক্ত করে।
সূত্র:rnc_id << 16 | cid
বৈধ পরিসীমা: 0–268435455।
দ্রষ্টব্য: WCDMA নেটওয়ার্কে শুধুমাত্র 16-বিট সেল আইডি মান উল্লেখ করলে ফলাফল ভুল বা শূন্য হয়। - এলটিই (4জি) নেটওয়ার্কগুলি ই-ইউট্রান সেল আইডেন্টিটি (ইসিআই) ব্যবহার করে, যা একটি 28-বিট পূর্ণসংখ্যা মান যা 20-বিট ই-ইউট্রান নোড বি আইডেন্টিফায়ার (ইএনবিআইডি) এবং 8-বিট সেল আইডি (সিআইডি) কে সংযুক্ত করে।
সূত্র:enb_id << 8 | cid
বৈধ পরিসীমা: 0–268435455।
দ্রষ্টব্য: LTE নেটওয়ার্কে শুধুমাত্র 8-বিট সেল আইডি মান উল্লেখ করলে ফলাফল ভুল বা শূন্য হয়।
API অনুরোধে এই সীমার বাইরে মান স্থাপন করলে অনির্ধারিত আচরণ হতে পারে। এপিআই, Google-এর বিবেচনার ভিত্তিতে, সংখ্যাটিকে ছেঁটে ফেলতে পারে যাতে এটি নথিভুক্ত পরিসরে ফিট করে, radioType
এ একটি সংশোধন অনুমান করতে পারে, বা প্রতিক্রিয়াতে কোনও সূচক ছাড়াই একটি NOT_FOUND
ফলাফল ফেরত দিতে পারে৷
LTE সেল টাওয়ার অবজেক্টের একটি উদাহরণ, যা অনুরোধের অংশের অংশ, নীচে দেওয়া হল৷
{ ... "cellTowers": [ { "cellId": 170402199, "locationAreaCode": 35632, "mobileCountryCode": 310, "mobileNetworkCode": 410, "age": 0, "signalStrength": -60, "timingAdvance": 15 } ] }
পূর্ববর্তী অনুরোধের প্রতিক্রিয়া এই মত দেখায়:
{ "location": { "lat": 37.7801129, "lng": -122.4168229 }, "accuracy": 180.052 }
newRadioCellId
গণনা করা হচ্ছে
নতুন নেটওয়ার্ক, যাদের সেল আইডি 32 বিটের বেশি তারা 64-বিট newRadioCellId
ফিল্ড ব্যবহার করে নেটওয়ার্ক সেল আইডি জিওলোকেশন API-এ পাস করার জন্য।
- NR (5G) নেটওয়ার্কগুলি 36-বিট নিউ রেডিও সেল আইডেন্টিটি (NCI) ব্যবহার করে।
বৈধ পরিসীমা: 0–68719476735।
NR সেল টাওয়ার অবজেক্টের একটি উদাহরণ, যা অনুরোধের অংশের অংশ, নীচে দেওয়া হল।
{ ... "cellTowers": [ { "newRadioCellId": 68719476735, "mobileCountryCode": 310, "mobileNetworkCode": 410, "age": 0, "signalStrength": -60, } ] }
পূর্ববর্তী অনুরোধের প্রতিক্রিয়া এই মত দেখায়:
{ "location": { "lat": 37.7646157, "lng": -122.4127361 }, "accuracy": 1458.5570522410717 }
ওয়াইফাই অ্যাক্সেস পয়েন্ট অবজেক্ট
অনুরোধের বডির wifiAccessPoints
অ্যারেতে অবশ্যই দুই বা তার বেশি WiFi অ্যাক্সেস পয়েন্ট অবজেক্ট থাকতে হবে যা শারীরিকভাবে স্বতন্ত্র স্থির অ্যাক্সেস পয়েন্ট ডিভাইসগুলির প্রতিনিধিত্ব করে৷ macAddress
ক্ষেত্র আবশ্যক। অন্য সব ক্ষেত্র ঐচ্ছিক. পরিষেবাটি অ্যাক্সেস পয়েন্টগুলিকে উপেক্ষা করে যা চলাচল করে, যেমন বিমান এবং ট্রেনগুলিতে।
মাঠ | JSON প্রকার | বর্ণনা | নোট |
---|---|---|---|
macAddress | string | ওয়াইফাই নোডের MAC ঠিকানা। এটিকে সাধারণত একটি BSS, BSSID বা MAC ঠিকানা বলা হয়। | প্রয়োজন। কোলন-বিচ্ছিন্ন ( : ) হেক্সাডেসিমেল স্ট্রিং।শুধুমাত্র সার্বজনীনভাবে পরিচালিত MAC ঠিকানাগুলি API ব্যবহার করে অবস্থিত হতে পারে। অন্যান্য MAC ঠিকানাগুলি নিঃশব্দে বাদ দেওয়া হয় এবং একটি API অনুরোধ কার্যকরভাবে খালি হয়ে যেতে পারে। বিস্তারিত জানার জন্য, অকেজো ওয়াইফাই অ্যাক্সেস পয়েন্ট ড্রপিং দেখুন। |
signalStrength | number ( double ) | বর্তমান সংকেত শক্তি dBm এ পরিমাপ করা হয়। | ওয়াইফাই অ্যাক্সেস পয়েন্টগুলির জন্য, dBm মানগুলি সাধারণত -35 বা কম এবং -128 থেকে -10 dBm পর্যন্ত হয়৷ বিয়োগ চিহ্ন অন্তর্ভুক্ত করতে ভুলবেন না। -10 dBm-এর বেশি মানের জন্য, API প্রদান করে NOT FOUND । |
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 }
পূর্ববর্তী অনুরোধের প্রতিক্রিয়া এই মত দেখায়:
{ "location": { "lat": 37.7801129, "lng": -122.4168229 }, "accuracy": 180.052 }
নমুনা অনুরোধ
আপনি যদি নমুনা ডেটা সহ জিওলোকেশন 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
es সহ WiFi অ্যাক্সেস পয়েন্ট অবজেক্টগুলিকে সরিয়ে দেওয়া জিওলোকেশন API কলগুলির সাফল্যের হারকে উন্নত করতে পারে যা ইনপুট হিসাবে WiFi ব্যবহার করে৷ যদি, ফিল্টার করার পরে, এটি নির্ধারণ করা যায় যে একটি জিওলোকেশন API কল সফল হবে না, তবে দুর্বল সংকেত সহ পুরানো অবস্থান সংকেত বা WiFi AP ব্যবহার করার মতো প্রশমনগুলি ব্যবহার করা যেতে পারে৷ এই পদ্ধতিটি একটি অবস্থান অনুমানের জন্য আপনার আবেদনের প্রয়োজনীয়তা এবং এর নির্ভুলতা এবং প্রত্যাহার প্রয়োজনীয়তার মধ্যে একটি ট্রেডঅফ। নিম্নলিখিত ফিল্টারিং কৌশলগুলি প্রদর্শন করে যে কীভাবে ইনপুটগুলি ফিল্টার করতে হয়, তবে অ্যাপ্লিকেশন প্রকৌশলী হিসাবে আপনি আবেদন করতে বেছে নিতে পারেন এমন প্রশমনগুলি দেখান না।
স্থানীয়ভাবে পরিচালিত MAC ঠিকানাগুলি API-এর জন্য উপযোগী অবস্থান সংকেত নয় এবং নীরবে অনুরোধ থেকে বাদ দেওয়া হয়। আপনি macAddress
এর সবচেয়ে-গুরুত্বপূর্ণ বাইটের দ্বিতীয় সর্বনিম্ন-গুরুত্বপূর্ণ বিটটি 0
, যেমন 02:00:00:00:00:00
মধ্যে 2
দ্বারা প্রতিনিধিত্ব করা 1
বিট নিশ্চিত করে এই ধরনের MAC ঠিকানাগুলি সরিয়ে ফেলতে পারেন। সম্প্রচারিত MAC ঠিকানা ( FF:FF:FF:FF:FF:FF
) হল একটি MAC ঠিকানার উদাহরণ যা এই ফিল্টার দ্বারা কার্যকরভাবে বাদ দেওয়া হবে৷
00:00:5E:00:00:00
এবং 00:00:5E:FF:FF:FF
মধ্যে MAC ঠিকানাগুলির পরিসর 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
তালিকায় অবশিষ্ট থাকে। যেহেতু এই তালিকায় 2টিরও কম ওয়াইফাই MAC ঠিকানা রয়েছে, তাই অনুরোধটি সফল হবে না এবং একটি HTTP 404 ( notFound
) প্রতিক্রিয়া ফেরত দেওয়া হবে৷
ভূ-অবস্থান প্রতিক্রিয়া
একটি সফল ভূ-অবস্থান অনুরোধ একটি অবস্থান এবং ব্যাসার্ধ সংজ্ঞায়িত করে একটি JSON-ফরম্যাটেড প্রতিক্রিয়া প্রদান করে।
-
location
: ব্যবহারকারীর আনুমানিক অক্ষাংশ এবং দ্রাঘিমাংশ স্থানাঙ্ক, ডিগ্রীতে। একটিlat
এবং একটিlng
সাবফিল্ড রয়েছে৷ -
accuracy
: আনুমানিক অবস্থানের নির্ভুলতা, মিটারে। এটি প্রদত্তlocation
চারপাশে একটি বৃত্তের ব্যাসার্ধকে উপস্থাপন করে।
{ "location": { "lat": 37.421875199999995, "lng": -122.0851173 }, "accuracy": 120 }
ভূ-অবস্থান অনুরোধ
ভৌগলিক অবস্থানের অনুরোধগুলি POST ব্যবহার করে নিম্নলিখিত URL এ পাঠানো হয়:
https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR_API_KEY
আপনার অনুরোধে আপনাকে অবশ্যই একটি কী নির্দিষ্ট করতে হবে, একটি key
প্যারামিটারের মান হিসাবে অন্তর্ভুক্ত করা হয়েছে। একটি key
হল আপনার অ্যাপ্লিকেশনের API কী। এই কী কোটা ব্যবস্থাপনার উদ্দেশ্যে আপনার আবেদনকে চিহ্নিত করে। কিভাবে একটি চাবি পেতে শিখুন.
শরীরের অনুরোধ
অনুরোধের অংশ অবশ্যই JSON হিসাবে ফর্ম্যাট করা উচিত। যদি অনুরোধের অংশটি অন্তর্ভুক্ত না করা হয়, তাহলে অনুরোধের অবস্থানের IP ঠিকানার উপর ভিত্তি করে ফলাফলগুলি ফেরত দেওয়া হয়। নিম্নলিখিত ক্ষেত্রগুলি সমর্থিত, এবং সমস্ত ক্ষেত্র ঐচ্ছিক, যদি না অন্যথায় বলা হয়:
মাঠ | JSON প্রকার | বর্ণনা | নোট |
---|---|---|---|
homeMobileCountryCode | number ( uint32 ) | ডিভাইসের হোম নেটওয়ার্কের জন্য মোবাইল কান্ট্রি কোড (MCC)। | radioType gsm (ডিফল্ট), wcdma , lte এবং nr জন্য সমর্থিত ; cdma এর জন্য ব্যবহার করা হয় না।বৈধ পরিসীমা: 0-999। |
homeMobileNetworkCode | number ( uint32 ) | ডিভাইসের হোম নেটওয়ার্কের জন্য মোবাইল নেটওয়ার্ক কোড। এটি GSM, WCDMA, LTE এবং NR-এর জন্য MNC। CDMA সিস্টেম আইডি (SID) ব্যবহার করে | MNC এর জন্য বৈধ পরিসীমা: 0-999। SID-এর জন্য বৈধ পরিসর: 0–32767। |
radioType | string | মোবাইল রেডিও প্রকার। সমর্থিত মানগুলি হল gsm , cdma , wcdma , lte এবং nr । | যদিও এই ক্ষেত্রটি ঐচ্ছিক, এটি সর্বদা অন্তর্ভুক্ত করা উচিত যদি রেডিও প্রকারটি ক্লায়েন্ট দ্বারা পরিচিত হয়। যদি ক্ষেত্রটি বাদ দেওয়া হয়, জিওলোকেশন এপিআই ডিফল্ট gsm , যার ফলে রেডিও টাইপটি ভুল হলে অবৈধ বা শূন্য ফলাফল হবে ৷ |
carrier | string | বাহকের নাম। | |
considerIp | boolean | ওয়াইফাই এবং সেল টাওয়ার সিগন্যাল অনুপস্থিত, খালি বা ডিভাইসের অবস্থান অনুমান করার জন্য যথেষ্ট না হলে IP ভূ-অবস্থানে ফিরে যেতে হবে কিনা তা নির্দিষ্ট করে৷ | ডিফল্ট থেকে true । পিছিয়ে পড়া রোধ করতে considerIp কে false সেট করুন। |
cellTowers | array | সেল টাওয়ার অবজেক্টের একটি অ্যারে। | নীচে সেল টাওয়ার অবজেক্ট বিভাগ দেখুন। |
wifiAccessPoints | array | ওয়াইফাই অ্যাক্সেস পয়েন্ট অবজেক্টের একটি অ্যারে। | নীচের ওয়াইফাই অ্যাক্সেস পয়েন্ট অবজেক্ট বিভাগ দেখুন। |
একটি উদাহরণ Geolocation API অনুরোধের বডি নীচে দেখানো হয়েছে।
{ "homeMobileCountryCode": 310, "homeMobileNetworkCode": 410, "radioType": "lte", "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 ) | NR (5G) সেলের অনন্য শনাক্তকারী। | radioType nr জন্য প্রয়োজনীয় ; অন্যান্য ধরনের জন্য প্রত্যাখ্যাত ।নীচের গণনা করা newRadioCellId বিভাগটি দেখুন, যা ক্ষেত্রের জন্য বৈধ মানের পরিসরও তালিকাভুক্ত করে। |
locationAreaCode | number ( uint32 ) | GSM এবং WCDMA নেটওয়ার্কের জন্য লোকেশন এরিয়া কোড (LAC)। CDMA নেটওয়ার্কের জন্য নেটওয়ার্ক আইডি (NID)। LTE এবং NR নেটওয়ার্কের জন্য ট্র্যাকিং এরিয়া কোড (TAC)। | radioType gsm (ডিফল্ট) এবং cdma জন্য প্রয়োজনীয় , অন্যান্য মানের জন্য ঐচ্ছিক।gsm , cdma , wcdma এবং lte সহ বৈধ পরিসীমা: 0–65535।nr সহ বৈধ পরিসীমা : 0–16777215৷ |
mobileCountryCode | number ( uint32 ) | সেল টাওয়ারের মোবাইল কান্ট্রি কোড (MCC)। | radioType gsm (ডিফল্ট), wcdma , lte এবং nr জন্য প্রয়োজনীয় ; cdma এর জন্য ব্যবহার করা হয় না।বৈধ পরিসীমা: 0-999। |
mobileNetworkCode | number ( uint32 ) | সেল টাওয়ারের মোবাইল নেটওয়ার্ক কোড। এটি GSM, WCDMA, LTE এবং NR-এর জন্য MNC। সিডিএমএ সিস্টেম আইডি (এসআইডি) ব্যবহার করে। | প্রয়োজন। MNC এর জন্য বৈধ পরিসীমা: 0-999। SID-এর জন্য বৈধ পরিসর: 0–32767। |
নিম্নলিখিত ঐচ্ছিক ক্ষেত্রগুলি ব্যবহার করা হয় না, তবে মান উপলব্ধ থাকলে অন্তর্ভুক্ত করা যেতে পারে।
মাঠ | JSON প্রকার | বর্ণনা | নোট |
---|---|---|---|
age | number ( uint32 ) | এই সেল প্রাথমিক হওয়ার পর থেকে মিলিসেকেন্ডের সংখ্যা৷ | বয়স 0 হলে, cellId বা newRadioCellId একটি বর্তমান পরিমাপের প্রতিনিধিত্ব করে। |
signalStrength | number ( double ) | রেডিও সংকেত শক্তি dBm পরিমাপ. | |
timingAdvance | number ( double ) | সময় অগ্রিম মান. |
cellId
গণনা করা হচ্ছে
NR (5G) এর পূর্বের রেডিও প্রকারগুলি 32-বিট cellId
ক্ষেত্র ব্যবহার করে জিওলোকেশন API এ নেটওয়ার্ক সেল আইডি পাস করার জন্য।
- জিএসএম (2জি) নেটওয়ার্কগুলি 16-বিট সেল আইডি (সিআইডি) ব্যবহার করে। বৈধ পরিসীমা: 0-65535।
- CDMA (2G) নেটওয়ার্ক 16-বিট বেস স্টেশন আইডি (BID) ব্যবহার করে। বৈধ পরিসীমা: 0-65535।
- WCDMA (3G) নেটওয়ার্কগুলি UTRAN/GERAN সেল আইডেন্টিটি (UC-ID) ব্যবহার করে, যা একটি 28-বিট পূর্ণসংখ্যা মান যা 12-বিট রেডিও নেটওয়ার্ক কন্ট্রোলার আইডেন্টিফায়ার (RNC-ID) এবং 16-বিট সেল আইডি (CID) কে সংযুক্ত করে।
সূত্র:rnc_id << 16 | cid
বৈধ পরিসীমা: 0–268435455।
দ্রষ্টব্য: WCDMA নেটওয়ার্কে শুধুমাত্র 16-বিট সেল আইডি মান উল্লেখ করলে ফলাফল ভুল বা শূন্য হয়। - এলটিই (4জি) নেটওয়ার্কগুলি ই-ইউট্রান সেল আইডেন্টিটি (ইসিআই) ব্যবহার করে, যা একটি 28-বিট পূর্ণসংখ্যা মান যা 20-বিট ই-ইউট্রান নোড বি আইডেন্টিফায়ার (ইএনবিআইডি) এবং 8-বিট সেল আইডি (সিআইডি) কে সংযুক্ত করে।
সূত্র:enb_id << 8 | cid
বৈধ পরিসীমা: 0–268435455।
দ্রষ্টব্য: LTE নেটওয়ার্কে শুধুমাত্র 8-বিট সেল আইডি মান উল্লেখ করলে ফলাফল ভুল বা শূন্য হয়।
API অনুরোধে এই সীমার বাইরে মান স্থাপন করলে অনির্ধারিত আচরণ হতে পারে। এপিআই, Google-এর বিবেচনার ভিত্তিতে, সংখ্যাটিকে ছেঁটে ফেলতে পারে যাতে এটি নথিভুক্ত পরিসরে ফিট করে, radioType
এ একটি সংশোধন অনুমান করতে পারে, বা প্রতিক্রিয়াতে কোনও সূচক ছাড়াই একটি NOT_FOUND
ফলাফল ফেরত দিতে পারে৷
LTE সেল টাওয়ার অবজেক্টের একটি উদাহরণ, যা অনুরোধের অংশের অংশ, নীচে দেওয়া হল৷
{ ... "cellTowers": [ { "cellId": 170402199, "locationAreaCode": 35632, "mobileCountryCode": 310, "mobileNetworkCode": 410, "age": 0, "signalStrength": -60, "timingAdvance": 15 } ] }
পূর্ববর্তী অনুরোধের প্রতিক্রিয়া এই মত দেখায়:
{ "location": { "lat": 37.7801129, "lng": -122.4168229 }, "accuracy": 180.052 }
newRadioCellId
গণনা করা হচ্ছে
নতুন নেটওয়ার্ক, যাদের সেল আইডি 32 বিটের বেশি তারা 64-বিট newRadioCellId
ফিল্ড ব্যবহার করে নেটওয়ার্ক সেল আইডি জিওলোকেশন API-এ পাস করার জন্য।
- NR (5G) নেটওয়ার্কগুলি 36-বিট নিউ রেডিও সেল আইডেন্টিটি (NCI) ব্যবহার করে।
বৈধ পরিসীমা: 0–68719476735।
NR সেল টাওয়ার অবজেক্টের একটি উদাহরণ, যা অনুরোধের অংশের অংশ, নীচে দেওয়া হল।
{ ... "cellTowers": [ { "newRadioCellId": 68719476735, "mobileCountryCode": 310, "mobileNetworkCode": 410, "age": 0, "signalStrength": -60, } ] }
পূর্ববর্তী অনুরোধের প্রতিক্রিয়া এই মত দেখায়:
{ "location": { "lat": 37.7646157, "lng": -122.4127361 }, "accuracy": 1458.5570522410717 }
ওয়াইফাই অ্যাক্সেস পয়েন্ট অবজেক্ট
অনুরোধের বডির wifiAccessPoints
অ্যারেতে অবশ্যই দুই বা তার বেশি WiFi অ্যাক্সেস পয়েন্ট অবজেক্ট থাকতে হবে যা শারীরিকভাবে স্বতন্ত্র স্থির অ্যাক্সেস পয়েন্ট ডিভাইসগুলির প্রতিনিধিত্ব করে৷ macAddress
ক্ষেত্র আবশ্যক। অন্য সব ক্ষেত্র ঐচ্ছিক. পরিষেবাটি অ্যাক্সেস পয়েন্টগুলিকে উপেক্ষা করে যা চলাচল করে, যেমন বিমান এবং ট্রেনগুলিতে।
মাঠ | JSON প্রকার | বর্ণনা | নোট |
---|---|---|---|
macAddress | string | ওয়াইফাই নোডের MAC ঠিকানা। এটিকে সাধারণত একটি BSS, BSSID বা MAC ঠিকানা বলা হয়। | প্রয়োজন। কোলন-বিচ্ছিন্ন ( : ) হেক্সাডেসিমেল স্ট্রিং।শুধুমাত্র সার্বজনীনভাবে পরিচালিত MAC ঠিকানাগুলি API ব্যবহার করে অবস্থিত হতে পারে। অন্যান্য MAC ঠিকানাগুলি নিঃশব্দে বাদ দেওয়া হয় এবং একটি API অনুরোধ কার্যকরভাবে খালি হয়ে যেতে পারে। বিস্তারিত জানার জন্য, অকেজো ওয়াইফাই অ্যাক্সেস পয়েন্ট ড্রপিং দেখুন। |
signalStrength | number ( double ) | বর্তমান সংকেত শক্তি dBm এ পরিমাপ করা হয়। | ওয়াইফাই অ্যাক্সেস পয়েন্টগুলির জন্য, dBm মানগুলি সাধারণত -35 বা কম এবং -128 থেকে -10 dBm পর্যন্ত হয়৷ বিয়োগ চিহ্ন অন্তর্ভুক্ত করতে ভুলবেন না। -10 dBm-এর বেশি মানের জন্য, API প্রদান করে NOT FOUND । |
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 }
পূর্ববর্তী অনুরোধের প্রতিক্রিয়া এই মত দেখায়:
{ "location": { "lat": 37.7801129, "lng": -122.4168229 }, "accuracy": 180.052 }
নমুনা অনুরোধ
আপনি যদি নমুনা ডেটা সহ জিওলোকেশন 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
es সহ WiFi অ্যাক্সেস পয়েন্ট অবজেক্টগুলিকে সরিয়ে দেওয়া জিওলোকেশন API কলগুলির সাফল্যের হারকে উন্নত করতে পারে যা ইনপুট হিসাবে WiFi ব্যবহার করে৷ যদি, ফিল্টার করার পরে, এটি নির্ধারণ করা যায় যে একটি জিওলোকেশন API কল সফল হবে না, তবে দুর্বল সংকেত সহ পুরানো অবস্থান সংকেত বা WiFi AP ব্যবহার করার মতো প্রশমনগুলি ব্যবহার করা যেতে পারে৷ এই পদ্ধতিটি একটি অবস্থান অনুমানের জন্য আপনার আবেদনের প্রয়োজনীয়তা এবং এর নির্ভুলতা এবং প্রত্যাহার প্রয়োজনীয়তার মধ্যে একটি ট্রেডঅফ। নিম্নলিখিত ফিল্টারিং কৌশলগুলি প্রদর্শন করে যে কীভাবে ইনপুটগুলি ফিল্টার করতে হয়, তবে অ্যাপ্লিকেশন প্রকৌশলী হিসাবে আপনি আবেদন করতে বেছে নিতে পারেন এমন প্রশমনগুলি দেখান না।
স্থানীয়ভাবে পরিচালিত MAC ঠিকানাগুলি API-এর জন্য উপযোগী অবস্থান সংকেত নয় এবং নীরবে অনুরোধ থেকে বাদ দেওয়া হয়। আপনি macAddress
এর সবচেয়ে-গুরুত্বপূর্ণ বাইটের দ্বিতীয় সর্বনিম্ন-গুরুত্বপূর্ণ বিটটি 0
, যেমন 02:00:00:00:00:00
মধ্যে 2
দ্বারা প্রতিনিধিত্ব করা 1
বিট নিশ্চিত করে এই ধরনের MAC ঠিকানাগুলি সরিয়ে ফেলতে পারেন। সম্প্রচারিত MAC ঠিকানা ( FF:FF:FF:FF:FF:FF
) হল একটি MAC ঠিকানার উদাহরণ যা এই ফিল্টার দ্বারা কার্যকরভাবে বাদ দেওয়া হবে৷
00:00:5E:00:00:00
এবং 00:00:5E:FF:FF:FF
মধ্যে MAC ঠিকানাগুলির পরিসর 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
তালিকায় অবশিষ্ট থাকে। যেহেতু এই তালিকায় 2টিরও কম ওয়াইফাই MAC ঠিকানা রয়েছে, তাই অনুরোধটি সফল হবে না এবং একটি HTTP 404 ( notFound
) প্রতিক্রিয়া ফেরত দেওয়া হবে৷
ভূ-অবস্থান প্রতিক্রিয়া
একটি সফল ভূ-অবস্থান অনুরোধ একটি অবস্থান এবং ব্যাসার্ধ সংজ্ঞায়িত করে একটি JSON-ফরম্যাটেড প্রতিক্রিয়া প্রদান করে।
-
location
: ব্যবহারকারীর আনুমানিক অক্ষাংশ এবং দ্রাঘিমাংশ স্থানাঙ্ক, ডিগ্রীতে। একটিlat
এবং একটিlng
সাবফিল্ড রয়েছে৷ -
accuracy
: আনুমানিক অবস্থানের নির্ভুলতা, মিটারে। এটি প্রদত্তlocation
চারপাশে একটি বৃত্তের ব্যাসার্ধকে উপস্থাপন করে।
{ "location": { "lat": 37.421875199999995, "lng": -122.0851173 }, "accuracy": 120 }
ভূ-অবস্থান অনুরোধ
ভৌগলিক অবস্থানের অনুরোধগুলি POST ব্যবহার করে নিম্নলিখিত URL এ পাঠানো হয়:
https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR_API_KEY
আপনার অনুরোধে আপনাকে অবশ্যই একটি কী নির্দিষ্ট করতে হবে, একটি key
প্যারামিটারের মান হিসাবে অন্তর্ভুক্ত করা হয়েছে। একটি key
হল আপনার অ্যাপ্লিকেশনের API কী। এই কী কোটা ব্যবস্থাপনার উদ্দেশ্যে আপনার আবেদনকে চিহ্নিত করে। কিভাবে একটি চাবি পেতে শিখুন.
শরীরের অনুরোধ
অনুরোধের অংশ অবশ্যই JSON হিসাবে ফর্ম্যাট করা উচিত। যদি অনুরোধের অংশটি অন্তর্ভুক্ত না করা হয়, তাহলে অনুরোধের অবস্থানের IP ঠিকানার উপর ভিত্তি করে ফলাফলগুলি ফেরত দেওয়া হয়। নিম্নলিখিত ক্ষেত্রগুলি সমর্থিত, এবং সমস্ত ক্ষেত্র ঐচ্ছিক, যদি না অন্যথায় বলা হয়:
মাঠ | JSON প্রকার | বর্ণনা | নোট |
---|---|---|---|
homeMobileCountryCode | number ( uint32 ) | ডিভাইসের হোম নেটওয়ার্কের জন্য মোবাইল কান্ট্রি কোড (MCC)। | radioType gsm (ডিফল্ট), wcdma , lte এবং nr জন্য সমর্থিত ; cdma এর জন্য ব্যবহার করা হয় না।বৈধ পরিসীমা: 0-999। |
homeMobileNetworkCode | number ( uint32 ) | ডিভাইসের হোম নেটওয়ার্কের জন্য মোবাইল নেটওয়ার্ক কোড। এটি GSM, WCDMA, LTE এবং NR-এর জন্য MNC। CDMA সিস্টেম আইডি (SID) ব্যবহার করে | MNC এর জন্য বৈধ পরিসীমা: 0-999। SID-এর জন্য বৈধ পরিসর: 0–32767। |
radioType | string | মোবাইল রেডিও প্রকার। সমর্থিত মানগুলি হল gsm , cdma , wcdma , lte এবং nr । | যদিও এই ক্ষেত্রটি ঐচ্ছিক, এটি সর্বদা অন্তর্ভুক্ত করা উচিত যদি রেডিও প্রকারটি ক্লায়েন্ট দ্বারা পরিচিত হয়। যদি ক্ষেত্রটি বাদ দেওয়া হয়, জিওলোকেশন এপিআই ডিফল্ট gsm , যার ফলে রেডিও টাইপটি ভুল হলে অবৈধ বা শূন্য ফলাফল হবে ৷ |
carrier | string | বাহকের নাম। | |
considerIp | boolean | ওয়াইফাই এবং সেল টাওয়ার সিগন্যাল অনুপস্থিত, খালি বা ডিভাইসের অবস্থান অনুমান করার জন্য যথেষ্ট না হলে IP ভূ-অবস্থানে ফিরে যেতে হবে কিনা তা নির্দিষ্ট করে৷ | ডিফল্ট থেকে true । পিছিয়ে পড়া রোধ করতে considerIp কে false সেট করুন। |
cellTowers | array | সেল টাওয়ার অবজেক্টের একটি অ্যারে। | নীচে সেল টাওয়ার অবজেক্ট বিভাগ দেখুন। |
wifiAccessPoints | array | ওয়াইফাই অ্যাক্সেস পয়েন্ট অবজেক্টের একটি অ্যারে। | নীচের ওয়াইফাই অ্যাক্সেস পয়েন্ট অবজেক্ট বিভাগ দেখুন। |
একটি উদাহরণ Geolocation API অনুরোধের বডি নীচে দেখানো হয়েছে।
{ "homeMobileCountryCode": 310, "homeMobileNetworkCode": 410, "radioType": "lte", "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 ) | NR (5G) সেলের অনন্য শনাক্তকারী। | radioType nr এর জন্য প্রয়োজনীয় ; অন্যান্য ধরনের জন্য প্রত্যাখ্যাত ।নীচের গণনা করা newRadioCellId বিভাগটি দেখুন, যা ক্ষেত্রের জন্য বৈধ মানের পরিসরও তালিকাভুক্ত করে। |
locationAreaCode | number ( uint32 ) | GSM এবং WCDMA নেটওয়ার্কের জন্য লোকেশন এরিয়া কোড (LAC)। CDMA নেটওয়ার্কের জন্য নেটওয়ার্ক আইডি (NID)। LTE এবং NR নেটওয়ার্কের জন্য ট্র্যাকিং এরিয়া কোড (TAC)। | radioType gsm (ডিফল্ট) এবং cdma জন্য প্রয়োজনীয় , অন্যান্য মানের জন্য ঐচ্ছিক।gsm , cdma , wcdma এবং lte সহ বৈধ পরিসীমা: 0–65535।nr সহ বৈধ পরিসীমা : 0–16777215৷ |
mobileCountryCode | number ( uint32 ) | সেল টাওয়ারের মোবাইল কান্ট্রি কোড (MCC)। | radioType gsm (ডিফল্ট), wcdma , lte এবং nr জন্য প্রয়োজনীয় ; cdma এর জন্য ব্যবহার করা হয় না।বৈধ পরিসীমা: 0-999। |
mobileNetworkCode | number ( uint32 ) | সেল টাওয়ারের মোবাইল নেটওয়ার্ক কোড। এটি GSM, WCDMA, LTE এবং NR-এর জন্য MNC। সিডিএমএ সিস্টেম আইডি (এসআইডি) ব্যবহার করে। | প্রয়োজন। MNC এর জন্য বৈধ পরিসীমা: 0-999। SID-এর জন্য বৈধ পরিসর: 0–32767। |
নিম্নলিখিত ঐচ্ছিক ক্ষেত্রগুলি ব্যবহার করা হয় না, তবে মান উপলব্ধ থাকলে অন্তর্ভুক্ত করা যেতে পারে।
মাঠ | JSON প্রকার | বর্ণনা | নোট |
---|---|---|---|
age | number ( uint32 ) | এই সেল প্রাথমিক হওয়ার পর থেকে মিলিসেকেন্ডের সংখ্যা৷ | বয়স 0 হলে, cellId বা newRadioCellId একটি বর্তমান পরিমাপের প্রতিনিধিত্ব করে। |
signalStrength | number ( double ) | রেডিও সংকেত শক্তি dBm পরিমাপ. | |
timingAdvance | number ( double ) | সময় অগ্রিম মান. |
cellId
গণনা করা হচ্ছে
NR (5G) এর পূর্বের রেডিও প্রকারগুলি 32-বিট cellId
ক্ষেত্র ব্যবহার করে জিওলোকেশন API এ নেটওয়ার্ক সেল আইডি পাস করার জন্য।
- জিএসএম (2জি) নেটওয়ার্কগুলি 16-বিট সেল আইডি (সিআইডি) ব্যবহার করে। বৈধ পরিসীমা: 0-65535।
- CDMA (2G) নেটওয়ার্ক 16-বিট বেস স্টেশন আইডি (BID) ব্যবহার করে। বৈধ পরিসীমা: 0-65535।
- WCDMA (3G) নেটওয়ার্কগুলি UTRAN/GERAN সেল আইডেন্টিটি (UC-ID) ব্যবহার করে, যা একটি 28-বিট পূর্ণসংখ্যা মান যা 12-বিট রেডিও নেটওয়ার্ক কন্ট্রোলার আইডেন্টিফায়ার (RNC-ID) এবং 16-বিট সেল আইডি (CID) কে সংযুক্ত করে।
সূত্র:rnc_id << 16 | cid
বৈধ পরিসীমা: 0–268435455।
দ্রষ্টব্য: WCDMA নেটওয়ার্কে শুধুমাত্র 16-বিট সেল আইডি মান উল্লেখ করলে ফলাফল ভুল বা শূন্য হয়। - এলটিই (4জি) নেটওয়ার্কগুলি ই-ইউট্রান সেল আইডেন্টিটি (ইসিআই) ব্যবহার করে, যা একটি 28-বিট পূর্ণসংখ্যা মান যা 20-বিট ই-ইউট্রান নোড বি আইডেন্টিফায়ার (ইএনবিআইডি) এবং 8-বিট সেল আইডি (সিআইডি) কে সংযুক্ত করে।
সূত্র:enb_id << 8 | cid
বৈধ পরিসীমা: 0–268435455।
দ্রষ্টব্য: LTE নেটওয়ার্কে শুধুমাত্র 8-বিট সেল আইডি মান উল্লেখ করলে ফলাফল ভুল বা শূন্য হয়।
API অনুরোধে এই সীমার বাইরে মান স্থাপন করলে অনির্ধারিত আচরণ হতে পারে। এপিআই, Google-এর বিবেচনার ভিত্তিতে, সংখ্যাটিকে ছেঁটে ফেলতে পারে যাতে এটি নথিভুক্ত পরিসরে ফিট করে, radioType
এ একটি সংশোধন অনুমান করতে পারে, বা প্রতিক্রিয়াতে কোনও সূচক ছাড়াই একটি NOT_FOUND
ফলাফল ফেরত দিতে পারে৷
LTE সেল টাওয়ার অবজেক্টের একটি উদাহরণ, যা অনুরোধের অংশের অংশ, নীচে দেওয়া হল৷
{ ... "cellTowers": [ { "cellId": 170402199, "locationAreaCode": 35632, "mobileCountryCode": 310, "mobileNetworkCode": 410, "age": 0, "signalStrength": -60, "timingAdvance": 15 } ] }
পূর্ববর্তী অনুরোধের প্রতিক্রিয়া এই মত দেখায়:
{ "location": { "lat": 37.7801129, "lng": -122.4168229 }, "accuracy": 180.052 }
newRadioCellId
গণনা করা হচ্ছে
নতুন নেটওয়ার্ক, যাদের সেল আইডি 32 বিটের বেশি তারা 64-বিট newRadioCellId
ফিল্ড ব্যবহার করে নেটওয়ার্ক সেল আইডি জিওলোকেশন API-এ পাস করার জন্য।
- NR (5G) নেটওয়ার্কগুলি 36-বিট নিউ রেডিও সেল আইডেন্টিটি (NCI) ব্যবহার করে।
বৈধ পরিসীমা: 0–68719476735।
NR সেল টাওয়ার অবজেক্টের একটি উদাহরণ, যা অনুরোধের অংশের অংশ, নীচে দেওয়া হল।
{ ... "cellTowers": [ { "newRadioCellId": 68719476735, "mobileCountryCode": 310, "mobileNetworkCode": 410, "age": 0, "signalStrength": -60, } ] }
পূর্ববর্তী অনুরোধের প্রতিক্রিয়া এই মত দেখায়:
{ "location": { "lat": 37.7646157, "lng": -122.4127361 }, "accuracy": 1458.5570522410717 }
ওয়াইফাই অ্যাক্সেস পয়েন্ট অবজেক্ট
অনুরোধের বডির wifiAccessPoints
অ্যারেতে অবশ্যই দুই বা তার বেশি WiFi অ্যাক্সেস পয়েন্ট অবজেক্ট থাকতে হবে যা শারীরিকভাবে স্বতন্ত্র স্থির অ্যাক্সেস পয়েন্ট ডিভাইসগুলির প্রতিনিধিত্ব করে৷ macAddress
ক্ষেত্র আবশ্যক। অন্য সব ক্ষেত্র ঐচ্ছিক. পরিষেবাটি অ্যাক্সেস পয়েন্টগুলিকে উপেক্ষা করে যা চলাচল করে, যেমন বিমান এবং ট্রেনগুলিতে।
মাঠ | JSON প্রকার | বর্ণনা | নোট |
---|---|---|---|
macAddress | string | ওয়াইফাই নোডের MAC ঠিকানা। এটিকে সাধারণত একটি BSS, BSSID বা MAC ঠিকানা বলা হয়। | প্রয়োজন। কোলন-বিচ্ছিন্ন ( : ) হেক্সাডেসিমেল স্ট্রিং।শুধুমাত্র সার্বজনীনভাবে পরিচালিত MAC ঠিকানাগুলি API ব্যবহার করে অবস্থিত হতে পারে। অন্যান্য MAC ঠিকানাগুলি নিঃশব্দে বাদ দেওয়া হয় এবং একটি API অনুরোধ কার্যকরভাবে খালি হয়ে যেতে পারে। বিস্তারিত জানার জন্য, অকেজো ওয়াইফাই অ্যাক্সেস পয়েন্ট ড্রপিং দেখুন। |
signalStrength | number ( double ) | বর্তমান সংকেত শক্তি dBm এ পরিমাপ করা হয়। | ওয়াইফাই অ্যাক্সেস পয়েন্টগুলির জন্য, dBm মানগুলি সাধারণত -35 বা কম এবং -128 থেকে -10 dBm পর্যন্ত হয়৷ বিয়োগ চিহ্ন অন্তর্ভুক্ত করতে ভুলবেন না। -10 dBm-এর বেশি মানের জন্য, API প্রদান করে NOT FOUND । |
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 }
পূর্ববর্তী অনুরোধের প্রতিক্রিয়া এই মত দেখায়:
{ "location": { "lat": 37.7801129, "lng": -122.4168229 }, "accuracy": 180.052 }
নমুনা অনুরোধ
আপনি যদি নমুনা ডেটা সহ জিওলোকেশন 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
es সহ WiFi অ্যাক্সেস পয়েন্ট অবজেক্টগুলিকে সরিয়ে দেওয়া জিওলোকেশন API কলগুলির সাফল্যের হারকে উন্নত করতে পারে যা ইনপুট হিসাবে WiFi ব্যবহার করে৷ যদি, ফিল্টার করার পরে, এটি নির্ধারণ করা যায় যে একটি জিওলোকেশন API কল সফল হবে না, তবে দুর্বল সংকেত সহ পুরানো অবস্থান সংকেত বা WiFi AP ব্যবহার করার মতো প্রশমনগুলি ব্যবহার করা যেতে পারে৷ এই পদ্ধতিটি একটি অবস্থান অনুমানের জন্য আপনার আবেদনের প্রয়োজনীয়তা এবং এর নির্ভুলতা এবং প্রত্যাহার প্রয়োজনীয়তার মধ্যে একটি ট্রেডঅফ। নিম্নলিখিত ফিল্টারিং কৌশলগুলি প্রদর্শন করে যে কীভাবে ইনপুটগুলি ফিল্টার করতে হয়, তবে অ্যাপ্লিকেশন প্রকৌশলী হিসাবে আপনি আবেদন করতে বেছে নিতে পারেন এমন প্রশমনগুলি দেখান না।
স্থানীয়ভাবে পরিচালিত MAC ঠিকানাগুলি API-এর জন্য উপযোগী অবস্থান সংকেত নয় এবং নীরবে অনুরোধ থেকে বাদ দেওয়া হয়। আপনি macAddress
এর সবচেয়ে-গুরুত্বপূর্ণ বাইটের দ্বিতীয় সর্বনিম্ন-গুরুত্বপূর্ণ বিটটি 0
, যেমন 02:00:00:00:00:00
মধ্যে 2
দ্বারা প্রতিনিধিত্ব করা 1
বিট নিশ্চিত করে এই ধরনের MAC ঠিকানাগুলি সরিয়ে ফেলতে পারেন। সম্প্রচারিত MAC ঠিকানা ( FF:FF:FF:FF:FF:FF
) হল একটি MAC ঠিকানার উদাহরণ যা এই ফিল্টার দ্বারা কার্যকরভাবে বাদ দেওয়া হবে৷
00:00:5E:00:00:00
এবং 00:00:5E:FF:FF:FF
মধ্যে MAC ঠিকানাগুলির পরিসর 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
তালিকায় অবশিষ্ট থাকে। যেহেতু এই তালিকায় 2টিরও কম ওয়াইফাই MAC ঠিকানা রয়েছে, তাই অনুরোধটি সফল হবে না এবং একটি HTTP 404 ( notFound
) প্রতিক্রিয়া ফেরত দেওয়া হবে৷
ভূ-অবস্থান প্রতিক্রিয়া
একটি সফল ভূ-অবস্থান অনুরোধ একটি অবস্থান এবং ব্যাসার্ধ সংজ্ঞায়িত করে একটি JSON-ফরম্যাটেড প্রতিক্রিয়া প্রদান করে।
-
location
: ব্যবহারকারীর আনুমানিক অক্ষাংশ এবং দ্রাঘিমাংশ স্থানাঙ্ক, ডিগ্রীতে। একটিlat
এবং একটিlng
সাবফিল্ড রয়েছে৷ -
accuracy
: আনুমানিক অবস্থানের নির্ভুলতা, মিটারে। এটি প্রদত্তlocation
চারপাশে একটি বৃত্তের ব্যাসার্ধকে উপস্থাপন করে।
{ "location": { "lat": 37.421875199999995, "lng": -122.0851173 }, "accuracy": 120 }
ভূ-অবস্থান অনুরোধ
ভৌগলিক অবস্থানের অনুরোধগুলি POST ব্যবহার করে নিম্নলিখিত URL এ পাঠানো হয়:
https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR_API_KEY
আপনার অনুরোধে আপনাকে অবশ্যই একটি কী নির্দিষ্ট করতে হবে, একটি key
প্যারামিটারের মান হিসাবে অন্তর্ভুক্ত করা হয়েছে। একটি key
হল আপনার অ্যাপ্লিকেশনের API কী। এই কী কোটা ব্যবস্থাপনার উদ্দেশ্যে আপনার আবেদনকে চিহ্নিত করে। কিভাবে একটি চাবি পেতে শিখুন.
শরীরের অনুরোধ
অনুরোধের অংশ অবশ্যই JSON হিসাবে ফর্ম্যাট করা উচিত। যদি অনুরোধের অংশটি অন্তর্ভুক্ত না করা হয়, তাহলে অনুরোধের অবস্থানের IP ঠিকানার উপর ভিত্তি করে ফলাফলগুলি ফেরত দেওয়া হয়। নিম্নলিখিত ক্ষেত্রগুলি সমর্থিত, এবং সমস্ত ক্ষেত্র ঐচ্ছিক, যদি না অন্যথায় বলা হয়:
মাঠ | JSON প্রকার | বর্ণনা | নোট |
---|---|---|---|
homeMobileCountryCode | number ( uint32 ) | ডিভাইসের হোম নেটওয়ার্কের জন্য মোবাইল কান্ট্রি কোড (MCC)। | radioType gsm (ডিফল্ট), wcdma , lte এবং nr জন্য সমর্থিত ; cdma এর জন্য ব্যবহার করা হয় না।বৈধ পরিসীমা: 0-999। |
homeMobileNetworkCode | number ( uint32 ) | ডিভাইসের হোম নেটওয়ার্কের জন্য মোবাইল নেটওয়ার্ক কোড। এটি GSM, WCDMA, LTE এবং NR-এর জন্য MNC। CDMA সিস্টেম আইডি (SID) ব্যবহার করে | MNC এর জন্য বৈধ পরিসীমা: 0-999। SID-এর জন্য বৈধ পরিসর: 0–32767। |
radioType | string | মোবাইল রেডিও প্রকার। সমর্থিত মানগুলি হল gsm , cdma , wcdma , lte এবং nr । | যদিও এই ক্ষেত্রটি ঐচ্ছিক, এটি সর্বদা অন্তর্ভুক্ত করা উচিত যদি রেডিও প্রকারটি ক্লায়েন্ট দ্বারা পরিচিত হয়। যদি ক্ষেত্রটি বাদ দেওয়া হয়, জিওলোকেশন এপিআই ডিফল্ট gsm , যার ফলে রেডিও টাইপটি ভুল হলে অবৈধ বা শূন্য ফলাফল হবে ৷ |
carrier | string | বাহকের নাম। | |
considerIp | boolean | ওয়াইফাই এবং সেল টাওয়ার সিগন্যাল অনুপস্থিত, খালি বা ডিভাইসের অবস্থান অনুমান করার জন্য যথেষ্ট না হলে IP ভূ-অবস্থানে ফিরে যেতে হবে কিনা তা নির্দিষ্ট করে৷ | ডিফল্ট থেকে true । পিছিয়ে পড়া রোধ করতে considerIp কে false সেট করুন। |
cellTowers | array | সেল টাওয়ার অবজেক্টের একটি অ্যারে। | নীচে সেল টাওয়ার অবজেক্ট বিভাগ দেখুন। |
wifiAccessPoints | array | ওয়াইফাই অ্যাক্সেস পয়েন্ট অবজেক্টের একটি অ্যারে। | নীচের ওয়াইফাই অ্যাক্সেস পয়েন্ট অবজেক্ট বিভাগ দেখুন। |
একটি উদাহরণ Geolocation API অনুরোধের বডি নীচে দেখানো হয়েছে।
{ "homeMobileCountryCode": 310, "homeMobileNetworkCode": 410, "radioType": "lte", "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 ) | NR (5G) সেলের অনন্য শনাক্তকারী। | radioType nr এর জন্য প্রয়োজনীয় ; অন্যান্য ধরনের জন্য প্রত্যাখ্যাত ।নীচের গণনা করা newRadioCellId বিভাগটি দেখুন, যা ক্ষেত্রের জন্য বৈধ মানের পরিসরও তালিকাভুক্ত করে। |
locationAreaCode | number ( uint32 ) | GSM এবং WCDMA নেটওয়ার্কের জন্য লোকেশন এরিয়া কোড (LAC)। CDMA নেটওয়ার্কের জন্য নেটওয়ার্ক আইডি (NID)। LTE এবং NR নেটওয়ার্কের জন্য ট্র্যাকিং এরিয়া কোড (TAC)। | radioType gsm (ডিফল্ট) এবং cdma জন্য প্রয়োজনীয় , অন্যান্য মানের জন্য ঐচ্ছিক।gsm , cdma , wcdma এবং lte সহ বৈধ পরিসীমা: 0–65535।nr সহ বৈধ পরিসীমা : 0–16777215৷ |
mobileCountryCode | number ( uint32 ) | সেল টাওয়ারের মোবাইল কান্ট্রি কোড (MCC)। | radioType gsm (ডিফল্ট), wcdma , lte এবং nr জন্য প্রয়োজনীয় ; cdma এর জন্য ব্যবহার করা হয় না।বৈধ পরিসীমা: 0-999। |
mobileNetworkCode | number ( uint32 ) | সেল টাওয়ারের মোবাইল নেটওয়ার্ক কোড। এটি GSM, WCDMA, LTE এবং NR-এর জন্য MNC। সিডিএমএ সিস্টেম আইডি (এসআইডি) ব্যবহার করে। | প্রয়োজন। MNC এর জন্য বৈধ পরিসীমা: 0-999। SID-এর জন্য বৈধ পরিসর: 0–32767। |
নিম্নলিখিত ঐচ্ছিক ক্ষেত্রগুলি ব্যবহার করা হয় না, তবে মান উপলব্ধ থাকলে অন্তর্ভুক্ত করা যেতে পারে।
মাঠ | JSON প্রকার | বর্ণনা | নোট |
---|---|---|---|
age | number ( uint32 ) | এই সেল প্রাথমিক হওয়ার পর থেকে মিলিসেকেন্ডের সংখ্যা৷ | বয়স 0 হলে, cellId বা newRadioCellId একটি বর্তমান পরিমাপের প্রতিনিধিত্ব করে। |
signalStrength | number ( double ) | রেডিও সংকেত শক্তি dBm পরিমাপ. | |
timingAdvance | number ( double ) | সময় অগ্রিম মান. |
cellId
গণনা করা হচ্ছে
NR (5G) এর পূর্বের রেডিও প্রকারগুলি 32-বিট cellId
ক্ষেত্র ব্যবহার করে জিওলোকেশন API এ নেটওয়ার্ক সেল আইডি পাস করার জন্য।
- জিএসএম (2জি) নেটওয়ার্কগুলি 16-বিট সেল আইডি (সিআইডি) ব্যবহার করে। বৈধ পরিসীমা: 0-65535।
- CDMA (2G) নেটওয়ার্ক 16-বিট বেস স্টেশন আইডি (BID) ব্যবহার করে। বৈধ পরিসীমা: 0-65535।
- WCDMA (3G) নেটওয়ার্কগুলি UTRAN/GERAN সেল আইডেন্টিটি (UC-ID) ব্যবহার করে, যা একটি 28-বিট পূর্ণসংখ্যা মান যা 12-বিট রেডিও নেটওয়ার্ক কন্ট্রোলার আইডেন্টিফায়ার (RNC-ID) এবং 16-বিট সেল আইডি (CID) কে সংযুক্ত করে।
সূত্র:rnc_id << 16 | cid
বৈধ পরিসীমা: 0–268435455।
দ্রষ্টব্য: WCDMA নেটওয়ার্কে শুধুমাত্র 16-বিট সেল আইডি মান উল্লেখ করলে ফলাফল ভুল বা শূন্য হয়। - এলটিই (4জি) নেটওয়ার্কগুলি ই-ইউট্রান সেল আইডেন্টিটি (ইসিআই) ব্যবহার করে, যা একটি 28-বিট পূর্ণসংখ্যা মান যা 20-বিট ই-ইউট্রান নোড বি আইডেন্টিফায়ার (ইএনবিআইডি) এবং 8-বিট সেল আইডি (সিআইডি) কে সংযুক্ত করে।
সূত্র:enb_id << 8 | cid
বৈধ পরিসীমা: 0–268435455।
দ্রষ্টব্য: LTE নেটওয়ার্কে শুধুমাত্র 8-বিট সেল আইডি মান উল্লেখ করলে ফলাফল ভুল বা শূন্য হয়।
API অনুরোধে এই সীমার বাইরে মান স্থাপন করলে অনির্ধারিত আচরণ হতে পারে। এপিআই, Google-এর বিবেচনার ভিত্তিতে, সংখ্যাটিকে ছেঁটে ফেলতে পারে যাতে এটি নথিভুক্ত পরিসরে ফিট করে, radioType
এ একটি সংশোধন অনুমান করতে পারে, বা প্রতিক্রিয়াতে কোনও সূচক ছাড়াই একটি NOT_FOUND
ফলাফল ফেরত দিতে পারে৷
LTE সেল টাওয়ার অবজেক্টের একটি উদাহরণ, যা অনুরোধের অংশের অংশ, নীচে দেওয়া হল৷
{ ... "cellTowers": [ { "cellId": 170402199, "locationAreaCode": 35632, "mobileCountryCode": 310, "mobileNetworkCode": 410, "age": 0, "signalStrength": -60, "timingAdvance": 15 } ] }
The response for the preceding request looks like this:
{ "location": { "lat": 37.7801129, "lng": -122.4168229 }, "accuracy": 180.052 }
Calculating newRadioCellId
Newer networks, whose cell IDs are longer than 32 bits use the 64-bit newRadioCellId
field for passing the network cell ID to Geolocation API.
- NR (5G) networks use the 36-bit New Radio Cell Identity (NCI) as is.
Valid range: 0–68719476735.
An example NR cell tower object, which is part of the request body , is below.
{ ... "cellTowers": [ { "newRadioCellId": 68719476735, "mobileCountryCode": 310, "mobileNetworkCode": 410, "age": 0, "signalStrength": -60, } ] }
The response to the preceding request looks like this:
{ "location": { "lat": 37.7646157, "lng": -122.4127361 }, "accuracy": 1458.5570522410717 }
WiFi access point objects
The request body's wifiAccessPoints
array must contain two or more WiFi access point objects representing physically distinct stationary access point devices. The macAddress
field is required. অন্য সব ক্ষেত্র ঐচ্ছিক. The service ignores access points that move, such as those in airplanes and trains.
মাঠ | JSON type | বর্ণনা | নোট |
---|---|---|---|
macAddress | string | The MAC address of the WiFi node. It's typically called a BSS, BSSID or MAC address. | প্রয়োজন। Colon-separated ( : ) hexadecimal string.Only universally-administered MAC addresses can be located using the API. Other MAC addresses are silently dropped and may lead to an API request becoming effectively empty. For details, see Dropping useless Wifi access points . |
signalStrength | number ( double ) | The current signal strength measured in dBm. | For WiFi access points, dBm values are typically -35 or lower and range from -128 to -10 dBm. Be sure to include the minus sign. For values greater than -10 dBm, the API returns NOT FOUND . |
age | number ( uint32 ) | The number of milliseconds since this access point was detected. | |
channel | number ( uint32 ) | The channel over which the client is communicating with the access point. | |
signalToNoiseRatio | number ( double ) | The current signal to noise ratio measured in dB. |
An example WiFi access point object, which is part of the request body , is shown below.
{ ... "macAddress": "f0:d5:bf:fd:12:ae", "signalStrength": -43, "signalToNoiseRatio": 0, "channel": 11, "age": 0 }
The response for the preceding request looks like this:
{ "location": { "lat": 37.7801129, "lng": -122.4168229 }, "accuracy": 180.052 }
Sample requests
If you'd like to try the Geolocation API with sample data, save the following JSON to a file:
{ "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 } ] }
You can then use curl
to make your request from the command line:
$ curl -d @your_filename.json -H "Content-Type: application/json" -i "https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR_API_KEY"
The response for the preceding MAC addresses looks like this:
{ "location": { "lat": 37.4241173, "lng": -122.0915717 }, "accuracy": 20 }
Dropping unused WiFi access points
Removing WiFi access point objects with macAddress
es that are locally-administered can improve the success rate of Geolocation API calls that use WiFi as input. If, after filtering, it can be determined that a Geolocation API call wouldn't succeed, mitigations such as using older location signals or WiFi APs with weaker signals can be used. This approach is a tradeoff between your application's need for a location estimate and its precision and recall requirements. The following filtering techniques demonstrate how to filter the inputs, but don't show the mitigations that you may, as the application engineer, choose to apply.
Locally administered MAC addresses are not useful location signals for the API and are silently dropped from requests. You can remove such MAC addresses by ensuring that the second least-significant bit of the macAddress
's most-significant byte is 0
, eg the 1
bit represented by the 2
in 02:00:00:00:00:00
. The broadcast MAC address ( FF:FF:FF:FF:FF:FF
) is an example of a MAC address that would be usefully excluded by this filter.
The range of MAC addresses between 00:00:5E:00:00:00
and 00:00:5E:FF:FF:FF
are reserved for IANA and often used for network management and multicast functions which precludes their use as a location signal. You should also remove these MAC addresses from inputs to the API.
For example, usable MAC addresses for Geolocation can be gathered from an array of macAddress
strings named macs
:
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');
Using this filter results in only 1c:34:56:78:9a:bc
remaining in the list. Because this list has fewer than 2 WiFi MAC addresses , the request wouldn't be successful and an HTTP 404 ( notFound
) response would be returned.
Geolocation responses
A successful geolocation request returns a JSON-formatted response defining a location and radius.
-
location
: The user's estimated latitude and longitude coordinates, in degrees. Contains onelat
and onelng
subfield. -
accuracy
: The accuracy of the estimated location, in meters. This represents the radius of a circle around the givenlocation
.
{ "location": { "lat": 37.421875199999995, "lng": -122.0851173 }, "accuracy": 120 }