ضبط الإعدادات المفضّلة للتوجيه

تعرض العمليات الحسابية للمسارات (بما في ذلك إعادة التوجيه) المسار الذي يستغرق أقل قدر من الوقت للتنقل باعتباره أفضل مسار. ولكن يمكنك تغيير استراتيجية التوجيه بحيث يتم إرجاع بدائل المسار الأقصر بدلاً من ذلك.

يعني مصطلح أقصر المسار الأقصر بين المسار الأمثل استنادًا إلى نموذج التكلفة التلقائي. قد لا يكون المسار الأقصر هو المسار الأقصر على الإطلاق لأن هذا الخيار قد يكون بديلاً سيئًا. على سبيل المثال، إذا كان أقصر طريق هو 10 كم واستغرق 50 دقيقة للتنقل فيه مسار آخر هو 15 كيلومتر، ولكن يستغرق 20 دقيقة فقط للتنقل، فإن الخيار الثاني هو الخيار الأمثل لأن قضاء 30 دقيقة لتقليل خمسة كيلومترات ليس مفاضلة جيدة.

بعد تعيين استراتيجية التوجيه للرحلة، لن تتغير حتى تكتمل الرحلة. لتغيير استراتيجية التوجيه لرحلة حالية، يجب محو الوجهات وإعادة ضبطها مرة أخرى باستخدام استراتيجية التوجيه الجديدة.

الحصول على تفاصيل المسار

لتحديد استراتيجية المسار التي تُعتبر الخيار الأمثل لنقطة مسار معيّنة، اتصل بـ getRouteInfoForDestination() للحصول على تفاصيل المسار لكل من أفضل مسار تلقائي والمسار الأقصر على الإطلاق. تتضمن التفاصيل المدة والمسافة إلى نقطة طريق الوجهة.

تأتي هذه التفاصيل من GMSNavigationRouteInfo في معاودة الاتصال.

مثال

يوضح مثال الرمز البرمجي التالي كيفية الحصول على تفاصيل المسار لكل من استراتيجيتَي التوجيه.

Swift

let routingOptions = GMSNavigationRoutingOptions()
navigator?.getRouteInfoForDestination(destination,
                                      routingOptions: routingOptions) { routeInfo in
  ...
}

Objective-C

GMSNavigationRoutingOptions *routingOptions =
    [[GMSNavigationRoutingOptions alloc] init];
[navigator getRouteInfoForDestination:destination
                   withRoutingOptions:routingOptions
                             callback:^(GMSNavigationRouteInfo *routeInfo){...}];

إعداد استراتيجية التوجيه

يمكنك إعداد استراتيجية التوجيه باستخدام GMSNavigationRoutingOptions، وضبط routingStrategy عند طلب setDestinations().

يتم استخدام إحدى قيم التعداد التالية للعدد routingStrategy:

قيمة التعدادالوصف
GMSNavigationRoutingStrategyDefaultBest ترتّب المسارات حسب نموذج التكلفة التلقائي لحزمة تطوير البرامج (SDK) للتنقّل. هذه هي استراتيجية التوجيه التلقائية.
GMSNavigationRoutingStrategyShorter يعمل هذا الخيار على ترتيب المسارات حسب المسافة. أمّا المسار الأعلى ترتيبًا، فهو الأقصر بين المسارات التي تم إرجاعها.

مثال

يوضح مثال الرمز التالي كيفية تعيين استراتيجية توجيه المسار الأقصر.

Swift

let routingOptions = GMSNavigationRoutingOptions(routingStrategy: .shorter)
navigator?.setDestinations(destinations,
                           routingOptions: routingOptions) { routeStatus in
  ...
}

Objective-C

GMSNavigationRoutingOptions *routingOptions = [[GMSNavigationRoutingOptions alloc] initWithRoutingStrategy:GMSNavigationRoutingStrategyShorter];
[navigator setDestinations:destinations
            routingOptions:routingOptions
                  callback:^(GMSRouteStatus routeStatus){...}];

المسارات التي تتضمّن عبّارات

تستبعد حزمة SDK للتنقّل في نظام التشغيل iOS المسارات التي تتضمن العبّارات تلقائيًا. إذا كنت تفضّل تضمين خيارات العبّارات كجزء من مساراتك، يمكنك تعديل هذا الخيار المفضّل لعرض الرحلة على قطاعات العبّارات من خلال ضبط السمة avoidsFerries على false.

مثال

Swift

self.mapView.navigator?.avoidsFerries = false

Objective-C

self.mapView.navigator.avoidsFerries = NO

تنسيق وسيلة شرح المسار

ضمن استراتيجية التوجيه الأقصر للمسار، تعرض وسائل الشرح على طول المسار تفاصيل المسافة. ولكن يمكنك استخدام وسائل شرح الوقت المقدّر للوصول بدلاً من ذلك.

ضبط تنسيق وسيلة شرح المسار

يمكنك تغيير تنسيق وسيلة شرح المسار من خلال إعداد routeCalloutFormat في GMSMapView. يستخدم routeCalloutFormat إحدى قيم التعداد التالية:

قيمة التعدادالوصف
GMSNavigationRouteCalloutFormatDefault يتم عرض الوقت المتبقي عند استخدام استراتيجية توجيه أفضل مسار تلقائية. عرض المسافة المتبقية عند استخدام استراتيجية توجيه المسار الأقصر
GMSNavigationRouteCalloutFormatTime يتم عرض الوقت المتبقي.
GMSNavigationRouteCalloutFormatDistance يعرض هذا الحقل المسافة المتبقية.

مثال

يوضّح مثال الرمز التالي كيفية ضبط تنسيق وسيلة شرح المسار.

Swift

self.mapView.routeCalloutFormat = .time

Objective-C

_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;