محاسبات مسیر (شامل تغییر مسیر) مسیری را که کمترین زمان پیمایش را دارد، به عنوان بهترین مسیر پیشفرض برمیگرداند. اما میتوانید استراتژی مسیریابی را تغییر دهید تا کوتاهترین مسیر از بین مسیرهای جایگزین، به جای آن برگردانده شود.
اصطلاح کوتاهتر به مسیری اطلاق میشود که بر اساس مدل هزینه پیشفرض ما، کوتاهترین مسیر در بین مسیرهای بهینه باشد. مسیر کوتاهتر ممکن است کوتاهترین مسیر مطلق نباشد، زیرا آن گزینه ممکن است جایگزین ضعیفی باشد. به عنوان مثال، اگر کوتاهترین مسیر مطلق ۱۰ کیلومتر باشد و پیمایش آن ۵۰ دقیقه طول بکشد و مسیر دیگری ۱۵ کیلومتر باشد، اما پیمایش آن فقط ۲۰ دقیقه طول بکشد، انتخاب دوم بهینه است، زیرا صرف ۳۰ دقیقه برای کاهش پنج کیلومتر، معامله خوبی نیست.
وقتی استراتژی مسیریابی را برای یک سفر تنظیم میکنید، تا زمان اتمام سفر تغییر نخواهد کرد. برای تغییر استراتژی مسیریابی برای یک سفر موجود، باید مقصدها را پاک کنید و دوباره آنها را با استراتژی مسیریابی جدید تنظیم مجدد کنید.
دریافت جزئیات مسیر
برای تعیین اینکه کدام استراتژی مسیر، انتخاب بهینه برای یک نقطه مسیر مشخص است، تابع getRouteInfoForDestination() را فراخوانی کنید تا جزئیات مسیر را هم برای بهترین مسیر پیشفرض و هم برای کوتاهترین مسیر مطلق دریافت کنید. این جزئیات شامل مدت زمان و فاصله تا نقطه مسیر مقصد میشود.
این جزئیات از GMSNavigationRouteInfo در تابع callback گرفته شدهاند.
مثال
مثال کد زیر نحوه دریافت جزئیات مسیر برای هر یک از دو استراتژی مسیریابی را نشان میدهد.
سویفت
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 یکی از مقادیر شمارشی زیر را میگیرد:
| مقدار شمارشی | توضیحات |
|---|---|
| GMSراهنمایی، مسیریابی، استراتژی، پیشفرض، بهترین | مسیرها را بر اساس مدل هزینه پیشفرض Navigation SDK رتبهبندی میکند. این استراتژی مسیریابی پیشفرض است. |
| استراتژی مسیریابی ناوبری GMSکوتاهتر | مسیرها را بر اساس فاصله رتبهبندی میکند. بالاترین رتبه، کوتاهترین مسیر از بین مسیرهای برگشتی است. |
مثال
مثال کد زیر نحوه تنظیم استراتژی مسیریابی کوتاهتر را نشان میدهد.
سویفت
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){...}];
مسیرهایی که شامل کشتی میشوند
به طور پیشفرض، SDK ناوبری برای iOS مسیرهایی را که شامل کشتیها میشوند، حذف میکند. اگر ترجیح میدهید گزینههای کشتی را به عنوان بخشی از مسیرهای خود در نظر بگیرید، میتوانید با تنظیم avoidsFerries به false ، این ترجیح مسیریابی را طوری تنظیم کنید که سفر را به بخشهای کشتی نشان دهد.
مثال
سویفت
self.mapView.navigator?.avoidsFerries = false
هدف-سی
self.mapView.navigator.avoidsFerries = NO
قالب راهنمای مسیر
در استراتژی مسیریابی کوتاهتر، راهنماهای مسیر، جزئیات مسافت را نشان میدهند. اما میتوانید به جای آن از راهنماهای ETA استفاده کنید.
پیکربندی قالب راهنمای مسیر
میتوانید قالب فراخوانی مسیر را با تنظیم routeCalloutFormat در GMSMapView تغییر دهید. routeCalloutFormat یکی از مقادیر شمارشی زیر را میگیرد:
| مقدار شمارشی | توضیحات |
|---|---|
| GMSNavigationRouteCalloutFormatDefault | نمایش زمان باقیمانده هنگام استفاده از بهترین استراتژی مسیریابی پیشفرض. نمایش مسافت باقیمانده هنگام استفاده از کوتاهترین استراتژی مسیریابی |
| GMS ناوبری مسیر فراخوانی قالب زمان | زمان باقی مانده را نمایش میدهد. |
| GMSNavigationRouteCalloutFormatDistance | D مسافت باقی مانده را نمایش میدهد. |
مثال
مثال کد زیر نحوه پیکربندی قالب فراخوانی مسیر را نشان میدهد.
سویفت
self.mapView.routeCalloutFormat = .time
هدف-سی
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;