ওয়েপয়েন্ট অপটিমাইজেশন হলো Routes Preferred-এর একটি ফিচার যা ComputeRoutes সম্প্রসারিত করে। এটি একজন ভ্রমণকারীর রুটের মধ্যবর্তী ওয়েপয়েন্টগুলোর ক্রমকে অপটিমাইজ করে, যার ফলে তিনি সম্ভাব্য সবচেয়ে কার্যকর পথটি অনুসরণ করতে পারেন। ওয়েপয়েন্ট অপটিমাইজেশনের ComputeRoutes ইমপ্লিমেন্টেশনটি নিম্নলিখিত ভ্রমণ মোডগুলোকে সমর্থন করে:
- গাড়ি চালানো
- মোটরচালিত দ্বিচক্রযান
- সাইক্লিং
- হাঁটা
ওয়েপয়েন্ট অপ্টিমাইজেশন কেন ব্যবহার করবেন?
এমন একটি অ্যাপ তৈরি করার সময় যা ব্যবহারকারীকে কোনো গন্তব্যে যাওয়ার পথে একাধিক ওয়েপয়েন্টের মধ্য দিয়ে পথ দেখায়, এটা নিশ্চিত করা গুরুত্বপূর্ণ যে ভ্রমণকারী যেন ওয়েপয়েন্টগুলো সর্বোত্তম ক্রমে অতিক্রম করে। এটি নিশ্চিত করে যে ভ্রমণকারী সবচেয়ে কম সময়ে প্রতিটি ওয়েপয়েন্টে পৌঁছাবে।
এটি কীভাবে কাজ করে
ডিফল্টরূপে, ComputeRoutes তার ওয়েপয়েন্টগুলোর মধ্য দিয়ে একটি রুট গণনা করে, যে ক্রমে সেগুলো মূলত প্রদান করা হয়েছিল। আপনি মধ্যবর্তী ওয়েপয়েন্টগুলোকে আরও কার্যকর ক্রমে পুনর্বিন্যাস করে ComputeRoutes দিয়ে রুটটি অপ্টিমাইজ করাতে পারেন। আপনি যদি রিকোয়েস্ট বডিতে থাকা optimizeWaypointOrder ফিল্ডটিকে true সেট করেন, তাহলে আপনি অপ্টিমাইজ করা ওয়েপয়েন্টসহ একটি রুট পাবেন।
দ্রষ্টব্য : ওয়েপয়েন্ট অপ্টিমাইজেশন গণনা মূলত ভ্রমণ সময়ের উপর ভিত্তি করে করা হয়, তবে এই ফিচারটি দূরত্ব এবং বাঁকের সংখ্যার মতো অন্যান্য বিষয়ও বিবেচনা করে।
পুনর্বিন্যস্ত ওয়েপয়েন্টগুলি পান
পুনর্বিন্যস্ত ওয়েপয়েন্টসহ একটি রুট পেতে, ComputeRoutes এ আপনার অনুরোধের বডিতে optimizeWaypointOrder বুলিয়ান ফিল্ডটির মান true সেট করুন। এছাড়াও, ফিল্ড মাস্কে optimizedIntermediateWaypointIndex ফিল্ডটি অন্তর্ভুক্ত করুন। রেসপন্স বডিতে optimizedIntermediateWaypointIndex ফিল্ডগুলোতে অপ্টিমাইজ করা ওয়েপয়েন্টের ক্রম থাকে।
দ্রষ্টব্য : optimizedIntermediateWaypointIndex ফিল্ডটি শূন্য-ভিত্তিক মান প্রদান করে।
উদাহরণ অনুরোধ
নিম্নলিখিত উদাহরণ অনুরোধটি স্ট্যানফোর্ড বিশ্ববিদ্যালয় ক্যাম্পাসের কাছাকাছি একটি রুট সরবরাহ করে। অনুরোধটিতে রুটের ওয়েপয়েন্টগুলো ক্রমানুসারে সরবরাহ করা হয়েছে। অনুরোধটিতে একটি উৎস এবং একটি গন্তব্য রয়েছে, সাথে দুটি মধ্যবর্তী ওয়েপয়েন্টও আছে।
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"}
উদাহরণ প্রতিক্রিয়া
আপনি রেসপন্স বডির মধ্যে থাকা routes অবজেক্টের 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যোগ করতে হবে।আপনার অনুরোধে ২৫ বা তার বেশি মধ্যবর্তী ওয়েপয়েন্ট থাকলে, এটিকে অবশ্যই নিম্নলিখিত শর্তগুলোও মেনে চলতে হবে:
সমস্ত ওয়েপয়েন্টগুলোর মধ্যে মোট সরলরৈখিক দূরত্ব অবশ্যই ১,০০০ কিলোমিটারের কম হতে হবে। এই দূরত্বের মধ্যে উৎস এবং গন্তব্য উভয়ই অন্তর্ভুক্ত।
ভ্রমণের মাধ্যম অবশ্যই ড্রাইভ হতে হবে।