تنظیمات برگزیده مسیریابی را تنظیم کنید

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

اصطلاح کوتاهتر به معنای مسیری است که بر اساس مدل هزینه پیش‌فرض ما، کوتاه‌ترین مسیر در بین مسیرهای بهینه است. مسیر کوتاه‌تر ممکن است کوتاه‌ترین مسیر مطلق نباشد، زیرا آن گزینه ممکن است جایگزین ضعیفی باشد. برای مثال، اگر کوتاه‌ترین مسیر 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;