সমস্যার সমাধান

সমস্যা

কোনও সমস্যা হলে, স্ট্যান্ডার্ড ফর্ম্যাটে সমস্যার রেসপন্স বডি ফেরত পাঠানো হবে এবং HTTP স্ট্যাটাস কোড সমস্যার স্ট্যাটাসে সেট করা হবে।

উত্তরে একটি অবজেক্ট রয়েছে যার মধ্যে একটি error অবজেক্ট আছে এবং তাতে নিম্নলিখিত কী রয়েছে:

  • code: এটি রেসপন্সের HTTP স্ট্যাটাসের মতোই।
  • message: সমস্যার সংক্ষিপ্ত বিবরণ।
  • status: সমস্যার ধরন নির্দেশ করে এমন স্ট্যাটাস কোড।

যেমন, ভুল placeId প্যারামিটার পাঠালে, নিম্নলিখিত সমস্যাটি দেখানো হবে:

{
  "error": {
    "code": 400,
    "message": "\"placeId\" value is malformed: \"aChIJqaknMTeuEmsRUYCD5Wd9ARM\"",
    "status": "INVALID_ARGUMENT"
  }
}

সম্ভাব্য সমস্যার মধ্যে এগুলি অন্তর্ভুক্ত:

কোড স্ট্যাটাস মেসেজ সমস্যার সমাধান
400 INVALID_ARGUMENT আপনার দেওয়া 'কী' সঠিক নয়। আপনার API key সঠিক নয় অথবা অনুরোধে অন্তর্ভুক্ত করা হয়নি। আপনি সম্পূর্ণ 'কী' অন্তর্ভুক্ত করেছেন এবং এই 'কী'-এর জন্য API চালু করেছেন কিনা তা নিশ্চিত করুন।
400 INVALID_ARGUMENT "\"path\" প্যারামিটারে ভুল ভ্যালু আছে: ☃" আপনার অনুরোধে ভুল আর্গুমেন্ট ছিল। এই সমস্যার সবচেয়ে সম্ভাব্য কারণগুলি হল:
  • আপনার path প্যারামিটার সংক্রান্ত সমস্যা।
    নিশ্চিত করুন যে আপনার কাছে অন্তত ১টি এবং ১০০টির কম পয়েন্ট আছে। প্রতিটি পয়েন্ট কমা দিয়ে আলাদা করা দুটি সংখ্যার পেয়ার হতে হবে, যেমন: 48.409114,-123.369158। পয়েন্টগুলি পাইপ চিহ্ন দিয়ে আলাদা করতে হবে: '|'
  • আপনার অনুরোধে একটি ভুল placeId অন্তর্ভুক্ত ছিল।
  • আপনার অনুরোধে placeId ও path দু'টিই অন্তর্ভুক্ত ছিল। প্রতিটি অনুরোধের জন্য এইসব প্যারামিটারের মধ্যে শুধুমাত্র একটি উল্লেখ করা যেতে পারে।

যদি এমন কোনও রাস্তার জন্য placeId পাস করা হয় যা আর নেই বা এমন কোনও জায়গার জন্য যা রাস্তা নয়, তাহলে এই সমস্যাটি দেখানো হবে না।

403 PERMISSION_DENIED রেজিস্টার না করা অনুরোধ ব্লক করা হয়েছে। Google Developers Console ব্যবহার করে সাইন-আপ করুন। নিম্নলিখিত এক বা একাধিক কারণে অনুরোধটি প্রত্যাখ্যান করা হয়েছে:
  • API কী নেই বা ভুল আছে।
  • আপনার অ্যাকাউন্টে বিলিং চালু করা হয়নি।
  • নিজের সেট করা ব্যবহারের সীমা পেরিয়ে গেছেন।
  • প্রদান করা পেমেন্ট পদ্ধতি আর বৈধ নেই (যেমন, একটি ক্রেডিট কার্ডের মেয়াদ শেষ হয়ে গেছে)।

Google Maps Platform প্রোডাক্ট ব্যবহার করতে হলে, আপনার অ্যাকাউন্টে বিলিং চালু থাকতে হবে এবং সমস্ত অনুরোধে একটি বৈধ API কী থাকতে হবে। এটি ঠিক করতে, নিচের ধাপগুলি অনুসরণ করুন:

404 NOT_FOUND এই পরিষেবার জন্য HTTPS প্রয়োজন। আপনি https://roads.googleapis.com/-কে অনুরোধ পাঠাচ্ছেন কিনা তা নিশ্চিত করুন এবং http://roads.googleapis.com/-কে নয়।
429 RESOURCE_EXHAUSTED প্রোজেক্টের অনুরোধের সীমা শেষ হয়ে যাওয়ার কারণে অনুরোধ থ্রটল করা হয়েছে। আপনি Google Cloud Platform Console-এ কনফিগার করা অনুরোধের সীমা পেরিয়ে গেছেন। এই সীমা সাধারণত প্রতিদিন করা অনুরোধ, ১০০ সেকেন্ডে করা অনুরোধ এবং ব্যবহারকারী পিছু ১০০ সেকেন্ডে করা অনুরোধ হিসেবে সেট করা হয়। এই সীমা এমনভাবে কনফিগার করা উচিত যাতে কোনও একজন বা ছোট কোনও গ্রুপের ব্যবহারকারী আপনার দৈনিক কোটা শেষ করে ফেলতে না পারেন, একই সাথে সব ব্যবহারকারীকে যুক্তিসঙ্গত অ্যাক্সেস দেওয়া যায়। এইসব সীমা কনফিগার করতে, ক্যাপিং API ব্যবহার দেখুন।

এক্সপোনেনশিয়াল ব্যাকঅফ

অনুরোধ ব্যর্থ হলে, আপনাকে নিশ্চিত করতে হবে যে আপনি এক্সপোনেনশিয়াল ব্যাকঅফ সহ অনুরোধ আবার চেষ্টা করছেন। যেমন, কোনও অনুরোধ একবার ব্যর্থ হলে, এক সেকেন্ড পরে আবার চেষ্টা করুন, এটি আবার ব্যর্থ হলে, দুই সেকেন্ড পরে আবার চেষ্টা করুন, তারপরে চার সেকেন্ড এবং আরও অনেক কিছু। এটি নিশ্চিত করে যে, ভাঙা অনুরোধ বা বড় আকারের ব্যর্থতা Google-এর সার্ভারকে প্লাবিত করে না, কারণ অনেক ক্লায়েন্ট খুব দ্রুত অনুরোধের চেষ্টা করে।

সমস্যার সমাধান সংক্রান্ত প্রায়শই জিজ্ঞাসিত প্রশ্ন

প্রয়োগ সংক্রান্ত সমস্যা

কত ঘন ঘন আমার গাড়ির লোকেশন স্যাম্পেল করা উচিত?
১-১০ সেকেন্ডের মধ্যে প্রতিটি স্ন্যাপ-টু-রোড ফলাফল হাই কোয়ালিটির হতে সাজেস্ট করা হয়।
প্রতিটি কোয়েরির জন্য আমি কতগুলি পয়েন্ট পাঠাতে পারব তার কি কোনও সীমা আছে?
হ্যাঁ, একটি কোয়েরিতে সর্বাধিক ১০০ পয়েন্ট থাকতে পারে।
আমার স্ন্যাপ করা অক্ষাংশ/দ্রাঘিমাংশ জোড়া সেভ করার জন্য আমি কতটা নির্ভুলতা ব্যবহার করব?
স্ন্যাপ করা পাথ যাতে সব জুম লেভেলে, এমনকি সর্বাধিক জুম লেভেলেও, রাস্তা ফলো করে তা নিশ্চিত করতে, আপনাকে স্ন্যাপ করা অক্ষাংশ/দ্রাঘিমাংশের পেয়ার ৭ ডেসিমাল প্লেস প্রিসিশনে স্টোর করতে হবে।
স্ন্যাপ করা পাথ দেখাতে আমি কি এনকোড করা পলিলাইন ব্যবহার করতে পারি?
এনকোড করা পলিলাইন শুধুমাত্র ৫টি দশমিক স্থান পর্যন্ত নির্দিষ্ট করা হয়, যার ফলে আনুমানিক ২ মিটার পর্যন্ত সমস্যা হতে পারে। তাই, আপনি যদি চান যে আপনার স্ন্যাপ করা পাথ হাই জুম লেভেলে রাস্তা অনুসরণ করুক, তাহলে এনকোড করা পলিলাইন উপযুক্ত নয়।

সাধারণ সমস্যা

কিছু পয়েন্ট স্ন্যাপ করা হচ্ছে না অথবা স্ন্যাপ করা পাথে গ্যাপ আছে। আমি কীভাবে এটি সংশোধন করব?
  • আপনি যদি নির্দিষ্ট সময় অন্তর পয়েন্ট স্যাম্পেল করেন, তাহলে নিশ্চিত করুন যে আপনার পয়েন্ট কম সময়ের ব্যবধানে (প্রতি ১-১০ সেকেন্ডে) স্যাম্পেল করা হয়েছে। যদি আরও বেশি সময়সীমা ব্যবহার করা হয় (যেমন, ৬০ সেকেন্ড), তাহলে স্ন্যাপ-টু-রোড অ্যালগরিদম যথেষ্ট নির্ভুলভাবে কোন কোন রাস্তা ধরে যাওয়া হয়েছে তা নির্ধারণ করতে নাও পারে।
  • আপনি যদি পয়েন্ট তৈরি করার জন্য ম্যাপে ম্যানুয়ালি ক্লিক করেন, তাহলে খুব সহজেই কম পয়েন্ট বা স্পার্স পয়েন্ট সহ পাথ তৈরি করতে পারবেন যা স্ন্যাপিং অ্যালগরিদম ভালভাবে ম্যানেজ করতে পারে না। স্ন্যাপিং অ্যালগরিদম সেইসব পয়েন্টের জন্য সবচেয়ে ভাল কাজ করে যেগুলি একে অপরের কাছাকাছি থাকে। আপনার পাথ পরীক্ষা করতে, রোডে স্ন্যাপ করার ডেমো ব্যবহার করে দেখুন অথবা রোড ইনস্পেক্টর ব্যবহার করুন।
জুম ইন করলে, আমার স্ন্যাপ করা পাথ কেন আঁকাবাঁকা বা রাস্তা থেকে সামান্য দূরে দেখাচ্ছে?
  • আপনি কি স্ন্যাপ করা অক্ষাংশ/দ্রাঘিমাংশের জোড়া দেখানোর আগে সেগুলির নির্ভুলতা কমিয়ে দিচ্ছেন? স্ন্যাপ করা অক্ষাংশ/দ্রাঘিমাংশ জোড়া ৭ দশমিক পয়েন্টের কম নির্ভুলতায় স্টোর করলে, ম্যাপে স্ন্যাপ করা পাথ দেখানোর সময় নির্ভুলতা সংক্রান্ত সমস্যা হয়।
  • আপনি কি এনকোড করা পলিলাইন ব্যবহার করছেন? এনকোড করা পলিলাইন অক্ষাংশ/দ্রাঘিমাংশ জোড়াকে ৫ দশমিক স্থান পর্যন্ত ট্রাঙ্কেট করে, যা কয়েক মিটারের ত্রুটি সৃষ্টি করে, যার ফলে হাই জুম লেভেলে আঁকাবাঁকা বা রাস্তা থেকে সামান্য দূরে লাইন তৈরি হয়।

উপরের কোনওটি না হয়ে থাকলে, ম্যাপ টাইল সম্প্রতি আপডেট করা হয়ে থাকতে পারে যার ফলে স্ন্যাপিংয়ের জন্য ব্যবহৃত রোড ইনডেক্সের সাথে সেগুলি সিঙ্ক করা যায়নি। আপনার কোয়েরির মধ্যে শুধুমাত্র কয়েকটি প্রভাবিত হলে, এটিই সম্ভবত কারণ। Google Maps নিয়মিত আপডেট করা হয় বলে, মাঝে মাঝে এটি হতে পারে। এছাড়াও, আপনি যদি নিয়মিত ম্যাপে পুরনো পাথ দেখেন (যেমন, কয়েক সপ্তাহ আগে স্ন্যাপ করা পাথ), তাহলে এটি আরও বেশি হতে পারে। অপ্টিমাল ভিজ্যুয়ালিজেশনের জন্য, ম্যাপে দেখানোর ঠিক আগে আপনাকে পুরনো পাথ আবার স্ন্যাপ করতে হবে, যাতে ম্যাপ টাইল ও স্ন্যাপিংয়ের জন্য ব্যবহৃত রোড ইনডেক্সের মধ্যে অসঙ্গতি কমানো যায়।

রাস্তা 'ক'-এর স্পিড লিমিট ভুল দেখানোর কারণ কী হতে পারে?
স্পিড লিমিট বিভিন্ন সোর্স থেকে আসে যেগুলির নির্ভুলতা ও কভারেজ আলাদা আলাদা হয়। আপনি যদি কোনও প্যাটার্ন খুঁজে পান, যেমন কোনও নির্দিষ্ট রাস্তার ধরনের জন্য স্পিড লিমিট বা কোনও নির্দিষ্ট এলাকার জন্য স্পিড লিমিট ধারাবাহিকভাবে ভুল হচ্ছে, তাহলে আমাদের জানাতে নিম্নলিখিত ধাপগুলি অনুসরণ করুন:
  1. আপনার ডেস্কটপ কম্পিউটারে Google Maps খুলুন অথবা Android-এর জন্য Google Maps অ্যাপ খুলুন।
  2. বাঁদিকের মেনু খুলুন।
  3. মতামত জানান বিকল্প বেছে নিন। মনে রাখবেন: আপনাকে লগ-ইন করার জন্য প্রম্পট করা হতে পারে।
  4. ম্যাপ এডিট করুন বিকল্প বেছে নিন।
  5. আপনি যে রোড সেগমেন্ট এডিট করতে চান সেটি বেছে নিন।
  6. পরবর্তী বিকল্প বেছে নিন।
  7. "অন্যান্য" ফিল্ডে, উল্লেখ করুন যে সেই রাস্তার জন্য স্পিড লিমিট ভুল।
  8. জমা দিন বিকল্প বেছে নিন।
এছাড়াও, আপনি এখানে অন্যান্য সমস্যা সম্পর্কে অভিযোগ জানাতে পারেন (যেমন, রাস্তার নাম ভুল হলে, ভুলভাবে আঁকা হলে, বন্ধ থাকলে বা ব্যক্তিগত রাস্তা হলে)।
আমার স্ন্যাপ করা পাথ কেন রাস্তা অনুসরণ না করে কোণাকুণি যাচ্ছে?
এই সমস্যার সমাধান করতে, নিম্নলিখিত বিষয়গুলি চেক করুন:
  • interpolate প্যারামিটার true হিসেবে সেট করা আছে কিনা তা নিশ্চিত করুন।
  • আপনার আসল ডেটা পয়েন্টগুলি যথেষ্ট কাছাকাছি ব্যবধানে (প্রতি ১-১০ সেকেন্ডে) স্যাম্পেল করা হয়েছে কিনা তা চেক করুন।
স্পিড লিমিট পরিবর্তন হয়নি এমন রোডের জন্য স্ন্যাপ করা পাথে আমি কেন অনেক রোড সেগমেন্ট রিটার্ন পাচ্ছি?
interpolate প্যারামিটার true হিসেবে সেট করা থাকলে, স্ন্যাপ-টু-রোড কোয়েরি এমন পলিলাইন রিটার্ন করে যা কোণ, বাঁক ও গোলচত্বর বরাবর রাস্তা ফলো করে। রাস্তা বাঁক নিলে, স্পিড লিমিট পরিবর্তন না হলেও একাধিক রোড সেগমেন্ট রিটার্ন করা হয়, যাতে এমন পলিলাইন তৈরি করা যায় যা রাস্তার জ্যামিতিকে নিখুঁতভাবে অনুসরণ করে।