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