আপনার রুটের ওয়েপয়েন্ট অপ্টিমাইজ করুন

ওয়েপয়েন্ট অপ্টিমাইজেশন হল Routes Preferred-এর একটি ফিচার যা ComputeRoutes-কে এক্সটেন্ড করে। এটি কোনও ভ্রমণকারীর রুটে মধ্যবর্তী ওয়েপয়েন্টের ক্রম অপ্টিমাইজ করে, যাতে তারা সবচেয়ে দক্ষ রুটে ভ্রমণ করতে পারে। ComputeRoutes ওয়েপয়েন্ট অপ্টিমাইজেশন ইমপ্লিমেন্ট করার সময় নিম্নলিখিত ট্রাভেল মোড কাজ করে:

  • ড্রাইভিং
  • মোটরচালিত দুই চাকার গাড়ি
  • সাইক্লিং
  • হাঁটা

ওয়েপয়েন্ট অপ্টিমাইজেশন কেন ব্যবহার করবেন?

এমন কোনও অ্যাপ তৈরি করার সময় যা ব্যবহারকারীকে গন্তব্যে পৌঁছানোর জন্য একাধিক ওয়েপয়েন্টের মাধ্যমে গাইড করে, তখন এটি গুরুত্বপূর্ণ যে ভ্রমণকারী যেন ওয়েপয়েন্টগুলি সবচেয়ে উপযুক্ত ক্রমে অতিক্রম করেন। এর ফলে, ভ্রমণকারী সবচেয়ে কম সময়ে প্রতিটি ওয়েপয়েন্টে পৌঁছাতে পারেন।

এটি কীভাবে কাজ করে

ডিফল্ট হিসেবে, ComputeRoutes তার ওয়েপয়েন্টের মাধ্যমে একটি রুট হিসেব করে, যে ক্রমে সেগুলি মূলত প্রদান করা হয়েছিল। আপনি ComputeRoutes-কে বলতে পারেন যাতে মাঝের ওয়েপয়েন্টগুলিকে আরও দক্ষ ক্রমে সাজিয়ে রুটটি অপ্টিমাইজ করে। আপনি যদি অনুরোধের বডিতে optimizeWaypointOrder ফিল্ডটি true-এ সেট করেন, তাহলে আপনি অপ্টিমাইজ করা ওয়েপয়েন্ট সহ একটি রুট পাবেন।

মনে রাখবেন: ওয়েপয়েন্ট অপ্টিমাইজেশন সংক্রান্ত গণনা মূলত ভ্রমণের সময়ের উপর ভিত্তি করে করা হয়, তবে এই ফিচার দূরত্ব ও কতবার ঘুরতে হবে তার মতো অন্যান্য বিষয়ও বিবেচনা করে।

আবার সাজানো ওয়েপয়েন্ট পান

পুনর্বিন্যাস করা ওয়েপয়েন্ট সহ রুট পেতে, ComputeRoutes-এ আপনার অনুরোধের বডিতে বুলিয়ান ফিল্ড optimizeWaypointOrder-কে true-এ সেট করুন। এছাড়াও, ফিল্ড মাস্কে optimizedIntermediateWaypointIndex ফিল্ড অন্তর্ভুক্ত করুন। উত্তরের মূল অংশে optimizedIntermediateWaypointIndex ফিল্ডে অপ্টিমাইজ করা ওয়েপয়েন্ট অর্ডার থাকে।

মনে রাখবেন: optimizedIntermediateWaypointIndex ফিল্ড শূন্য-ভিত্তিক ভ্যালু রিটার্ন করে।

অনুরোধের উদাহরণ

নিম্নলিখিত অনুরোধের উদাহরণটি Stanford University ক্যাম্পাসের কাছাকাছি একটি রুট প্রদান করে। রুটের ওয়েপয়েন্টগুলি অনুরোধে ক্রমানুসারে সরবরাহ করা হয়েছে। অনুরোধে একটি উৎস এবং একটি গন্তব্য রয়েছে, দুটি মধ্যবর্তী সহ ওয়েপয়েন্ট

POST /v1alpha:computeRoutes
Host: routespreferred.googleapis.com
Content-Type: application/json
X-Server-Timeout: 10
X-Goog-Api-Key: YOUR_API_KEY
X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex,routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline
{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.418956,
        "longitude": -122.160815
      }
    }
  },
  "intermediates": [
    {
      "location":{
        "latLng":{
          "latitude": 37.4176423,
          "longitude":-122.1102246
        }
      }
    },
    {
      "location":{
        "latLng":{
          "latitude": 37.407689,
          "longitude": -122.1360597
        }
      }
    }
  ],
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.4032137,
        "longitude": -122.0349119
      }
    }
  },
  "travelMode": "DRIVE",
  "optimizeWaypointOrder": true,
  "routingPreference": "TRAFFIC_AWARE"}

উত্তরের উদাহরণ

আপনি রেসপন্স বডিতে রুট অবজেক্টের মধ্যে optimizedIntermediateWaypointIndex ফিল্ডে পুনরায় সাজানো ইন্টারমিডিয়েট ওয়েপয়েন্ট ইনডেক্স খুঁজে পাবেন। এনকোড করা পলিলাইন Directions API এবং ComputeRoutes-এর মতোই।

routes {
  distance_meters: 17647
  duration {
    seconds: 1866
  }
  polyline {
    encoded_polyline: "wkkcFvorhVU{@Ec@C}CG}@Mm@[}@i@y@[[g@_@Tk@BSjCgGfF|D\\Pv@Lj@@XaCTeC\\aCTs@`ByD`@k@h@e@x@Yh@GtADhBF|@G`AWpAs@lAsAdA{A`BmDr@cBmUqQoS}OyGmFiBsAgEwD}CaCU_@Og@@e@Hy@nGkO~@sBr@cBlDqIlByEp@}AjIfGnBbBHLLd@^p@~ErDfNrKrA~@DIhEeBTQ~AqDlE{KjBgE|FnEh@aAi@`A}FoE~AmD`A}BcAm@mHwFwD}CkLwIsDqCgF_EG[GKnCsDrA_BrC_CnCoBpEkD`EyClCsBcBeBIAkGkH]k@eJmKQKsAuA_@g@wCoDGQmEmFmIqROKaDuHvBkBxAgANCRH^f@v@dBHDD?`AUiBqEhBpEaATMCQYm@wAY]SIOByAfAwBjB_ByDaAwBiCeIA[c@aBqEuNOm@IQbA{c@p@aZFmCTuBLg@Tc@BUAKxOeV~Vy_@nBoDv@_BvAcDzA_EdG{RdC{HtIsY|B{Hx@mDbAuFdBsMbKsv@TaBf@}AdF{Sn@_DJq@Lo@aE`@]GUQmAmAQk@@g@RK`Ce@d@UDEPc@f@cCrAyGJs@X{AbIem@bA{JD_AIaAMg@o@{A_Ad@y@NaCLCsCK_FGI"
  }
  optimizedIntermediateWaypointIndex: 1
  optimizedIntermediateWaypointIndex: 0
}

এই উদাহরণে, লক্ষ্য করুন যে ওয়েপয়েন্ট অপ্টিমাইজ করার ফলে তাদের আসল ক্রম উল্টে গেছে।

অপ্টিমাইজ করা ওয়েপয়েন্ট সহ অনুরোধ প্রসেস করতে সাধারণ রুটিং অনুরোধের চেয়ে বেশি সময় লাগে। তাই, আমরা সাজেস্ট করি যে আপনি মেথড কলে আরও বেশি টাইমআউট সেট করুন। এটি করতে X-Server-Timeout অনুরোধ হেডারের জন্য কমপক্ষে দশ সেকেন্ডের একটি ভ্যালু সেট করুন। আপনি যদি টাইমআউট সংক্রান্ত সমস্যা পেতে থাকেন, তাহলে আপনি আরও এক সেকেন্ড যোগ করতে পারেন এবং তারপরে আবার চেষ্টা করুন।

ব্যবহার সংক্রান্ত সীমাবদ্ধতা

ওয়েপয়েন্ট অপ্টিমাইজেশন ব্যবহার করতে, আপনাকে অবশ্যই এইসব ব্যবহারের সীমাবদ্ধতা এবং শর্তাবলী মেনে চলতে হবে:

  • আপনার রুটে মধ্যবর্তী ওয়েপয়েন্টের জন্য ব্যবহারের সীমা পর্যন্ত আপনি নির্দিষ্ট করতে পারবেন:

    • শুধুমাত্র অক্ষাংশ ও দ্রাঘিমাংশ স্থানাঙ্ক ব্যবহার করে সর্বাধিক ৯৮টি ওয়েপয়েন্ট।
    • আপনি যদি স্থান আইডি ব্যবহার করে কোনও ওয়েপয়েন্ট নির্দিষ্ট করেন তবে ২৫টি পর্যন্ত ওয়েপয়েন্ট।
  • আপনার সবকটি ওয়েপয়েন্ট অবশ্যই স্টপওভার ধরনের হতে হবে। আপনার কোনও ওয়েপয়েন্ট ভায়া ধরনের হতে পারবে না।

  • আপনাকে অবশ্যই ফিল্ড মাস্কে routes.optimizedIntermediateWaypointIndex যোগ করতে হবে।

  • আপনার অনুরোধে ২৫ বা তার বেশি ইন্টারমিডিয়েট ওয়েপয়েন্ট থাকলে, সেটিকেও নিম্নলিখিত শর্ত মেনে চলতে হবে:

    • সবকটি ওয়েপয়েন্টের মধ্যে মোট সরলরৈখিক দূরত্ব ১,০০০ কিমি-এর কম হতে হবে। এই দূরত্বের মধ্যে যাত্রা শুরুর স্থান ও গন্তব্য, দুটিই অন্তর্ভুক্ত।

    • ভ্রমণ মোড অবশ্যই DRIVE হতে হবে।