ভূমিকা
জিওলোকেশন API সেল টাওয়ার এবং ওয়াইফাই নোড সম্পর্কে তথ্যের উপর ভিত্তি করে একটি অবস্থান এবং নির্ভুলতা ব্যাসার্ধ প্রদান করে যা মোবাইল ক্লায়েন্ট সনাক্ত করতে পারে। এই নথিটি সার্ভারে এই ডেটা পাঠাতে এবং ক্লায়েন্টকে একটি প্রতিক্রিয়া ফেরাতে ব্যবহৃত প্রোটোকল বর্ণনা করে।
POST ব্যবহার করে HTTPS এর মাধ্যমে যোগাযোগ করা হয়। অনুরোধ এবং প্রতিক্রিয়া উভয়ই JSON হিসাবে ফর্ম্যাট করা হয়েছে এবং উভয়ের বিষয়বস্তুর ধরন হল application/json
।
তুমি শুরু করার আগে
আপনি জিওলোকেশন API এর সাথে বিকাশ শুরু করার আগে, প্রমাণীকরণের প্রয়োজনীয়তাগুলি পর্যালোচনা করুন (আপনার একটি API কী প্রয়োজন) এবং API ব্যবহার এবং বিলিং তথ্য (আপনাকে আপনার প্রকল্পে বিলিং সক্ষম করতে হবে)।
ভূ-অবস্থান অনুরোধ
ভৌগলিক অবস্থানের অনুরোধগুলি POST ব্যবহার করে নিম্নলিখিত URL এ পাঠানো হয়:
https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR_API_KEY
আপনার অনুরোধে আপনাকে অবশ্যই একটি কী নির্দিষ্ট করতে হবে, একটি key
প্যারামিটারের মান হিসাবে অন্তর্ভুক্ত করা হয়েছে। একটি key
হল আপনার অ্যাপ্লিকেশনের API কী। এই কী কোটা ব্যবস্থাপনার উদ্দেশ্যে আপনার আবেদনকে চিহ্নিত করে। কিভাবে একটি চাবি পেতে শিখুন.
শরীরের অনুরোধ
অনুরোধের অংশ অবশ্যই JSON হিসাবে ফর্ম্যাট করা উচিত। রিকোয়েস্ট বডি অন্তর্ভুক্ত না হলে, রিকোয়েস্ট লোকেশনের আইপি অ্যাড্রেসের উপর ভিত্তি করে ফলাফল ফেরত দেওয়া হবে। নিম্নলিখিত ক্ষেত্রগুলি সমর্থিত, এবং সমস্ত ক্ষেত্র ঐচ্ছিক, যদি না অন্যথায় বলা হয়:
মাঠ | 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)। | cdma টাইপ gsm (ডিফল্ট) এবং radioType জন্য প্রয়োজনীয় , অন্যান্য মানের জন্য ঐচ্ছিক।gsm , cdma , wcdma এবং lte সহ বৈধ পরিসীমা: 0–65535।nr সহ বৈধ পরিসীমা : 0–16777215৷ |
mobileCountryCode | number ( uint32 ) | সেল টাওয়ারের মোবাইল কান্ট্রি কোড (MCC)। | nr টাইপ gsm (ডিফল্ট), wcdma , lte এবং radioType জন্য প্রয়োজনীয় ; 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 ঠিকানা বলা হয়। | প্রয়োজন। : (কোলন) পৃথক হেক্সাডেসিমেল স্ট্রিং। |
signalStrength | number ( double ) | বর্তমান সংকেত শক্তি dBm এ পরিমাপ করা হয়। | ওয়াইফাই অ্যাক্সেস পয়েন্টগুলির জন্য, dBm মানগুলি সাধারণত -35 বা কম এবং -128 থেকে -10 dBm পর্যন্ত হয়৷ বিয়োগ চিহ্ন অন্তর্ভুক্ত করতে ভুলবেন না। |
age | number ( uint32 ) | এই অ্যাক্সেস পয়েন্ট শনাক্ত করার পর থেকে মিলিসেকেন্ডের সংখ্যা। | |
channel | number ( uint32 ) | যে চ্যানেলের মাধ্যমে ক্লায়েন্ট অ্যাক্সেস পয়েন্টের সাথে যোগাযোগ করছে। | |
signalToNoiseRatio | number ( double ) | বর্তমান সংকেত থেকে শব্দ অনুপাত dB তে পরিমাপ করা হয়। |
একটি উদাহরণ ওয়াইফাই অ্যাক্সেস পয়েন্ট অবজেক্ট নীচে দেখানো হয়েছে.
{ "macAddress": "9c:1c:12:b0:45:f1", "signalStrength": -43, "signalToNoiseRatio": 0, "channel": 11, "age": 0 }
ভূ-অবস্থান প্রতিক্রিয়া
একটি সফল ভূ-অবস্থান অনুরোধ একটি অবস্থান এবং ব্যাসার্ধ সংজ্ঞায়িত করে একটি JSON-ফরম্যাটেড প্রতিক্রিয়া প্রদান করবে।
-
location
: ডিগ্রীতে ব্যবহারকারীর আনুমানিক অক্ষাংশ এবং দ্রাঘিমাংশ। একটিlat
এবং একটিlng
সাবফিল্ড রয়েছে৷ -
accuracy
: আনুমানিক অবস্থানের নির্ভুলতা, মিটারে। এটি প্রদত্তlocation
চারপাশে একটি বৃত্তের ব্যাসার্ধকে উপস্থাপন করে।
{ "location": { "lat": 37.421875199999995, "lng": -122.0851173 }, "accuracy": 120 }
ত্রুটি
একটি ত্রুটির ক্ষেত্রে, একটি স্ট্যান্ডার্ড ফরম্যাট ত্রুটি প্রতিক্রিয়া বডি ফেরত দেওয়া হবে এবং HTTP স্ট্যাটাস কোড একটি ত্রুটি স্থিতিতে সেট করা হবে।
প্রতিক্রিয়াটিতে নিম্নলিখিত কীগুলির সাথে একটি একক error
বস্তু রয়েছে:
-
code
: এটি প্রতিক্রিয়ার HTTP অবস্থার মতোই। -
message
: ত্রুটির একটি সংক্ষিপ্ত বিবরণ। -
errors
: ত্রুটির একটি তালিকা যা ঘটেছে। প্রতিটি ত্রুটিতে ত্রুটির ধরন (reason
) এবং একটি সংক্ষিপ্ত বিবরণ (message
) জন্য একটি শনাক্তকারী থাকে।
উদাহরণস্বরূপ, অবৈধ JSON পাঠালে নিম্নলিখিত ত্রুটি ফিরে আসবে:
{ "error": { "errors": [ { "domain": "global", "reason": "parseError", "message": "Parse Error", } ], "code": 400, "message": "Parse Error" } }
সম্ভাব্য ত্রুটির মধ্যে রয়েছে:
কারণ | ডোমেইন | HTTP স্ট্যাটাস কোড | বর্ণনা |
---|---|---|---|
dailyLimitExceeded | usageLimits | 403 | আপনি আপনার দৈনিক সীমা অতিক্রম করেছেন৷ |
keyInvalid | usageLimits | 400 | আপনার API কী জিওলোকেশন API-এর জন্য বৈধ নয়। অনুগ্রহ করে নিশ্চিত করুন যে আপনি সম্পূর্ণ কীটি অন্তর্ভুক্ত করেছেন, এবং আপনি হয় API কিনেছেন বা বিলিং সক্ষম করেছেন এবং কোনো চার্জ ছাড়াই কোটা পেতে API সক্রিয় করেছেন ৷ |
userRateLimitExceeded | usageLimits | 403 | আপনি Google ক্লাউড কনসোলে কনফিগার করা অনুরোধের সীমা অতিক্রম করেছেন৷ এই সীমাটি সাধারণত প্রতিদিন অনুরোধ, প্রতি 100 সেকেন্ডে অনুরোধ এবং প্রতি ব্যবহারকারী প্রতি 100 সেকেন্ডে অনুরোধ হিসাবে সেট করা হয়। এই সীমাটি কনফিগার করা উচিত যাতে ব্যবহারকারীদের একটি একক বা ছোট গোষ্ঠীকে আপনার প্রতিদিনের কোটা শেষ করা থেকে আটকাতে, যদিও এখনও সমস্ত ব্যবহারকারীকে যুক্তিসঙ্গত অ্যাক্সেসের অনুমতি দেয়। এই সীমাগুলি কনফিগার করতে ক্যাপিং API ব্যবহার দেখুন। |
notFound | geolocation | 404 | অনুরোধ বৈধ ছিল, কিন্তু কোন ফলাফল ফিরে আসেনি. |
parseError | global | 400 | অনুরোধের মূল অংশ JSON বৈধ নয়। প্রতিটি ক্ষেত্রের বিশদ বিবরণের জন্য অনুরোধের বডি বিভাগটি পড়ুন। |
নমুনা অনুরোধ
আপনি যদি নমুনা ডেটা সহ জিওলোকেশন API ব্যবহার করে দেখতে চান তবে নিম্নলিখিত JSONটিকে একটি ফাইলে সংরক্ষণ করুন:
{ "considerIp": "false", "wifiAccessPoints": [ { "macAddress": "3c:37:86:5d:75:d4", "signalStrength": -35, "signalToNoiseRatio": 0 }, { "macAddress": "94:b4:0f:fd:c1:40", "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"
উপরের ম্যাক ঠিকানাগুলির জন্য প্রতিক্রিয়া এই মত দেখায়:
{ "location": { "lat": 37.4241876, "lng": -122.0917381 }, "accuracy": 32.839 }
(আপনার যদি API কী না থাকে তবে একটি API কী পান দেখুন।)
অতিরিক্ত পরীক্ষার জন্য, আপনি Android এর জন্য Places SDK এবং Android Location APIs ব্যবহার করে আপনার Android ডিভাইস থেকে এবং iOS এর জন্য Places SDK ব্যবহার করে আপনার iOS ডিভাইস থেকে তথ্য সংগ্রহ করতে পারেন।
সচরাচর জিজ্ঞাস্য
কেন আমি আমার ভূ-অবস্থান প্রতিক্রিয়াতে একটি খুব বড় accuracy
ব্যাসার্ধ পাচ্ছি?
যদি আপনার ভূ-অবস্থান প্রতিক্রিয়া accuracy
ক্ষেত্রে খুব বেশি মান দেখায়, তাহলে পরিষেবাটি অনুরোধ IP-এর উপর ভিত্তি করে, WiFi পয়েন্ট বা সেল টাওয়ারের পরিবর্তে জিওলোকেটিং হতে পারে। কোনো সেল টাওয়ার বা অ্যাক্সেস পয়েন্ট বৈধ বা স্বীকৃত না হলে এটি ঘটতে পারে।
এটি যে সমস্যা তা নিশ্চিত করতে, আপনার অনুরোধে considerIp
কে false
হিসাবে সেট করুন। যদি প্রতিক্রিয়া একটি 404
হয়, আপনি নিশ্চিত করেছেন যে আপনার wifiAccessPoints
এবং cellTowers
অবজেক্টগুলি জিওলোকেটেড করা যায়নি৷