ভৌগলিক অবস্থান অনুরোধ এবং প্রতিক্রিয়া

ভূ-অবস্থান অনুরোধ

ভৌগলিক অবস্থানের অনুরোধগুলি 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 one lat and one lng subfield.
  • accuracy : The accuracy of the estimated location, in meters. This represents the radius of a circle around the given location .
{
  "location": {
    "lat": 37.421875199999995,
    "lng": -122.0851173
  },
  "accuracy": 120
}