ভূ-অবস্থান অনুরোধ
ভৌগলিক অবস্থানের অনুরোধগুলি 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": "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 ) | 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 } ] }
newRadioCellId
গণনা করা হচ্ছে
নতুন নেটওয়ার্ক, যাদের সেল আইডি 32 বিটের বেশি তারা 64-বিট newRadioCellId
ফিল্ড ব্যবহার করে নেটওয়ার্ক সেল আইডি জিওলোকেশন API-এ পাস করার জন্য।
- NR (5G) নেটওয়ার্কগুলি 36-বিট নিউ রেডিও সেল আইডেন্টিটি (NCI) ব্যবহার করে।
বৈধ পরিসীমা: 0–68719476735।
NR সেল টাওয়ার অবজেক্টের একটি উদাহরণ নিচে দেওয়া হল।
{ "cellTowers": [ { "newRadioCellId": 68719476735, "mobileCountryCode": 310, "mobileNetworkCode": 410, "age": 0, "signalStrength": -60, } ] }
ওয়াইফাই অ্যাক্সেস পয়েন্ট অবজেক্ট
অনুরোধের বডির wifiAccessPoints
অ্যারেতে অবশ্যই দুই বা তার বেশি WiFi অ্যাক্সেস পয়েন্ট অবজেক্ট থাকতে হবে যা শারীরিকভাবে স্বতন্ত্র অ্যাক্সেস পয়েন্ট ডিভাইসগুলিকে উপস্থাপন করে৷ macAddress
প্রয়োজন; অন্য সব ক্ষেত্র ঐচ্ছিক.
মাঠ | JSON প্রকার | বর্ণনা | নোট |
---|---|---|---|
macAddress | string | ওয়াইফাই নোডের MAC ঠিকানা। এটিকে সাধারণত একটি BSS, BSSID বা MAC ঠিকানা বলা হয়। | প্রয়োজন। কোলন-বিচ্ছিন্ন ( : ) হেক্সাডেসিমেল স্ট্রিং।শুধুমাত্র সার্বজনীন-প্রশাসিত MAC ঠিকানাগুলি API এর মাধ্যমে অবস্থিত হতে পারে। অন্যান্য MAC ঠিকানাগুলি নিঃশব্দে বাদ দেওয়া হয় এবং একটি API অনুরোধ কার্যকরভাবে খালি হয়ে যেতে পারে। বিস্তারিত জানার জন্য, অকেজো ওয়াইফাই অ্যাক্সেস পয়েন্ট ড্রপিং দেখুন। |
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 }
নমুনা অনুরোধ
আপনি যদি নমুনা ডেটা সহ জিওলোকেশন 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 কল সফল হবে না, তবে দুর্বল সংকেত সহ পুরানো লোকেশন সিগন্যাল বা ওয়াইফাই AP ব্যবহার করার মতো প্রশমনগুলি ব্যবহার করা যেতে পারে। এই পদ্ধতিটি একটি অবস্থান অনুমানের জন্য আপনার আবেদনের প্রয়োজনীয়তা এবং এর নির্ভুলতা এবং প্রত্যাহার প্রয়োজনীয়তার মধ্যে একটি ট্রেডঅফ। নিম্নলিখিত ফিল্টারিং কৌশলগুলি প্রদর্শন করে যে কীভাবে ইনপুটগুলি ফিল্টার করতে হয়, তবে অ্যাপ্লিকেশন প্রকৌশলী হিসাবে আপনি আবেদন করতে বেছে নিতে পারেন এমন প্রশমনগুলি দেখায় না।
স্থানীয়ভাবে পরিচালিত MAC ঠিকানাগুলি API-এর জন্য উপযোগী অবস্থান সংকেত নয় এবং নীরবে অনুরোধ থেকে বাদ দেওয়া হয়। আপনি macAddress
এর সবচেয়ে উল্লেখযোগ্য বাইটের দ্বিতীয় সর্বনিম্ন-গুরুত্বপূর্ণ বিটটি 0
, যেমন02:00:00:00:00:00
মধ্যে 2
দ্বারা প্রতিনিধিত্ব করে। সম্প্রচারিত 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 }