שאלות נפוצות
עובדות על המוצר
- איך צריך להציג את ההודעה של התנאים וההגבלות של Navigation SDK?
- באילו שפות ההנחיה הקולית תומכת?
- האם המיקוד נשמר כשהנהג יוצא ממצב הניווט?
- האם קווים פוליגוניים זמינים כשמתחילים או משנים מסלול?
- האם משתמשי האפליקציה צריכים להתקין את מפות Google בנייד?
- האם ה-API של הניווט יכול לזהות חניה ליד מסעדות ויעדים אחרים?
- האם ב-API של הניווט מוצג כיוון התנועה בנתיבים כשמתקרבים לנקודת פנייה?
בעיות
רשת
נתונים
- האם אפשר לאחזר את כל העצירות/היעדים בנסיעה לפני שמתחילים את המסלול?
- האם אפשר לקבל מסלול מפורט בתחילת המסלול?
- איך זמן ההגעה המשוער (ETA) נמסר למשתמשים באפליקציה?
- האם אפשר להשתמש ב-
RoadSnappedLocationProvider
כדי להשיג את המיקום הנוכחי של הנהג/ת במקרה שהניווט לא פועל בחזית? - האם ה-SDK של הניווט תומך בגבולות וירטואליים?
- האם אפשר להשבית התראות כשאפליקציית הניווט פועלת ברקע?
התאמה אישית של ממשק המשתמש
- האם אפשר לצבוע את אפשרות המסלול הטובה ביותר?
- האם אפשר להציג ב-SDK של הניווט את זמן ההגעה המשוער ליעד הסופי?
- איך אפשר להסתיר את העדכונים של זמן ההגעה המשוער?
- אילו התאמות אישיות של ממשק המשתמש זמינות בכרטיסים של הכותרת העליונה והכותרת התחתונה?
יצירת מסלול מתבצעת
- האם אפשר לספק מסלול ספציפי לנהג או להסיר מסלולים חלופיים?
- האם אפשר להציג לנהג/ת תווית שונה של היעד ממיקום היעד שמוגדר כברירת מחדל?
- האם ניתן להשתמש ב-API של הניווט כדי לעקוב אחר סטיות מנתיב מוגדר?
- האם הנהג יכול לצאת מהניווט בלי להשלים את המסלול?
סימולטור
תהליכי עבודה
עובדות על המוצר
- באפליקציה שלך צריך להטמיע תיבת דו-שיח עם ההודעה לגבי התנאים וההגבלות של Navigation SDK שכל נהג צריך לאשר. תיבת הדו-שיח הזו מאפשרת לנהג להסכים לתנאים ולהגבלות. ה-SDK של הניווט מסופק עם קובץ טקסט של התנאים.
- ב-Android, משתמשים בשיטה
NavigationApi.showTermsAndConditionsDialog
כדי להציג את תיבת הדו-שיח שמכילה את המונחים. - ב-iOS, צריך להתקשר אל
GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName
. - כל שפה שנתמכת על ידי מפות Google לנייד זמינה באופן אוטומטי עבור ה-SDK של הניווט. במכשיר יש שפת מערכת שמוגדרת כברירת מחדל ואפליקציה לא יכולה לשנות את ההגדרה הזו. עם זאת, לאפליקציה יש גישה ליותר מ-70 שפות.
-
כן. ב-Android, אחרי ההפעלה,
LocationListener
ממשיך לפעול ברקע. האפליקציה ממשיכה לשנות את המיקום ולשמור על הקצב.ב-iOS, כדי להמשיך לקבל עדכוני מיקום של מיקום וכיוון התנועה ברקע, צריך להטמיע הצמדת כבישים ולהגדיר את
allowsBackgroundLocationUpdates
לערךYES
. -
כן. כשיוצרים או משנים מסלול,
RouteChangeListener
מספק קווים פוליגוניים. - לא, SDK לניווט לא מחייב התקנה של מפות Google לנייד במכשיר.
- לא, ה-SDK לניווט לא מספק את הפונקציונליות הזו בשלב הזה.
- כן. כיוון התנועה זמין ומוצג כברירת מחדל.
בעיות
- ב-Xcode 12, אפליקציות לא בנויות בצורה נכונה לסימולטור. איך פותרים את הבעיה?
-
כדי לפתור את הבעיה, פותחים את הגדרות ה-build של פרויקט Xcode ומוסיפים את
arm64
ל-Excluded Architectures
עבור גרסאות ה-build של "סימולטור iOS" בלבד.למידע נוסף, עיינו ב-thread הבא של StackOverflow.
רשת
- איך ה-API של הניווט מטפל בקישוריות גרועה?
- ערכת ה-SDK של הניווט שומרת מראש את המסלול לכל נסיעה. המידע שנשמר מראש כולל פרטי מסלול למשך 15 עד 20 דקות, ומסלולים חלופיים למקרה שהנהג סוטה מהמסלול. ה-SDK לניווט מבצע הערכה של המיקום באמצעות ה-GPS והחיישנים של המכשיר.
- האם מצב אופליין זמין?
- לא, ה-SDK של הניווט לא מציע מצב אופליין בשלב זה. עם זאת, ה-SDK מספק מידע לגבי התהליך שנשמר מראש במטמון.
נתונים
- האם אפשר לאחזר את כל העצירות/היעדים בתהליך לפני התחלת המסלול?
-
כן. ב-Android, כדי לאחזר את המסלול במסלול צריך להתקשר למספר
Navigator.getRouteSegments()
.ב-iOS, צריך להתקשר אל
GMSNavigator.routeLegs(read)
. - האם ניתן לקבל מסלול מפורט בתחילת המסלול?
- כן. ה-SDK לניווט מספק רשימה של קטעי מסלול. בנוסף, הנהג יכול להחליק דרך כרטיס המסלול שבכותרת כדי לראות כל תמרון.
- איך זמן ההגעה המשוער מועבר למשתמשי האפליקציה?
-
ב-Android, פועלים לפי השלבים הבאים כדי לספק מידע על זמן ההגעה המשוער למשתמשי האפליקציה:
- מאחזרים את השעה והמרחק של כל ציוני הדרך באמצעות
Navigator.getTimeAndDistanceList()
. - יש להעביר את המידע הזה לאפליקציית הלקוח, כמו שמתבצע כרגע לגבי זמן ההגעה המשוער של הנהג.
ב-iOS, פועלים לפי השלבים הבאים כדי לספק מידע על זמן ההגעה המשוער למשתמשי האפליקציה:
- מאחזרים את הרגליים בתהליך באמצעות
Navigator.getRouteSegments()
. - יש להתקשר למספר
GMSNavigator.timeToNextDestination
עבור כל אחד מהשלבים במסלול. - מעבירים את פרטי הזמן לאפליקציית הלקוח, כמו שעושים כרגע עם זמן ההגעה המשוער של הנהג.
- מאחזרים את השעה והמרחק של כל ציוני הדרך באמצעות
-
האם אפשר להשתמש ב-
RoadSnappedLocationProvider
כדי לקבל את המיקום הנוכחי של הנהג/ת במקרה שהניווט לא פועל בחזית? -
כן. ב-Android, האפליקציה
RoadSnappedLocationProvider
פועלת ברקע כברירת מחדל.ב-iOS, כדי שהניווט ימשיך לפעול ברקע, צריך להטמיע את ה-listener עבור
GMSRoadSnappedLocationProviderListener
ולהגדיר את המאפייןallowsBackgroundLocationUpdates
ל-TRUE
. - האם ה-SDK של הניווט תומך בגבולות וירטואליים?
-
לא. בהקשר של ניווט, ל-
remainingTimeOrdistanceChangeListener
יש יתרון על פני גבול וירטואלי פשוט. יכול להיות שהגבול הגיאוגרפי לא מביא בחשבון את גיאומטריית הכבישים, ולא במרכז המיקום המדויק שאליו הנהג מנווט.אפשר להעריך את הפונקציונליות הזו באמצעות
remainingTimeOrdistanceChangeListener
.- יש להגדיר את הסף לקביעת התדירות של הקריאות החוזרות (callback).
- בודקים את המרחק שנותר ליעד.
לדוגמה, אם תגדירו את הסף ל-100 מ', תקבלו קריאה חוזרת (callback) כשהמרחק ליעד משתנה ב-100 מ'. ככל שהמרחק הולך ופוחת, אפשר לעדכן את הסף הזה לערך קטן יותר ולקבל קריאות חוזרות (callback) בתדירות גבוהה יותר. אחר כך, בודקים את המרחק שנותר כדי לקבוע אם אתם קרובים מספיק לנקודת האיסוף/ההורדה.
ב-iOS, יש להטמיע את ה-listener
GMSNavigatorListener.didUpdateRemainingDistance
כדי לנהל את המרחק בין ההתראות. - האם אפשר להשבית התראות כשאפליקציית הניווט פועלת ברקע?
-
כן. ב-Android, משתמשים ב-
Navigator.setHeadsUpNotificationEnabled
על מנת לשלוט בהתראות. לשיטה הזו יש ארגומנט בוליאני.FALSE
משביתים את ההתראות.TRUE
מפעילה את ההתראות.ב-iOS, משביתים את ההתראות ברקע לגבי מיקומים חסומים בכביש על ידי הגדרת
GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdates
למצב 'לא'.כדי להשבית את העיבוד ברקע של התראות מיקום אחרות, צריך להתקשר למספר
GMSNavigator.sendsBackgroundNotifications(NO)
.
התאמה אישית של ממשק המשתמש
- האם אוכל לסמן את אפשרות המסלול הטובה ביותר בצבע?
- לא. כרגע אין תמיכה בקידוד צבע מסוים במסלול.
- האם ה-SDK לניווט יכול להציג את זמן ההגעה המשוער ליעד הסופי?
-
כן. ב-Android, יש להשתמש בשיטות הבאות:
- מאחזרים את השעה והמרחק של כל ציוני הדרך באמצעות
Navigator.getTimeAndDistanceList()
. - הסתרת זמן ההגעה המשוער של ציון הדרך הנוכחי באמצעות
NavigationFragment.setEtaCardEnabled(false)
. - עבד את זמן ההגעה המשוער ליעד הסופי.
ב-iOS, צריך להשתמש באפשרויות הבאות:
- התקשרו אל
GMSNavigator.routeLegs(read)
. - בקטע האחרון, מתקשרים אל
GMSNavigator.timeToNextDestination
. - הסתרת זמן ההגעה המשוער של ציון הדרך הנוכחי באמצעות
MSMapView.settings.navigationFooterEnabled=NO
עד FALSE. - עבד את זמן ההגעה המשוער ליעד הסופי.
- מאחזרים את השעה והמרחק של כל ציוני הדרך באמצעות
- איך אפשר להסתיר עדכונים של זמן הגעה משוער?
-
אפשר להשבית כרטיסי ETA באמצעות השיטות הבאות:
- ב-Android, משתמשים ב-
navigationView.setEtaCardEnabled(false)
. - ב-iOS, משתמשים ב-
GMSMapView.settings.navigationFooterEnabled=NO
.
- ב-Android, משתמשים ב-
-
ב-Android, משתמשים ב-
StylingOptions
כדי להגדיר את סגנון צבעי הרקע. כדי להסתיר או להציג את הכותרת העליונה והתחתונה, משתמשים בפונקציותsetHeaderEnabled
ו-setFooterEnabled
שלNavigationFragment
.ב-iOS, משתמשים ב-
GMSMapView.settings.navigationHeaderPrimaryBackgroundColor
כדי להגדיר את עיצוב צבע הרקע. כדי להסתיר או להציג את הכותרת העליונה והכותרת התחתונה, צריך להשתמש במאפייניםnavigationFooterEnabled
ו-navigationHeaderEnabled
שלGMSUISettings
.
יצירת מסלול מתבצעת
- האם אפשר לספק מסלול ספציפי לנהג או להסיר מסלולים חלופיים?
- לא. כברירת מחדל, המערכת מספקת כמה מסלולים, והמסלול המהיר ביותר מקבל עדיפות. אפשר לשנות את מסלול ברירת המחדל על ידי הוספת העדפות, כמו "הימנעות מכבישים מהירים ומכבישי אגרה". גם הוספת ציוני דרך משפיעה על המסלול.
- האם אפשר להציג למשתמש באפליקציה תווית שונה של היעד מאשר מיקום היעד שמוגדר כברירת מחדל?
-
כן. ב-Android, יוצרים
Marker
עם כותרת מותאמת אישית ליעד וקו האורך/רוחב. ה-SDK של הניווט מציג את הכותרת המותאמת אישית ואת הקואורדינטות ב-NavigationMap
.ב-iOS, אתם יוצרים ומציגים
GMSMarker
עבור היעד. - האם אוכל להשתמש ב-SDK לניווט כדי לעקוב אחר סטיות מנתיב מוגדר?
-
כן. ב-Android, אפשר להשתמש ב
Navigator.setRouteChangedListener
כדי לקבל התראות כשמסלול משתנה או כשיש המלצה על מסלול חדש:- רושמים האזנה שבודקת את מיקום המכשיר לאורך המסלול באמצעות השיטה
Navigator.setRouteChangedListener
. - מוסיפים את הקוד לגורם המטפל באירועים של קריאה חוזרת,
onRouteChanged
:- שליחת הודעה למשתמש באפליקציה עם זמן הגעה משוער ופרטי מרחק מעודכנים.
- לעקוב אחר מיקום המכשיר.
- [אופציונלי] אפשר להוסיף פונקציות נוספות שהאפליקציה נדרשת לטפל בהן כשהנהג לא מהמסלול שנקבע.
ב-iOS, ניתן להשתמש במכשיר
GMSNavigator
וברכיבי ה-listener כדי לקבל התראות כשמסלול משתנה או כשיש המלצה על מסלול חדש:- בבקר הצגת המפה, מטמיעים את הפרוטוקול
GMSNavigatorListener
ואת הפרוטוקולGMSRoadSnappedLocationProviderListener
. - הטמעה של
GMSNavigatorListener.navigatorDidChangeRoute
. - גישה למסלול החדש באמצעות המאפיינים
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())
מהפעילות הראשית, שהמערכת זוכרת את הפעילות כשמשתמש לוחץ על ההתראה.