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