بهینهسازی نقطهمسیر یکی از ویژگیهای 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 در شیء مسیرها در
بدنه پاسخ پیدا کنید. چندخطی کدگذاریشده
همانند
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 (رانندگی) باشد.