بهینهسازی نقطه مسیر (Waypoint optimization) یک ویژگی ترجیحی مسیرها (Routes Preferred) است که ComputeRoutes را توسعه میدهد. این ویژگی ترتیب نقطههای مسیر میانی را در مسیر مسافر بهینه میکند و تضمین میکند که آنها کارآمدترین مسیر ممکن را طی کنند. پیادهسازی بهینهسازی نقطه مسیر ComputeRoutes از حالتهای سفر زیر پشتیبانی میکند:
- رانندگی
- دو چرخ موتوری
- دوچرخهسواری
- پیادهروی
چرا از بهینهسازی نقاط مسیر استفاده کنیم؟
هنگام ساخت برنامهای که کاربران را از طریق تعدادی نقطه مسیر در مسیر رسیدن به مقصد راهنمایی میکند، مهم است که مسافر از نقاط مسیر به ترتیب بهینه عبور کند. این تضمین میکند که مسافر در کوتاهترین زمان به هر نقطه مسیر میرسد.
چگونه کار میکند؟
به طور پیشفرض، ComputeRoutes یک مسیر را از طریق نقاط مسیر خود، به ترتیبی که در ابتدا ارائه شدهاند، محاسبه میکند. شما میتوانید با مرتبسازی مجدد نقاط مسیر میانی به ترتیبی کارآمدتر، ComputeRoutes برای بهینهسازی مسیر وادار کنید. اگر فیلد optimizeWaypointOrder را در بدنه درخواست روی true تنظیم کنید، مسیری با نقاط مسیر بهینه دریافت خواهید کرد.
نکته : محاسبه بهینهسازی نقطه مسیر در درجه اول بر اساس زمان سفر است، اما این ویژگی عوامل دیگری مانند مسافت و تعداد چرخشها را نیز در نظر میگیرد.
مرتبسازی مجدد نقاط مسیر
برای دریافت مسیری با نقاط مسیر تغییر ترتیب داده شده، فیلد بولی optimizeWaypointOrder در بدنه درخواست خود به ComputeRoutes روی 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"}
پاسخ نمونه
میتوانید اندیسهای نقطه میانیِ تغییر ترتیب داده شده را در فیلدهای optimizedIntermediateWaypointIndex درون شیء routes در بدنه پاسخ پیدا کنید. چندخطی کدگذاری شده مشابه با 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 زمان انتظار بالاتری را در فراخوانی متد تعیین کنید. اگر همچنان خطاهای زمان انتظار را دریافت میکنید، میتوانید یک ثانیه دیگر اضافه کنید و دوباره امتحان کنید.
محدودیتهای استفاده
برای استفاده از بهینهسازی نقطه مسیر، باید این محدودیتها و شرایط استفاده را رعایت کنید:
شما میتوانید تا سقف مجاز استفاده برای نقاط بینراهی میانی در مسیر خود را مشخص کنید:
- تا ۹۸ نقطه مسیر فقط با استفاده از مختصات طول و عرض جغرافیایی.
- تا ۲۵ نقطه مسیر در صورت مشخص کردن هر نقطه مسیر با استفاده از شناسه مکان.
تمام نقاط مسیر شما باید از نوع توقفگاه باشند. هیچ یک از نقاط مسیر شما نمیتواند از نوع via باشد.
شما باید
routes.optimizedIntermediateWaypointIndexرا به ماسک فیلد اضافه کنید.اگر درخواست شما ۲۵ یا بیشتر نقطه میانی داشته باشد، باید شرایط زیر را نیز رعایت کند:
فاصلهی مستقیم بین تمام نقاط مسیر باید کمتر از ۱۰۰۰ کیلومتر باشد. این فاصله شامل مبدا و مقصد میشود.
حالت سفر باید DRIVE باشد.