بهینه سازی نقطه راه یک ویژگی ترجیحی مسیرها است که 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
روی حداقل ده ثانیه، زمان بیشتری را در فراخوانی متد تنظیم کنید. اگر همچنان خطاهای مهلت زمانی را دریافت می کنید، می توانید یک ثانیه دیگر اضافه کنید و سپس دوباره امتحان کنید.
محدودیت های استفاده
برای استفاده از بهینهسازی نقطه راه، باید این محدودیتها و شرایط استفاده را دنبال کنید:
شما می توانید حداکثر محدودیت استفاده را برای ایستگاه های بین راهی در مسیر خود تعیین کنید:
- حداکثر 98 نقطه بین با استفاده از مختصات طول و عرض جغرافیایی.
- اگر با استفاده از شناسههای مکان، نقطههای بین راهی را مشخص کنید، حداکثر تا 25 نقطه بین راه وجود دارد.
همه ایستگاه های بین راهی شما باید از نوع توقفگاه باشند. هیچ یک از ایستگاه های بین راهی شما نمی تواند از نوع via باشد.
شما باید
routes.optimizedIntermediateWaypointIndex
را به فیلد ماسک اضافه کنید.اگر درخواست شما دارای 25 یا بیشتر ایستگاه بین راهی باشد، باید شرایط زیر را نیز رعایت کند:
فاصله خط مستقیم انباشته شده بین تمام ایستگاه های بین راه باید کمتر از 1000 کیلومتر باشد. این فاصله هم مبدا و هم مقصد را شامل می شود.
حالت سفر باید DRIVE باشد.