ভৌগোলিক লোকেশন সংক্রান্ত অনুরোধ ও উত্তর

ভৌগোলিক লোকেশন সংক্রান্ত অনুরোধ

ভৌগোলিক লোকেশন সংক্রান্ত অনুরোধ POST ব্যবহার করে নিম্নলিখিত URL-এ পাঠানো হয়:

https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR_API_KEY

আপনার অনুরোধে অবশ্যই একটি কী উল্লেখ করতে হবে, যা key প্যারামিটারের ভ্যালু হিসেবে অন্তর্ভুক্ত। key হল আপনার অ্যাপ্লিকেশনের API key। এই 'কী' কোটা ম্যানেজমেন্টের উদ্দেশ্যে আপনার অ্যাপ্লিকেশন শনাক্ত করে। কীভাবে কী পাবেন তা জানুন।

অনুরোধের বডি

অনুরোধের বডি JSON হিসেবে ফর্ম্যাট করতে হবে। অনুরোধের বডি অন্তর্ভুক্ত না থাকলে, অনুরোধের লোকেশনের IP অ্যাড্রেসের উপর ভিত্তি করে ফলাফল ফেরত দেওয়া হয়। নিম্নলিখিত ফিল্ডগুলি কাজ করে এবং অন্যভাবে উল্লেখ করা না থাকলে সব ফিল্ডই ঐচ্ছিক:

ফিল্ড JSON-এর ধরন বিবরণ নোট
homeMobileCountryCode number (uint32) ডিভাইসের হোম নেটওয়ার্কের জন্য মোবাইল কান্ট্রি কোড (MCC)। radioType gsm (ডিফল্ট), wcdma, lte ও nr-এর জন্য কাজ করে; cdma-এর জন্য ব্যবহার করা হয় না।
সঠিক রেঞ্জ: ০–৯৯৯।
homeMobileNetworkCode number (uint32) ডিভাইসের হোম নেটওয়ার্কের জন্য মোবাইল নেটওয়ার্ক কোড। এটি GSM, WCDMA, LTE এবং NR-এর জন্য MNC।
CDMA সিস্টেম আইডি (SID) ব্যবহার করে
MNC-এর জন্য সঠিক রেঞ্জ: ০–৯৯৯।
SID-এর জন্য সঠিক রেঞ্জ: ০–৩২৭৬৭।
radioType string মোবাইল রেডিওর ধরন। সাপোর্ট করা ভ্যালু হল gsm, cdma, wcdma, lte এবং nr। এই ফিল্ডটি ঐচ্ছিক হলেও, ক্লায়েন্ট রেডিওর ধরন জানলে এটি সবসময় অন্তর্ভুক্ত করা উচিত।
ফিল্ডটি বাদ দেওয়া হলে, Geolocation API ডিফল্ট হিসেবে 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-এর জন্য বাতিল করা হয়েছে।
নিচে cellId গণনা করা বিভাগটি দেখুন, যেখানে প্রতিটি রেডিও প্রকারের জন্য সঠিক ভ্যালু রেঞ্জও তালিকাভুক্ত করা আছে।
newRadioCellId number (uint64) NR (5G) সেলের অনন্য শনাক্তকারী। radioType nr-এর জন্য প্রয়োজনীয়; অন্যান্য ধরনের জন্য বাতিল করা হয়েছে।
নিচে Calculating newRadioCellId বিভাগ দেখুন, যেখানে ফিল্ডের জন্য সঠিক ভ্যালুর রেঞ্জও তালিকাভুক্ত করা আছে।
locationAreaCode number (uint32) GSM এবং WCDMA নেটওয়ার্কের জন্য লোকেশন এরিয়া কোড (LAC)।
CDMA নেটওয়ার্কের জন্য নেটওয়ার্ক আইডি (NID)।
LTE ও NR নেটওয়ার্কের জন্য ট্র্যাকিং এরিয়া কোড (TAC)।
radioType gsm (ডিফল্ট) এবং cdma-এর জন্য প্রয়োজনীয়, অন্যান্য ভ্যালুর জন্য ঐচ্ছিক।
gsm, cdma, wcdma এবং lte-এর সাথে সঠিক রেঞ্জ: ০–৬৫৫৩৫।
nr-এর সাথে সঠিক রেঞ্জ: ০–১৬৭৭৭২১৫।
mobileCountryCode number (uint32) সেল টাওয়ারের মোবাইল কান্ট্রি কোড (MCC)। radioType gsm (ডিফল্ট), wcdma, lte এবং nr-এর জন্য প্রয়োজনীয়; cdma-এর জন্য ব্যবহার করা হয় না।
সঠিক রেঞ্জ: ০–৯৯৯।
mobileNetworkCode number (uint32) সেল টাওয়ারের মোবাইল নেটওয়ার্ক কোড। এটি হল GSM, WCDMA, LTE এবং NR-এর জন্য MNC।
CDMA সিস্টেম আইডি (SID) ব্যবহার করে।
প্রয়োজনীয়।
MNC-এর জন্য সঠিক রেঞ্জ: ০–৯৯৯।
SID-এর জন্য সঠিক রেঞ্জ: ০–৩২৭৬৭।

নিম্নলিখিত ঐচ্ছিক ফিল্ডগুলি ব্যবহার করা হয় না, তবে ভ্যালু উপলভ্য থাকলে অন্তর্ভুক্ত করা যেতে পারে।

ফিল্ড JSON-এর ধরন বিবরণ নোট
age number (uint32) এই সেলটি প্রাইমারি হওয়ার পর থেকে মিলিসেকেন্ডের সংখ্যা। বয়স ০ হলে, cellId বা newRadioCellId বর্তমান পরিমাপকে বোঝায়।
signalStrength number (double) dBm-এ পরিমাপ করা রেডিও সিগন্যালের ক্ষমতা।
timingAdvance number (double) টাইমিং অ্যাডভান্স ভ্যালু।

cellId গণনা করা হচ্ছে

NR (5G)-এর আগের রেডিওর ধরন, Geolocation API-তে নেটওয়ার্ক সেল আইডি পাস করার জন্য ৩২-বিট cellId ফিল্ড ব্যবহার করে।

  • GSM (2G) নেটওয়ার্ক ১৬-বিট সেল আইডি (CID) ব্যবহার করে। সঠিক রেঞ্জ: ০–৬৫৫৩৫।
  • CDMA (2G) নেটওয়ার্ক ১৬-বিট বেস স্টেশন আইডি (BID) ব্যবহার করে। সঠিক রেঞ্জ: ০–৬৫৫৩৫।
  • WCDMA (3G) নেটওয়ার্ক UTRAN/GERAN সেল আইডেন্টিটি (UC-ID) ব্যবহার করে, যা হল ২৮-বিট ইন্টিজার ভ্যালু, ১২-বিট রেডিও নেটওয়ার্ক কন্ট্রোলার আইডেন্টিফায়ার (RNC-ID) এবং ১৬-বিট সেল আইডি (CID) কনক্যাটিনেট করে।
    ফর্মুলা: rnc_id << 16 | cid।
    সঠিক রেঞ্জ: ০–২৬৮৪৩৫৪৫৫।
    মনে রাখবেন: WCDMA নেটওয়ার্কে শুধু ১৬-বিট সেল আইডি ভ্যালু উল্লেখ করলে ভুল বা শূন্য ফলাফল পাওয়া যায়।
  • LTE (4G) নেটওয়ার্ক E-UTRAN সেল আইডেন্টিটি (ECI) ব্যবহার করে, যা হল ২৮-বিট ইন্টিজার ভ্যালু যা ২০-বিট E-UTRAN Node B আইডেন্টিফায়ার (eNBId) এবং ৮-বিট সেল আইডি (CID) কনক্যাটিনেট করে।
    ফর্মুলা: enb_id << 8 | cid।
    সঠিক রেঞ্জ: ০–২৬৮৪৩৫৪৫৫।
    মনে রাখবেন: LTE নেটওয়ার্কে শুধুমাত্র ৮-বিট সেল আইডি ভ্যালু উল্লেখ করলে ভুল বা শূন্য ফলাফল পাওয়া যায়।

API অনুরোধে এই রেঞ্জের বাইরে ভ্যালু রাখলে, তা অনির্ধারিত আচরণ হিসেবে গণ্য হতে পারে। Google-এর বিবেচনার ভিত্তিতে, API নম্বরটি ট্রাঙ্কেট করতে পারে যাতে এটি ডকুমেন্ট করা রেঞ্জের মধ্যে ফিট করে, 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

নতুন নেটওয়ার্ক, যার সেল আইডি ৩২ বিটের থেকে বড়, সেটি ৬৪-বিট newRadioCellId ফিল্ড ব্যবহার করে নেটওয়ার্ক সেল আইডি Geolocation API-তে পাস করার জন্য।

  • NR (5G) নেটওয়ার্ক ৩৬-বিট নিউ রেডিও সেল আইডেন্টিটি (NCI) ব্যবহার করে।
    বৈধ রেঞ্জ: ০–৬৮৭১৯৪৭৬৭৩৫।

NR সেল টাওয়ার অবজেক্টের একটি উদাহরণ নিচে দেওয়া হল, যা অনুরোধের বডি-এর অংশ।

{
  ...

  "cellTowers": [
    {
      "newRadioCellId": 68719476735,
      "mobileCountryCode": 310,
      "mobileNetworkCode": 410,
      "age": 0,
      "signalStrength": -60,
    }
  ]
}

আগের অনুরোধের উত্তরটি এইরকম দেখতে হবে:

{
  "location": {
    "lat": 37.7646157,
    "lng": -122.4127361
  },
  "accuracy": 1458.5570522410717
}

ওয়াই-ফাই অ্যাক্সেস পয়েন্ট অবজেক্ট

অনুরোধের বডিতে wifiAccessPoints অ্যারেতে অবশ্যই দুটি বা তার বেশি ওয়াই-ফাই অ্যাক্সেস পয়েন্ট অবজেক্ট থাকতে হবে যা শারীরিকভাবে স্বতন্ত্র স্থির অ্যাক্সেস পয়েন্ট ডিভাইসকে উপস্থাপন করে। macAddress ফিল্ডটি প্রয়োজনীয়। অন্যান্য সব ফিল্ড ঐচ্ছিক। এই পরিষেবা সেইসব অ্যাক্সেস পয়েন্ট উপেক্ষা করে যেগুলি এক জায়গা থেকে অন্য জায়গায় যায়, যেমন বিমান ও ট্রেনে থাকা অ্যাক্সেস পয়েন্ট।

ফিল্ড JSON-এর ধরন বিবরণ নোট
macAddress string ওয়াই-ফাই নোডের MAC অ্যাড্রেস। এটিকে সাধারণত BSS, BSSID বা MAC অ্যাড্রেস বলা হয়। প্রয়োজনীয়।কোলন দিয়ে আলাদা করা (:) হেক্সাডেসিমেল স্ট্রিং।
শুধুমাত্র ইউনিভার্সালি-অ্যাডমিনিস্টার করা MAC অ্যাড্রেস API ব্যবহার করে লোকেট করা যাবে। অন্যান্য MAC অ্যাড্রেস নীরবে ড্রপ করা হয় এবং এর ফলে API অনুরোধ কার্যকরভাবে খালি হয়ে যেতে পারে। আরও জানতে, অপ্রয়োজনীয় ওয়াই-ফাই অ্যাক্সেস পয়েন্ট বাদ দেওয়া দেখুন।
signalStrength number (double) dBm-এ পরিমাপ করা বর্তমান সিগন্যাল ক্ষমতা। ওয়াই-ফাই অ্যাক্সেস পয়েন্টের জন্য dBm ভ্যালু সাধারণত -৩৫ বা তার কম হয় এবং -১২৮ থেকে -১০ dBm পর্যন্ত হয়। বিয়োগ চিহ্ন অন্তর্ভুক্ত করতে ভুলবেন না।
-১০ 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
}

স্যাম্পেল অনুরোধ

আপনি স্যাম্পেল ডেটা সহ Geolocation API ব্যবহার করে দেখতে চাইলে, নিম্নলিখিত JSON ফাইল হিসেবে সেভ করুন:

{
  "considerIp": "false",
  "wifiAccessPoints": [
    {
      "macAddress": "3c:37:86:5d:75:d4",
      "signalStrength": -35,
      "signalToNoiseRatio": 0
    },
    {
      "macAddress": "30:86:2d:c4:29:d0",
      "signalStrength": -35,
      "signalToNoiseRatio": 0
    }
  ]
}

তারপর আপনি কমান্ড লাইন থেকে অনুরোধ করতে curl ব্যবহার করতে পারবেন:

$ curl -d @your_filename.json -H "Content-Type: application/json" -i "https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR_API_KEY"

পূর্ববর্তী MAC অ্যাড্রেসের জন্য উত্তরটি এইরকম দেখায়:

{
  "location": {
    "lat": 37.4241173,
    "lng": -122.0915717
  },
  "accuracy": 20
}

অব্যবহৃত ওয়াই-ফাই অ্যাক্সেস পয়েন্ট বাদ দেওয়া হচ্ছে

macAddress সহ ওয়াই-ফাই অ্যাক্সেস পয়েন্ট অবজেক্ট সরিয়ে দিলে, যেগুলি ব্রডকাস্ট অ্যাড্রেস (FF:FF:FF:FF:FF:FF) অথবা IANA-এর মাধ্যমে রিজার্ভ করা, তা ইনপুট হিসেবে ওয়াই-ফাই ব্যবহার করে এমন Geolocation API কলের সাফল্যের হার উন্নত করতে পারে। ফিল্টার করার পরে যদি নির্ধারণ করা যায় যে Geolocation API কল সফল হবে না, তাহলে পুরনো লোকেশন সিগন্যাল বা দুর্বল সিগন্যাল সহ ওয়াই-ফাই AP-এর মতো মিটিগেশন ব্যবহার করা যেতে পারে। এই পদ্ধতিটি আপনার অ্যাপ্লিকেশনের লোকেশন অনুমান করার প্রয়োজনীয়তা এবং এর নির্ভুলতা এবং রিকল প্রয়োজনীয়তার মধ্যে একটি ট্রেডঅফ। নিম্নলিখিত ফিল্টারিং কৌশলগুলি ইনপুটগুলি কীভাবে ফিল্টার করতে হয় তা প্রদর্শন করে, কিন্তু আপনি অ্যাপ্লিকেশন ইঞ্জিনিয়ার হিসাবে যে প্রশমনগুলি প্রয়োগ করতে বেছে নিতে পারেন তা দেখায় না।

00:00:5E:00:00:00 এবং 00:00:5E:FF:FF:FF-এর মধ্যে MAC অ্যাড্রেসের রেঞ্জ IANA-এর জন্য সংরক্ষিত এবং প্রায়ই নেটওয়ার্ক ম্যানেজমেন্ট ও মাল্টিকাস্ট ফাংশনের জন্য ব্যবহার করা হয়, লোকেশন সিগন্যাল হিসেবে এগুলির ব্যবহার বাদ দিয়ে। এছাড়াও, API-এর ইনপুট থেকে আপনাকে এইসব MAC অ্যাড্রেস সরিয়ে দিতে হবে।

যেমন, জিওলোকেশন API-এর জন্য ব্যবহারযোগ্য MAC অ্যাড্রেস macs নামের macAddress স্ট্রিংয়ের অ্যারে থেকে সংগ্রহ করা যেতে পারে:

Java
String[] macs = {"ff:ff:ff:ff:ff:ff", "1c:34:56:78:9a:bc", "00:00:5e:00:00:01"};
ArrayList<String> _macs = new ArrayList<>(Arrays.asList(macs));
_macs.removeIf(m -> !(!m.toUpperCase().equals("FF:FF:FF:FF:FF:FF")
                      && !m.substring(0, 8).toUpperCase().equals("00:00:5E")));
    
Python
macs = ['ff:ff:ff:ff:ff:ff', '1c:34:56:78:9a:bc', '00:00:5e:00:00:01']
macs = [m for m in macs if (m.upper() != "FF:FF:FF:FF:FF:FF" and m[:8].upper() != '00:00:5E')]
    
জাভাস্ক্রিপ্ট
macs = ['ff:ff:ff:ff:ff:ff', '1c:34:56:78:9a:bc', '00:00:5e:00:00:01'];
macs = macs.filter(m => m.toUpperCase() !== "FF:FF:FF:FF:FF:FF"
                        && m.substr(0, 8).toUpperCase() !== '00:00:5E');
    

এই ফিল্টার ব্যবহার করলে তালিকায় শুধু 1c:34:56:78:9a:bc বাকি থাকবে। এই তালিকায় ২টির কম ওয়াই-ফাই MAC অ্যাড্রেস থাকার কারণে, অনুরোধটি সফল হবে না এবং একটি HTTP 404 (notFound) প্রতিক্রিয়া ফেরত পাঠানো হবে।

ভৌগোলিক অবস্থান সংক্রান্ত উত্তর

সফল ভৌগোলিক লোকেশন সংক্রান্ত অনুরোধ JSON-ফর্ম্যাট করা রেসপন্স ফিরিয়ে দেয় যা লোকেশন ও ব্যাসার্ধ নির্ধারণ করে।

  • location: ব্যবহারকারীর আনুমানিক অক্ষাংশ ও দ্রাঘিমাংশ স্থানাঙ্ক, ডিগ্রিতে। এতে একটি lat এবং একটি lng সাবফিল্ড আছে।
  • accuracy: আনুমানিক লোকেশনের অ্যাকুরেসি, মিটারে। এটি প্রদত্ত location-এর চারপাশে একটি বৃত্তের ব্যাসার্ধকে দেখায়।
{
  "location": {
    "lat": 37.421875199999995,
    "lng": -122.0851173
  },
  "accuracy": 120
}

ইনপুট সিগন্যালের উপর ভিত্তি করে API একটি লোকেশন ও অ্যাকুরেসি রেডিয়াস রিটার্ন করে। API অত্যন্ত নির্ভুল লোকেশন দেখাতে পারলেও, উপলভ্য সিগন্যালের সোর্স, সংখ্যা, ঘনত্ব ও শক্তির উপর নির্ভর করে নির্ভুলতার তারতম্য হতে পারে। সাধারণত আপনি নিম্নলিখিত নির্ভুলতার ব্যাসার্ধ আশা করতে পারেন:

  • ওয়াই-ফাই অ্যাক্সেস পয়েন্ট: অনুরোধে দুটি বা তার বেশি wifiAccessPoints থাকলে, সাধারণত প্রায় ২০ মিটারের অ্যাকুরেসি রেডিয়াস পাওয়া যায়। অ্যাক্সেস পয়েন্টের সংখ্যা ও শক্তিশালী সিগন্যালের (dBm-এ পরিমাপ করা হয়) মাধ্যমে নির্ভুলতা উন্নত হয়, সাধারণত সিগন্যালের ক্ষমতা -১০০ থেকে -২০ dBm-এর মধ্যে থাকে।
  • সেল টাওয়ার: ওয়াই-ফাই সংক্রান্ত তথ্য উপলভ্য না থাকলে বা পর্যাপ্ত না হলে, API লোকেশনের জন্য cellTowers ব্যবহার করে। সেল টাওয়ারের ধরন, সিগন্যালের ক্ষমতা ও নেটওয়ার্কের ঘনত্বের উপর নির্ভর করে সঠিকতা উল্লেখযোগ্যভাবে পরিবর্তিত হয়:
    • ম্যাক্রো সেল (সবচেয়ে সাধারণ ধরন, যা বিস্তৃত এলাকা কভার করার জন্য ব্যবহার করা হয়) কম নির্ভুলতা প্রদান করে। ব্যাসার্ধ সাধারণত কয়েকশো মিটারের মধ্যে হয় এবং যেসব এলাকায় মোবাইল টাওয়ারের কভারেজ কম, সেখানে কয়েক হাজার মিটার পর্যন্ত হতে পারে। ম্যাক্রো সেলের ক্ষেত্রে, ১০০ মিটারের কম ব্যাসার্ধের নির্ভুলতা অর্জন করা বিরল। সাধারণত, শক্তিশালী সিগন্যাল সহ সেল টাওয়ারের ক্ষেত্রে সঠিকতা বেশি হয়। সাধারণত, LTE-এর জন্য > -১১০ dBm (সিগন্যাল রেঞ্জ -১৪০ থেকে -৫৫ dBm), WCDMA-এর জন্য > -১০০ dBm (সিগন্যাল রেঞ্জ -১১১ থেকে -৫৩ dBm), CDMA-এর জন্য > -১০০ dBm (সিগন্যাল রেঞ্জ -১২০ থেকে -৪০ dBm) এবং GSM-এর জন্য > -৮০ dBm (সিগন্যাল রেঞ্জ -১২১ থেকে -১ dBm) শক্তিশালী সিগন্যাল হিসেবে বিবেচিত হয়।
    • ছোট সেল (যেমন, ফেমটোসেল, পিকোসেল বা ইনডোর রিপিটার) সবচেয়ে নিখুঁত সেল-ভিত্তিক লোকেশন প্রদান করে, যার অ্যাকুরেসি রেডিয়াস ১০-৩০ মিটার রেঞ্জের মধ্যে হতে পারে।
  • IP জিওলোকেশন: considerIp যদি true হয় এবং কোনও ওয়াই-ফাই বা সেল টাওয়ার সিগন্যাল জিওলোকেট করা না যায়, তাহলে API অনুরোধের IP অ্যাড্রেসের ভিত্তিতে লোকেশন অনুমান করে। এই পদ্ধতিতে সবচেয়ে কম নির্ভুল ফলাফল পাওয়া যায়, যার ব্যাসার্ধ হাজার হাজার মিটার হতে পারে। দেখুন অ্যাকুরেসি রেডিয়াস কেন খুব বড়? সমস্যার সমাধানকরণ নির্দেশিকায়।