שגיאות
במקרה של שגיאה, יוחזר תוכן תגובה בפורמט שגיאה סטנדרטי, וקוד הסטטוס של HTTP יוגדר כסטטוס שגיאה.
התשובה מכילה אובייקט עם אובייקט error יחיד עם המפתחות הבאים:
-
code: זהה לסטטוס ה-HTTP של התגובה. -
message: תיאור קצר של השגיאה. -
status: קוד סטטוס שמציין את אופי השגיאה.
לדוגמה, שליחת פרמטר placeId לא תקין תחזיר את השגיאה הבאה:
{ "error": { "code": 400, "message": "\"placeId\" value is malformed: \"aChIJqaknMTeuEmsRUYCD5Wd9ARM\"", "status": "INVALID_ARGUMENT" } }
השגיאות האפשריות כוללות:
| קוד | סטטוס | שליחת הודעה | פתרון בעיות |
|---|---|---|---|
| 400 | INVALID_ARGUMENT |
הקוד שסיפקת לא תקין. | מפתח ה-API לא תקין או שהוא לא נכלל בבקשה. חשוב לוודא שכללת את המפתח כולו, ושהפעלת את ה-API עבור המפתח הזה. |
| 400 | INVALID_ARGUMENT |
"path" parameter contains an invalid value: ☃" | הבקשה שלך הכילה ארגומנטים לא חוקיים. הסיבות הסבירות ביותר לשגיאה הזו הן:
השגיאה הזו לא תוחזר אם מועבר |
| 403 | PERMISSION_DENIED |
בקשה לא רשומה נחסמה. צריך להירשם דרך Google Developers Console. | הבקשה נדחתה בגלל אחת או יותר מהסיבות הבאות:
כדי להשתמש במוצרים של Google Maps Platform, צריך להפעיל את החיוב בחשבון, וכל הבקשות צריכות לכלול מפתח API תקין. כדי לפתור את הבעיה, פועלים לפי השלבים הבאים:
|
| 404 | NOT_FOUND |
השירות הזה דורש HTTPS. | מוודאים שאתם שולחים בקשות אל https://roads.googleapis.com/ ולא אל http://roads.googleapis.com/. |
| 429 | RESOURCE_EXHAUSTED |
הבקשה הוגבלה בגלל שהגעתם למגבלות הבקשות של הפרויקט. | חרגת מהמגבלה על מספר הבקשות שהגדרת ב-Google Cloud Platform Console. המגבלה הזו מוגדרת בדרך כלל כמספר הבקשות ליום, מספר הבקשות ל-100 שניות ומספר הבקשות ל-100 שניות לכל משתמש. צריך להגדיר את המגבלה הזו כדי למנוע ממספר קטן של משתמשים או ממשתמש יחיד לנצל את כל המכסה היומית, ועדיין לאפשר גישה סבירה לכל המשתמשים. במאמר הגדרת מכסות שימוש ב-API מוסבר איך להגדיר את המגבלות האלה. |
השהיה מעריכית לפני ניסיון חוזר (exponential backoff)
אם הבקשות נכשלות, צריך לוודא שאתם מנסים לשלוח אותן שוב עם השהיה מעריכית לפני ניסיון חוזר (exponential backoff). לדוגמה, אם בקשה נכשלת פעם אחת, צריך לנסות שוב אחרי שנייה. אם היא נכשלת שוב, צריך לנסות שוב אחרי שתי שניות, ואז אחרי ארבע שניות וכן הלאה. כך מובטח שבקשות פגומות או כשלים נרחבים לא יציפו את השרתים של Google, כי לקוחות רבים מנסים לשלוח מחדש בקשות במהירות רבה.
שאלות נפוצות בנושא פתרון בעיות
בעיות יישום
- באיזו תדירות כדאי לדגום את מיקום הרכב?
- מומלץ להגדיר את הערך הזה לכל 1-10 שניות כדי לקבל תוצאות באיכות גבוהה של הצמדה לכביש.
- האם יש הגבלה על מספר הנקודות שאפשר לשלוח בכל שאילתה?
- כן, שאילתה יכולה להכיל עד 100 נקודות.
- מה רמת הדיוק שבה כדאי לאחסן את זוגות קווי הרוחב והאורך שצולמו?
- כדי לוודא שהנתיבים שמוצמדים לכבישים עוקבים אחרי הכבישים בכל רמות הזום, גם ברמת הזום המקסימלית, צריך לאחסן את זוגות קווי האורך והרוחב שמוצמדים לכבישים עם דיוק של 7 ספרות אחרי הנקודה העשרונית.
- האם אפשר להשתמש בקווים פוליגוניים מקודדים כדי להציג נתיבים שמוצמדים לכבישים?
- הדיוק של קווי פוליגון מקודדים הוא רק 5 ספרות אחרי הנקודה העשרונית, ולכן יש שגיאה של כ-2 מטרים. לכן, פוליגונים מקודדים לא מתאימים אם רוצים שהנתיבים הצמודים לכביש יעקבו אחרי הכביש ברמות זום גבוהות.
בעיות נפוצות
- חלק מהנקודות לא נצמדות, או שיש לי פערים בנתיבים שנצמדו. איך אפשר לתקן את זה?
-
- אם אתם דוגמים את הנקודות במרווחי זמן קבועים, ודאו שהנקודות נדגמות במרווחים קצרים יותר (כל שנייה עד 10 שניות). אם משתמשים במרווח זמן ארוך יותר (לדוגמה, 60 שניות), יכול להיות שהאלגוריתם של התאמה לכביש לא יוכל לקבוע את הכבישים שנסעו בהם ברמת דיוק מספקת.
- אם אתם לוחצים ידנית על המפה כדי ליצור נקודות, קל מאוד ליצור נתיבים עם מעט נקודות או נקודות דלילות שהאלגוריתם של ההצמדה לא מטפל בהם בצורה טובה. האלגוריתם של ההצמדה פועל בצורה הכי טובה כשמדובר בנקודות שקרובות זו לזו. אפשר לנסות את הדמו של התאמה לכבישים או להשתמש בכלי לבדיקת כבישים כדי לבדוק את הנתיבים.
- למה כשמגדילים את התצוגה, הנתיבים המצולמים נראים משוננים או לא בדיוק על הכביש?
-
- האם אתם חותכים את הדיוק של זוגות קווי הרוחב והאורך שמוצגים אחרי שהם מותאמים לנקודות על המפה? שמירת זוגות של קווי אורך ורוחב שמוצמדים במידת דיוק של פחות מ-7 ספרות אחרי הנקודה העשרונית גורמת לשגיאות דיוק כשנתיב ההצמדה מוצג במפה.
- האם אתם משתמשים בקווים פוליגוניים מקודדים? פוליגונים מקודדים חותכים זוגות של קווי רוחב ואורך ל-5 מקומות אחרי הנקודה העשרונית, מה שיוצר שגיאה של כמה מטרים. כתוצאה מכך, הקווים משוננים או מעט חורגים מהכביש ברמות זום גבוהות.
אם אף אחת מהאפשרויות שלמעלה לא רלוונטית, יכול להיות שאריחי המפה עודכנו לאחרונה, ולכן הם לא מסונכרנים עם אינדקס הכבישים שמשמש להצמדה. אם רק כמה מהשאילתות שלכם מושפעות, סביר להניח שזה הגורם. מפות Google מתעדכנות באופן קבוע, ולכן יכול להיות שהדבר יקרה מדי פעם. זה יכול לקרות בתדירות גבוהה יותר אם אתם בודקים באופן קבוע מסלולים ישנים במפה (לדוגמה, מסלולים שנוצרו לפני כמה שבועות). כדי להציג את הנתונים בצורה אופטימלית, כדאי להצמיד מחדש את הנתיבים הישנים ממש לפני שמציגים אותם במפה, כדי לצמצם את חוסר העקביות בין משבצות המפה לבין אינדקס הכבישים שמשמש להצמדה.
- מה יכול לגרום לכך שמגבלת המהירות בכביש X תוצג בצורה שגויה?
- הגבלות המהירות מגיעות מכמה מקורות שונים, שרמת הדיוק והכיסוי שלהם משתנה.
אם מצאתם דפוס, למשל הגבלות מהירות שגויות באופן עקבי לסוג דרך מסוים או באזור מסוים, אתם יכולים לפעול לפי השלבים הבאים כדי ליידע אותנו:
- פותחים את מפות Google במחשב או את אפליקציית מפות Google ל-Android.
- פותחים את תפריט הצד השמאלי.
- לוחצים על שליחת משוב. הערה: יכול להיות שתתבקשו להתחבר לחשבון.
- לוחצים על עריכת המפה.
- בוחרים את קטע הכביש שרוצים לערוך.
- לוחצים על הבא.
- בשדה 'אחר', מציינים שמגבלת המהירות בכביש שגויה.
- לוחצים על שליחה.
- למה הנתיב המצולם שלי חותך פינות במקום לעקוב אחרי הכביש?
-
כדי לפתור את הבעיה, צריך לבדוק את הדברים הבאים:
- ודאו שהפרמטר
interpolateמוגדר ל-true. - צריך לוודא שהדגימה של נקודות הנתונים המקוריות מתבצעת במרווחי זמן קצרים מספיק (כל שנייה עד 10 שניות).
- ודאו שהפרמטר
- למה מוחזרים לי הרבה קטעי דרך בנתיב המצמיד לדרך מסוימת, אם לא היו שינויים במגבלת המהירות?
- כשמגדירים את הפרמטר
interpolateלערךtrue, שאילתת התאמה לכביש מחזירה קו פוליגוני שעוקב אחרי הכביש בפינות, בעיקולים ובכיכרות. אם הכביש מתעקל, מוחזרים כמה קטעי כביש גם אם הגבלת המהירות לא משתנה, כדי ליצור קו פוליגוני שמתאים לגיאומטריה של הכביש.