שגיאות
במקרה של שגיאה, המערכת תחזיר גוף תגובה בפורמט סטנדרטי של שגיאה וקוד הסטטוס של ה-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' מכיל ערך לא חוקי: ☃" | הבקשה הכילה ארגומנטים לא חוקיים. הסיבות האפשריות ביותר לשגיאה הזו הן:
השגיאה הזו לא תוחזר אם מעבירים את הערך |
403 | PERMISSION_DENIED |
בקשה לא רשומה נחסמה. צריך להירשם דרך Google Developers Console. | הבקשה נדחתה בגלל אחת או יותר מהסיבות הבאות:
כדי להשתמש במוצרים של הפלטפורמה של מפות Google, צריך להפעיל את החיוב בחשבון וכל הבקשות צריכות לכלול מפתח API תקין. כדי לפתור את הבעיה, מבצעים את הפעולות הבאות:
|
404 | NOT_FOUND |
נדרש HTTPS לשירות הזה. | חשוב לוודא שאתם שולחים בקשות אל https://roads.googleapis.com/ ולא אל http://roads.googleapis.com/ . |
429 | RESOURCE_EXHAUSTED |
הבקשה הוגבלה כי הגעתם למגבלות הבקשות בפרויקט. | חרגתם ממגבלת הבקשות שהגדרתם במסוף Google Cloud Platform. בדרך כלל המגבלה הזו מוגדרת כבקשות ליום, בקשות לכל 100 שניות ובקשות לכל 100 שניות לכל משתמש. כדאי להגדיר את המגבלה הזו כדי למנוע ממשתמש יחיד או מקבוצה קטנה של משתמשים למצות את המכסה היומית, ועדיין לאפשר גישה סבירה לכל המשתמשים. במאמר הגדרת מכסות לשימוש ב-API מוסבר איך מגדירים את המגבלות האלה. |
השהיה מעריכית לפני ניסיון חוזר (exponential backoff)
כשבקשות נכשלות, חשוב לוודא ששולחים שוב את הבקשות עם השהיה מעריכית לפני ניסיון חוזר (exponential backoff). לדוגמה, אם בקשה נכשלת פעם אחת, מנסים שוב אחרי שנייה. אם היא נכשלת שוב, מנסים שוב אחרי שתי שניות, ואז אחרי ארבע שניות, וכן הלאה. כך מוודאים שבקשות לא תקינות או כשלים נרחבים לא יאטו את השרתים של Google, כי לקוחות רבים מנסים לנסות שוב בקשות במהירות רבה.
שאלות נפוצות בנושא פתרון בעיות
בעיות יישום
- באיזו תדירות כדאי לדגום את מיקום הרכב?
- מומלץ לצלם תמונה כל 1-10 שניות כדי לקבל תוצאות איכותיות של התאמה לכביש.
- האם יש מגבלה על מספר הנקודות שאפשר לשלוח בכל שאילתה?
- כן, לשאילתה יכולות להיות עד 100 נקודות.
- באיזו רמת דיוק כדאי לאחסן את זוגות קו הרוחב/קו האורך שנחתכו?
- כדי לוודא שהנתיבים שמוצמדים עוקבים אחרי הכבישים בכל רמות הזום, גם ברמת הזום המקסימלית, צריך לאחסן את זוגות קווי הרוחב/האורך שמוצמדים ברמת דיוק של 7 ספרות אחרי הנקודה העשרונית.
- האם אפשר להשתמש בקווים פוליגונליים מקודדים כדי להציג נתיבים מוצמדים?
- קווים פוליגונליים מוצפנים מצוינים רק ברמת דיוק של 5 ספרות אחרי הנקודה העשרונית, וכתוצאה מכך יש שגיאה של כ-2 מטרים. לכן, קווים פוליגונים מוצפנים לא מתאימים אם רוצים שהנתיבים שתיצמדו אליהם יעברו לאורך הכביש ברמות זום גבוהות.
בעיות נפוצות
- חלק מהנקודות לא מוצמדות, או שיש פערים בנתיבים מוצמדים. איך אפשר לתקן את זה?
-
- אם אתם מדגמים את הנקודות במרווחי זמן מתוזמנים, חשוב לוודא שהנקודות נמדדות במרווחי זמן קצרים יותר (כל 1-10 שניות). אם משתמשים במרווח זמן ארוך יותר (לדוגמה, 60 שניות), יכול להיות שהאלגוריתם של הצמדת המיקום לכביש לא יוכל לקבוע את הכבישים שנסעו בהם ברמת דיוק מספקת.
- אם לוחצים ידנית על המפה כדי ליצור נקודות, קל מאוד ליצור נתיבים עם מעט נקודות או נקודות דלילות שהאלגוריתם של הצמדה לא מטפל בהן טוב. האלגוריתם של הצמדה פועל בצורה הטובה ביותר בנקודות שנמצאות קרוב זו לזו. אתם יכולים לנסות את הדגמה של התכונה 'התאמה לכבישים' או להשתמש בבודק הכבישים כדי לבדוק את הנתיבים.
- למה הנתיבים שמוצמדים לתמונה לא ישרים או קצת לא תואמים לכביש כשמתקרבים?
-
- האם אתם מקצרים את הדיוק של זוגות קו הרוחב/קו האורך שנצמדים לפני הצגתם? אחסון של זוגות קואורדינטות צפון/דרום/מזרח/מערב שמוצמדים למפה ברמת דיוק של פחות מ-7 נקודות עשרוניות גורם לשגיאות דיוק כשהנתיב הממוזער מוצג במפה.
- האם אתם משתמשים בקווים פוליגונים מקודדים? בקוים פוליגונים מקודדים, זוגות קו הרוחב/קו האורך מקוצרים ל-5 ספרות עשרוניות, מה שגורם לשגיאה של כמה מטרים. כתוצאה מכך, הקווים נראים משוננים או קצת מחוץ לכביש ברמות זום גבוהות.
אם אף אחת מהאפשרויות שלמעלה לא רלוונטית, יכול להיות ששיטחי המפה עודכנו לאחרונה, וכתוצאה מכך הם לא מסונכרנים עם אינדקס הכבישים שמשמש לצילום. אם רק כמה מהשאילתות שלכם מושפעות, סביר להניח שזו הסיבה. מפות Google מתעדכנות באופן קבוע, ולכן יכול להיות מצב כזה מדי פעם. הוא עשוי לקרות בתדירות גבוהה יותר אם אתם בודקים באופן קבוע נתיבים ישנים במפה (לדוגמה, נתיבים שצולמו לפני כמה שבועות). כדי שתהיה תצוגה חזותית אופטימלית, כדאי לבצע צימוד מחדש של נתיבים ישנים ממש לפני שמציגים אותם במפה, כדי למזער את חוסר העקביות בין המשבצות של המפה לבין מדד הכבישים שמשמש לצימוד.
- מה יכול לגרום להצגה שגויה של מגבלת המהירות בכביש X?
- מגבלות המהירות מגיעות מכמה מקורות שונים ברמת הדיוק והכיסוי.
אם זיהיתם דפוס, למשל הגבלות מהירות שגויות באופן קבוע בסוג כביש מסוים או באזור מסוים, תוכלו לפעול לפי השלבים הבאים כדי להודיע לנו:
- פותחים את מפות Google במחשב או את אפליקציית מפות Google ל-Android.
- פותחים את התפריט הימני.
- לוחצים על שליחת משוב. הערה: יכול להיות שתתבקשו להתחבר לחשבון.
- בוחרים באפשרות עריכת המפה.
- בוחרים את מקטע הכביש שרוצים לערוך.
- לוחצים על הבא.
- בשדה 'אחר', מציינים שהמגבלה המותרת היא שגויה בכביש הזה.
- בוחרים באפשרות שליחה.
- למה הנתיב המחובר שלי חוצה פינות במקום לפעול בהתאם לכביש?
-
כדי לפתור את הבעיה, צריך לבדוק את הדברים הבאים:
- מוודאים שהפרמטר
interpolate
מוגדר כ-true
. - בודקים שהנקודות המקוריות של הנתונים נלקחות מדי פעם במרווחים קרובים מספיק (כל 1-10 שניות).
- מוודאים שהפרמטר
- למה מופיעים הרבה קטעי כביש בנתיב המוצמד של כביש ללא שינויים במגבלות המהירות?
- כשהפרמטר
interpolate
מוגדר ל-true
, השאילתה 'הצמדה לכביש' מחזירה קו פוליגוני שעוקב אחרי הכביש בפניות, בעיקולים ובכיכרות. אם הכביש מתעקל, המערכת מחזירה כמה קטעי כביש גם אם הגבלת המהירות לא משתנה, כדי ליצור קו פוליגון שדומה מאוד לגיאומטריה של הכביש.