محاسبات مسیر (ازجمله تغییر مسیر) مسیری را که کمترین زمان را برای پیمایش نیاز دارد بهعنوان بهترین مسیر پیشفرض برمیگرداند. اما میتوانید راهبرد مسیریابی را تغییر دهید تا بهجای آن، کوتاهترین مسیر از بین مسیرهای جایگزین برگردانده شود.
اصطلاح کوتاهتر یعنی مسیری که در میان مسیرهای بهینه براساس مدل هزینه پیشفرض ما کوتاهترین است. مسیر کوتاهتر ممکن است کوتاهترین مسیر مطلق نباشد، زیرا آن گزینه ممکن است جایگزین مناسبی نباشد. برای مثال، اگر کوتاهترین مسیر مطلق ۱۰ کیلومتر باشد و پیمودن آن ۵۰ دقیقه طول بکشد و مسیر دیگری ۱۵ کیلومتر باشد، اما پیمودن آن فقط ۲۰ دقیقه طول بکشد، گزینه دوم بهینه است، زیرا صرف ۳۰ دقیقه برای کاهش پنج کیلومتر معامله خوبی نیست.
وقتی استراتژی مسیریابی را برای سفری تنظیم میکنید، تا زمانی که سفر تکمیل نشود تغییر نخواهد کرد. برای تغییر استراتژی مسیریابی برای سفر موجود، باید مقصدها را پاک کنید و دوباره آنها را با استراتژی مسیریابی جدید تنظیم کنید.
درحال دریافت جزئیات مسیر
برای تعیین اینکه کدام استراتژی مسیر انتخاب بهینه برای یک نقطهمسیر معین است،
getRouteInfoForDestination() را فراخوانی کنید تا جزئیات مسیر را برای هر دو مسیر
بهترین مسیر پیشفرض و مسیر مطلقاً کوتاهتر دریافت کنید. جزئیات شامل مدت زمان و
فاصله تا ایستگاه بین راهی مقصد است.
این جزئیات از
GMSNavigationRouteInfo
در تماس برگشتی میآید.
مثال
مثال کد زیر نشان میدهد که چگونه جزئیات مسیر را برای هریک از دو استراتژی مسیریابی دریافت کنید.
Swift
let routingOptions = GMSNavigationRoutingOptions()
navigator?.getRouteInfoForDestination(destination,
routingOptions: routingOptions) { routeInfo in
...
}
آبجکتیو-سی
GMSNavigationRoutingOptions *routingOptions =
[[GMSNavigationRoutingOptions alloc] init];
[navigator getRouteInfoForDestination:destination
withRoutingOptions:routingOptions
callback:^(GMSNavigationRouteInfo *routeInfo){...}];
درحال تنظیم استراتژی مسیریابی
میتوانید راهبرد مسیریابی را بااستفاده از GMSNavigationRoutingOptions پیکربندی کنید،
و routingStrategy را هنگام تماس با setDestinations() تنظیم کنید.
routingStrategy یکی از مقادیر شمارشی زیر را میگیرد:
| ارزش فهرست | شرح |
|---|---|
| GMSNavigationRoutingStrategyDefaultBest | مسیرها را براساس مدل هزینه پیشفرض «کیت توسعه نرمافزار پیمایش» رتبهبندی میکند. این راهبرد رهیابی پیشفرض است. |
| GMSNavigationRoutingStrategyShorter | مسیرها را براساس فاصله رتبهبندی میکند. مسیر دارای بالاترین رتبه کوتاهترین مسیر از بین مسیرهای برگرداندهشده است. |
مثال
مثال کد زیر نحوه تنظیم استراتژی مسیریابی مسیر کوتاهتر را نشان میدهد.
Swift
let routingOptions = GMSNavigationRoutingOptions(routingStrategy: .shorter)
navigator?.setDestinations(destinations,
routingOptions: routingOptions) { routeStatus in
...
}
آبجکتیو-سی
GMSNavigationRoutingOptions *routingOptions = [[GMSNavigationRoutingOptions alloc] initWithRoutingStrategy:GMSNavigationRoutingStrategyShorter];
[navigator setDestinations:destinations
routingOptions:routingOptions
callback:^(GMSRouteStatus routeStatus){...}];
مسیرهایی که شامل کشتی میشوند
بهطور پیشفرض، «کیت توسعه نرمافزار پیمایش برای iOS» مسیرهایی را که شامل کشتی هستند مستثنا میکند. اگر ترجیح میدهید
گزینههای کشتی را بهعنوان بخشی از مسیرهایتان اضافه کنید، میتوانید این اولویت
مسیریابی را با تنظیم avoidsFerries روی
false تغییر دهید تا سفر را برای بخشهای کشتی نمایان کنید.
مثال
Swift
self.mapView.navigator?.avoidsFerries = false
آبجکتیو-سی
self.mapView.navigator.avoidsFerries = NO
قالب نوشته راهنمای مسیر
در استراتژی مسیریابی کوتاهتر، توضیحات درطول مسیر جزئیات فاصله را نمایش میدهد. اما میتوانید بهجای آن از «بازدیدبهای اقدام» استفاده کنید.
درحال پیکربندی قالب نوشته راهنمای مسیر
با تنظیم routeCalloutFormat در
GMSMapView میتوانید قالب نوشته راهنمای مسیر را تغییر دهید. routeCalloutFormat یکی از مقادیر شمارشی زیر را میگیرد:
| مقدار فهرست | شرح |
|---|---|
| GMSNavigationRouteCalloutFormatDefault | زمان باقیمانده را هنگام استفاده از استراتژی مسیریابی پیشفرض بهترین مسیر نمایش میدهد. وقتی از استراتژی مسیریابی مسیر کوتاهتر استفاده میکنید، فاصله باقیمانده را نمایش میدهد |
| GMSNavigationRouteCalloutFormatTime | زمان باقیمانده را نمایش میدهد. |
| GMSNavigationRouteCalloutFormatDistance | فاصله باقیمانده را نمایش میدهد. |
مثال
نمونه کد زیر نحوه پیکربندی قالب فراخوانی مسیر را نشان میدهد.
Swift
self.mapView.routeCalloutFormat = .time
آبجکتیو-سی
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;