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