تغییر دادن اولویت‌های مسیریابی

محاسبات مسیر (ازجمله تغییر مسیر) مسیری را برمی‌گرداند که کمترین زمان را برای پیمایش به‌عنوان بهترین مسیر پیش‌فرض نیاز دارد. اما می‌توانید راهبرد مسیریابی را تغییر دهید تا به‌جای آن، کوتاه‌ترین مسیر جایگزین برگردانده شود.

اصطلاح کوتاه‌تر به‌معنای مسیری است که براساس مدل هزینه پیش‌فرض ما، کوتاه‌ترین مسیر در میان مسیرهای بهینه است. مسیر کوتاه‌تر ممکن است مطلقاً کوتاه‌ترین مسیر نباشد، زیرا آن گزینه ممکن است جایگزین ضعیفی باشد. برای مثال، اگر کوتاه‌ترین مسیر مطلق ۱۰ کیلومتر باشد و پیمایش آن ۵۰ دقیقه طول بکشد و مسیر دیگری ۱۵ کیلومتر باشد، اما پیمایش آن فقط ۲۰ دقیقه طول بکشد، انتخاب دوم بهینه است، زیرا صرف ۳۰ دقیقه برای کاهش پنج کیلومتر معامله خوبی نیست.

وقتی استراتژی مسیریابی را برای سفری تنظیم می‌کنید، تا زمانی که سفر تکمیل نشود، تغییر نخواهد کرد. برای تغییر استراتژی مسیریابی برای سفر موجود، باید مقصدها را پاک کنید و آن‌ها را دوباره با استراتژی مسیریابی جدید بازنشانی کنید.

دریافت جزئیات مسیر

برای تعیین اینکه کدام استراتژی مسیر انتخاب بهینه برای یک نقطه‌مسیر معین است، 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){...}];

مسیرهایی که شامل کشتی است

به‌طور پیش‌فرض، Navigation SDK for 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;