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

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

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

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

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

لتحديد استراتيجية المسار الأنسب لنقطة طريق معيّنة، استدعِ الدالة 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 ترتيب المسارات حسب نموذج التكلفة التلقائي في حزمة Navigation 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){...}];

المسارات التي تشمل عبّارات

بشكلٍ تلقائي، تستبعد حزمة تطوير البرامج للتنقّل على أجهزة 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;