שאלות נפוצות

עובדות לגבי המוצר

בעיות

רשת

נתונים

התאמה אישית של ממשק המשתמש

יצירת מסלול מתבצעת

סימולטור

תהליכי עבודה

עובדות לגבי המוצר

האפליקציה צריכה להטמיע תיבת דו-שיח עם ההודעה התנאים וההגבלות של Navigation SDK שכל נהג צריך לאשר. תיבת הדו-שיח הזו מאפשרת לנהג לאשר את התנאים וההגבלות. קובץ טקסט של התנאים מסופק עם ה-SDK לניווט.
ב-Android, משתמשים בשיטה NavigationApi.showTermsAndConditionsDialog כדי להציג את תיבת הדו-שיח שמכילה את המונחים.
ב-iOS, קוראים לפונקציה GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName.
כל השפות שנתמכות על ידי מפות Google לנייד זמינות באופן אוטומטי ל-Navigation SDK. למכשיר יש את שפת המערכת שמוגדרת כברירת מחדל ואפליקציה לא יכולה לשנות את ההגדרה הזו. אבל לאפליקציה יש גישה ליותר מ-70 שפות.

כן. ב-Android, לאחר ההפעלה, LocationListener ממשיך לפעול ברקע. האפליקציה ממשיכה להצמיד את המיקום לכביש ושומרת על המיסוי.

ב-iOS, כדי להמשיך לקבל עדכוני מיקום לגבי המיקום והנושא ברקע, צריך להטמיע הקלטת כבישים ולהגדיר את allowsBackgroundLocationUpdates לערך YES.

כן. כשיוצרים או משנים מסלול, השדה RouteChangeListener מספק קווים פוליגוניים.

לא, אין צורך להתקין את מפות Google לנייד במכשיר כדי להשתמש ב-Navigation SDK.
לא, ה-Navigation SDK לא מספק את הפונקציונליות הזו כרגע.
כן. כיוון התנועה זמין ומוצג כברירת מחדל.

בעיות

ב-Xcode 12, בניית אפליקציות לא תקינה עבור הסימולטור. איך פותרים את הבעיה?

כדי לפתור את הבעיה, פותחים את הגדרות Build של פרויקט ה-Xcode ומוסיפים את arm64 לקובץ Excluded Architectures בגרסת ה-build של 'סימולטור iOS' בלבד.

מידע נוסף מופיע בשרשור הבא של StackOverflow.

לא ניתן לטעון את GMSMapView.

אם ה-GMSMapView לא נטען:

  • בודקים ש-NavSDK מופעל במסוף Cloud.
  • אם ערכת ה-SDK של Nav מותקנת אבל בפרויקט שלך לא נעשה שימוש בממשקי API של Nav SDK, צריך להסיר אותה מהבינארי.

רשת

איך ערכת הניווט SDK מטפלת בקישוריות באיכות ירודה?
ערכת הניווט SDK שומרת מראש את המסלול לכל נסיעה. המידע שנשמר מראש כולל פרטי מסלול ל-15-20 דקות, ומסלולים חלופיים למקרה שהנהג סטה מהמסלול. המיקום המשוער של ה-Navigation SDK מבוסס על מיקום ה-GPS והחיישנים במכשיר.
האם מצב אופליין זמין?
לא, ב-Navigation 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, כדי שהניווט ימשיך לפעול ברקע, מטמיעים את ה-listener של GMSRoadSnappedLocationProviderListener ומגדירים את המאפיין allowsBackgroundLocationUpdates לערך TRUE.

האם ה-SDK לניווט תומך בגבולות וירטואליים?

לא. בהקשר של ניווט, ל-remainingTimeOrdistanceChangeListener יש יתרון על פני גבולות וירטואליים פשוטים. ייתכן שהגבולות הגאומטריים של הכביש לא יחושבו על סמך הנתונים הגיאומטריים של הכביש, והכביש לא יתמקד בנקודה המדויקת שאליה הנהג עובר.

אפשר להעריך את הפונקציונליות הזו באמצעות remainingTimeOrdistanceChangeListener.

  1. מגדירים את הסף כדי לקבוע את תדירות הקריאות החוזרות.
  2. בודקים את המרחק שנותר ליעד.

לדוגמה, אם תגדירו את הסף ל-100 מ', תקבלו קריאה חוזרת כשהמרחק ליעד ישתנה ב-100 מ'. ככל שהמרחק הולך ופוחת, אפשר לעדכן את הסף הזה לערך קטן יותר ולקבל התקשרות חזרה בתדירות גבוהה יותר. לאחר מכן, בודקים את המרחק שנותר כדי להחליט אם אתם קרובים מספיק לנקודת האיסוף או ההורדה.

ב-iOS, מטמיעים את ה-listener GMSNavigatorListener.didUpdateRemainingDistance כדי לנהל את המרחק בין ההתראות.

האם אפשר להשבית התראות כשאפליקציית הניווט פועלת ברקע?

כן. ב-Android, אפשר להשתמש ב-Navigator.setHeadsUpNotificationEnabled כדי לשלוט בהתראות. ל-method הזה יש ארגומנט בוליאני. FALSE משבית את ההתראות; TRUE מפעיל התראות.

ב-iOS, כדי להשבית את ההתראות ברקע לגבי מיקומים שתועדו על ידי כבישים, צריך להגדיר את GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdates לערך NO.

כדי להשבית את העיבוד ברקע של התראות מיקום אחרות, צריך להתקשר ל-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 עם שם מותאם אישית ליעד ולקו האורך וקו הרוחב. ה-Navigation SDK מציג את הכותרת המותאמת אישית ואת הקואורדינטות ב-NavigationMap.

ב-iOS, יוצרים GMSMarker עבור היעד ומציגים אותו.

האם אפשר להשתמש ב-Navigation SDK כדי לעקוב אחרי סטיות מנתיב מוגדר?

כן. ב-Android, אפשר להשתמש ב-Navigator.setRouteChangedListener כדי לקבל התראות לגבי שינויים במסלול או המלצה על מסלול חדש:

  1. רישום אוזן שבודק את מיקום המכשיר לאורך המסלול באמצעות השיטה Navigator.setRouteChangedListener.
  2. מוסיפים קוד ל-handler של אירועי קריאה חוזרת, 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.

תהליכי עבודה

איך סוגרים את ההתראה אחרי שסוגרים פעילות שמכילה מקטע ניווט?

התראת הניווט ממשיכה להופיע במהלך הניווט, גם כשהפעילות נסגרת. כשהרכב מגיע ליעד, הניווט מפסיק וההתראה נעלמת.

כדי לטפל בקליקים על ההתראה, יש להשתמש בNavigator.startGuidance(intent resumeIntent). ה-resume intent מופעל כשהמשתמש לוחץ על ההתראה. בדרך כלל, מתבצעת קריאה אל Navigator.startguidance(getIntent()) מהפעילות הראשית, והפעילויות האלו משחזרות את הפעילות כשהמשתמש לוחץ על ההתראה.