الأسئلة الشائعة

حقائق عن المنتج

المشاكل

الشبكة

البيانات

تخصيص واجهة المستخدم

يتم الآن تخطيط المسار

مُحاكي

Workflows

حقائق عن المنتج

يجب أن يتضمّن تطبيقك مربّع حوار يتضمّن إشعار بنود خدمة "حزمة تطوير البرامج (SDK) للتنقّل" الذي يجب أن يقبله كل سائق. يتيح مربّع الحوار هذا للسائق الفرصة للموافقة على بنود الخدمة. يتم تقديم ملف نصي للبنود مع حزمة SDK للتنقل.
في نظام Android، يمكنك استخدام الطريقة NavigationApi.showTermsAndConditionsDialog لعرض مربّع الحوار الذي يحتوي على العبارات.
على جهاز iOS، يمكنك إجراء مكالمة GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName.
تكون أي لغات متاحة في تطبيق "خرائط Google" للأجهزة الجوّالة متاحة تلقائيًا من خلال حزمة تطوير البرامج (SDK) للتنقّل. يحتوي الجهاز على لغة نظام تلقائية ولا يمكن للتطبيق تغيير هذا الإعداد، ومع ذلك، يمكن للتطبيق الوصول إلى أكثر من 70 لغة.

رائع في نظام Android، ما إن بدأ تشغيل LocationListener في الخلفية. ويستمر تطبيقك في التقاط الطريق والحفاظ على الاتجاه.

في نظام iOS، لمواصلة تلقّي تعديلات الموقع الجغرافي للموقع الجغرافي والاتجاه في الخلفية، عليك تنفيذ لقطات الطريق وضبط allowsBackgroundLocationUpdates على YES.

رائع عند إنشاء مسار أو تغييره، توفّر السمة RouteChangeListener الخطوط المتعددة.

لا، إنّ "حزمة تطوير البرامج (SDK) للتنقّل" لا تتطلّب تثبيت تطبيق "خرائط Google" للأجهزة الجوّالة على الجهاز.
لا، لا توفّر "حزمة تطوير البرامج (SDK) للتنقّل" هذه الوظيفة في الوقت الحالي.
نعم. يكون اتجاه حركة المرور متاحًا وعرضه بشكل تلقائي.

المشاكل

في Xcode 12، لا يتم إنشاء التطبيقات بشكل صحيح للمحاكي. كيف يمكنني حلّ هذه المشكلة؟

لحلّ هذه المشكلة، افتح إعدادات الإصدار لمشروع Xcode، وأضِف arm64 إلى Excluded Architectures لإصدارات "iOS Simulator" فقط.

لمزيد من المعلومات، يُرجى الاطّلاع على سلسلة محادثات StackOverflow التالية.

لا يتم تحميل GMSMapView.

في حال عدم تحميل GMSMapView:

  • تأكَّد من أنّ حزمة NavSDK مفعَّلة في Cloud Console.
  • في حال تثبيت حزمة تطوير البرامج (SDK) للتنقل، ولكنّ مشروعك لا يستخدم واجهات برمجة تطبيقات Nav SDK، عليك إزالتها من البرنامج الثنائي.

الشبكة

كيف تتعامل حزمة SDK للتنقل مع الاتصال الضعيف؟
تخزّن حزمة "حزمة تطوير البرامج (SDK) للتنقل" المسار مؤقتًا لكل رحلة. وتتضمن المعلومات المخزنة مؤقتًا بشكل مسبق معلومات التوجيه لمدة تتراوح بين 15 و20 دقيقة، بالإضافة إلى بدائل المسار في حالة انحراف السائق عن المسار. وتحدد حزمة "SDK للتنقل" موضعها باستخدام نظام تحديد المواقع العالمي (GPS) وأدوات الاستشعار في الجهاز.
هل وضع عدم الاتصال متاح؟
لا، لا توفّر "حزمة تطوير البرامج (SDK) للتنقل" وضع "بلا اتصال بالإنترنت" في الوقت الحالي، ولكن توفّر "حزمة SDK" معلومات مخزَّنة مؤقتًا بشكل مسبق من أجل رحلة معيّنة.

البيانات

هل يمكنني استرداد جميع محطات التوقّف/الوجهات في رحلة قبل بدء المسار؟

رائع في نظام Android، يمكنك طلب Navigator.getRouteSegments() لاسترداد اتجاهات مسار الرحلة.

في جهاز iOS، يمكنك الاتصال بالرقم GMSNavigator.routeLegs(read).

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

في Android، اتّبِع الخطوات التالية لمنح مستخدمي التطبيق معلومات الوقت المقدّر للوصول:

  1. استرِد الوقت والمسافة بين جميع نقاط الطرق باستخدام Navigator.getTimeAndDistanceList().
  2. يمكنك إعادة توجيه هذه المعلومات إلى تطبيق العميل، كما تفعل حاليًا في الوقت المقدّر للوصول للسائق.

في iOS، اتّبِع الخطوات التالية لتزويد مستخدمي التطبيق بمعلومات الوقت المقدّر للوصول:

  1. استعادة الساقين في الرحلة باستخدام Navigator.getRouteSegments().
  2. يُرجى الاتصال بالرقم GMSNavigator.timeToNextDestination لكل مرحلة من مراحل الرحلة.
  3. أعد توجيه معلومات الوقت إلى تطبيق العميل كما تفعل حاليًا مع الوقت المقدّر للوصول للسائق.
هل يمكن استخدام RoadSnappedLocationProvider للحصول على الموقع الجغرافي المقطوعة حاليًا للسائق إذا لم يكن شريط التنقّل في المقدّمة؟

رائع في Android، يتم تشغيل RoadSnappedLocationProvider في الخلفية تلقائيًا.

في نظام iOS، لإبقاء التنقل قيد التشغيل في الخلفية، عليك تنفيذ المستمع لـ GMSRoadSnappedLocationProviderListener، وضبط السمة allowsBackgroundLocationUpdates على TRUE.

هل تدعم حزمة تطوير البرامج (SDK) للتنقل تحديد الموقع الجغرافي؟

لا، في سياق التنقل، تتميز السمة remainingTimeOrdistanceChangeListener بميزة "تفوق الحدود الجغرافية" البسيطة. قد لا يأخذ السياج الجغرافي في الاعتبار هندسة الطرق، وقد لا يتم تركيزه على النقطة الدقيقة التي يتنقل إليها السائق.

يمكنك تقريب هذه الوظيفة باستخدام remainingTimeOrdistanceChangeListener.

  1. اضبط الحدّ الأدنى لتحديد معدّل تكرار معاودة الاتصال.
  2. تحقَّق من المسافة المتبقية إلى الوجهة.

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

في أجهزة iOS، استخدِم أداة معالجة البيانات GMSNavigatorListener.didUpdateRemainingDistance لإدارة المسافة بين الإشعارات.

هل يمكنني إيقاف الإشعارات عندما يكون تطبيق "التنقل" في الخلفية؟

رائع في Android، استخدِم Navigator.setHeadsUpNotificationEnabled للتحكّم في الإشعارات. تحتوي هذه الطريقة على وسيطة منطقية. يوقف FALSE الإشعارات، ويفعِّل TRUE الإشعارات.

في iOS، يمكنك إيقاف إشعار الخلفية للمواقع التي تم قطعها على الطريق من خلال ضبط GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdates على "لا".

لإيقاف المعالجة في الخلفية لإشعارات الموقع الجغرافي الأخرى، يمكنك الاتصال برقم GMSNavigator.sendsBackgroundNotifications(NO).

تخصيص واجهة المستخدم

هل يمكنني ترميز أفضل خيار للمسار؟
لا، لا يمكن حاليًا استخدام الترميز اللوني لخيار مسار معيّن.
هل يمكن أن تعرض حزمة SDK للتنقل الوقت المقدّر للوصول للوجهة النهائية؟

رائع في Android، يمكنك استخدام الطرق التالية:

  1. استرِد الوقت والمسافة بين جميع نقاط الطرق باستخدام Navigator.getTimeAndDistanceList().
  2. إخفاء الوقت المقدّر للوصول للنقطة الحالية باستخدام NavigationFragment.setEtaCardEnabled(false)
  3. اعرض الوقت المقدّر للوصول النهائي.

في نظام التشغيل iOS، استخدِم ما يلي:

  1. تواصل هاتفيًا مع "GMSNavigator.routeLegs(read)".
  2. مع الجزء الأخير، اتصل بـ GMSNavigator.timeToNextDestination.
  3. إخفاء الوقت المقدّر للوصول لنقطة الطريق الحالية باستخدام MSMapView.settings.navigationFooterEnabled=NO إلى FALSE.
  4. اعرض الوقت المقدّر للوصول النهائي.
كيف يمكنني إخفاء تعديلات الوقت المقدر للوصول؟

يمكنك إيقاف بطاقات الوقت المقدّر للوصول بالطرق التالية:

  • في Android، استخدِم navigationView.setEtaCardEnabled(false).
  • في نظام iOS، استخدِم GMSMapView.settings.navigationFooterEnabled=NO.
ما هي تخصيصات واجهة المستخدم المتوفرة لبطاقات الرأس والتذييل؟

في Android، يمكنك استخدام StylingOptions لضبط نمط لون الخلفية. لإخفاء الرأس والتذييل أو إظهارهما، استخدِم الدالتين setHeaderEnabled وsetFooterEnabled للأعضاء في NavigationFragment.

في أجهزة iOS، استخدِم GMSMapView.settings.navigationHeaderPrimaryBackgroundColor لضبط لون الخلفية. لإخفاء الرأس والتذييل أو إظهارهما، استخدِم السمتَين navigationFooterEnabled وnavigationHeaderEnabled لكل من GMSUISettings.

يتم الآن تخطيط المسار

هل يمكنني توفير مسار محدد للسائق أو إزالة مسارات بديلة؟
لا، لأنّه بشكل تلقائي، يتم توفير مسارات متعددة وتكون الأولوية للمسار الأسرع. يمكنك التأثير في المسار التلقائي من خلال إضافة إعدادات مفضّلة إلى طلبك، مثل "تجنّب الطرق السريعة ورسوم العبور". تؤثر إضافة نقاط الطريق أيضًا على المسار.
هل يمكنني عرض تصنيف للوجهة لمستخدم التطبيق يختلف عن تصنيف الموقع الجغرافي للوجهة التلقائي؟

رائع في Android، يمكنك إنشاء Marker مع عنوان مخصّص للوجهة وخط العرض/خط الطول. تعرض حزمة تطوير البرامج (SDK) للتنقل العنوان المخصّص والإحداثيات في NavigationMap.

في نظام التشغيل iOS، يمكنك إنشاء GMSMarker للوجهة وعرضها.

هل يمكنني استخدام حزمة تطوير البرامج (SDK) للتنقل لتتبُّع الانحرافات عن مسار محدَّد؟

رائع في Android، استخدِم تطبيق Navigator.setRouteChangedListener لتلقّي الإشعارات عند تغيير مسار أو عند اقتراح مسار جديد:

  1. يمكنك استخدام طريقة Navigator.setRouteChangedListener لتسجيل جهاز استماع يتحقّق من موضع الجهاز على طول المسار.
  2. إضافة رمز إلى معالج حدث معاودة الاتصال، onRouteChanged:
    • يمكنك إرسال رسالة إلى مستخدم التطبيق تتضمّن معلومات محدّثة حول الوقت المقدّر للوصول والمسافة.
    • يمكنك تتبُّع الموقع الجغرافي للجهاز.
    • [اختياري] يمكنك إضافة وظائف أخرى يتطلبها تطبيقك للتعامل مع السائق خارج المسار الموصوف.

في نظام iOS، استخدِم GMSNavigator ومستمعينه لتلقّي إشعارات عند تغيير أحد المسارات أو عند اقتراح مسار جديد:

  1. في وحدة التحكّم في عرض الخريطة، نفِّذ بروتوكول GMSNavigatorListener وبروتوكول GMSRoadSnappedLocationProviderListener.
  2. تنفيذ GMSNavigatorListener.navigatorDidChangeRoute.
  3. يمكنك الوصول إلى المسار الجديد باستخدام السمتَين routeLegs وcurrentRouteLeg من GMSNavigator.
هل يمكن للسائق الخروج من وضع التنقّل بدون إكمال المسار؟

رائع في Android، يمكنك طلب طريقة Navigator.stopGuidance() لإيقاف التنقّل.

في جهاز iOS، يمكنك الاتصال بالرقم GMSNavigator.clearDestinations.

مُحاكي

هل يتوافق المحاكي مع تغييرات المسار؟

رائع في Android، يمكنك الاتصال بالرقم simulateLocationsAlongNewRoute لمحاكاة رحلة تتضمن تغيير المسار. تتجاهل الطريقة simulateLocationsAlongExistingRoute التغييرات التي تتم على المسار الحالي.

في أجهزة iOS، استخدِم GMSLocationSimulator.simulateAlongNewRouteToDestinations لمحاكاة رحلة تتضمن تغيير المسار. وإذا لم تكن تتوقع حدوث أي تغييرات في المسار، يمكنك استخدام السمة GMSLocationSimulator.simulateLocationsAlongExistingRoute أو GMSLocationSimulator.simulateAlongNewRouteToDestinations.

Workflows

كيف يمكنني إغلاق الإشعار بعد إغلاق نشاط يحتوي على جزء من التنقّل؟

يظل إشعار التنقل مرئيًا أثناء التنقل، عندما يكون النشاط مغلقًا. عندما تصل المركبة إلى الوجهة، يتوقف التنقل، ويختفي الإشعار.

لمعالجة النقرات على الإشعار، استخدِم Navigator.startGuidance(intent resumeIntent). يتم تنشيط resume intent عندما ينقر مستخدِم التطبيق على الإشعار. ويتم عادةً استدعاء Navigator.startguidance(getIntent()) من النشاط الرئيسي، ما يؤدي إلى استرجاع النشاط عندما ينقر مستخدم التطبيق على الإشعار.