שאלות נפוצות

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

בעיות

רשת

נתונים

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

ניתוב

סימולטור

תהליכי עבודה

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

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

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

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

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

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

יש מספר ממשקי API ב-Navigation SDK שמיועדים לשימוש רק על ידי לקוחות Mobility Services, ש-Google תחייב אותם על בסיס עסקה. אם אתם לא לקוחות של שירותי ניידות, השיטות הבאות הן ללא תפעול:

בעיות

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

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

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

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

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

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

רשת

איך ערכת הניווט SDK מטפלת בקישוריות באיכות ירודה?
ה-Navigation SDK שומר מראש את המסלול לכל נסיעה. המידע שנשמר מראש כולל פרטי ניתוב ל-15-20 דקות, ומסלולים חלופיים למקרה שהנהג יסטה מהמסלול. ערכת ה-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 מ', תישלח שיחה חוזרת כשהמרחק ליעד משתנה למאה מ'. ככל שהמרחק יורד, אפשר לעדכן את הסף הזה לערך קטן יותר ולקבל קריאות חוזרות (callbacks) תכופים יותר. לאחר מכן בדקו את המרחק שנותר עד כדי לקבוע אם אתם קרובים מספיק לנקודת האיסוף/ההורדה.

ב-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 עם כותרת מותאמת אישית של היעד וקו האורך/רוחב. ה-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()) הפעילות הראשית, שמשחזרת את הפעילות כאשר משתמש האפליקציה לוחץ על ההתראה.