פתרון בעיות

שגיאות

במקרה של שגיאה, המערכת תחזיר גוף תגובה בפורמט סטנדרטי של שגיאה וקוד הסטטוס של ה-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' מכיל ערך לא חוקי: ☃" הבקשה הכילה ארגומנטים לא חוקיים. הסיבות האפשריות ביותר לשגיאה הזו הן:
  • בעיה בפרמטר path.
    חשוב לוודא שיש לך לפחות 1 נקודות, ולא יותר מ-100 נקודות. כל נקודה צריכה להיות מוצגת כצמד מספרים מופרדים בפסיק, למשל: 48.409114,-123.369158. צריך להפריד בין הנקודות באמצעות קו אנכי: '|'.
  • הבקשה שלך כללה placeId לא חוקי.
  • הבקשה שלך כללה גם placeId וגם path. אפשר לציין רק אחד מהפרמטרים האלה לכל בקשה.

השגיאה הזו לא תוחזר אם מעבירים את הערך placeId לכביש שכבר לא קיים, או למקום שהוא לא כביש.

403 PERMISSION_DENIED בקשה לא רשומה נחסמה. צריך להירשם דרך Google Developers Console. הבקשה נדחתה בגלל אחת או יותר מהסיבות הבאות:
  • מפתח ה-API חסר או לא תקין.
  • החיוב לא הופעל בחשבון שלך.
  • חרגתם ממכסת השימוש שהגדרתם לעצמכם.
  • אמצעי התשלום שצוין כבר לא תקף (לדוגמה, פג התוקף של כרטיס אשראי).

כדי להשתמש במוצרים של הפלטפורמה של מפות 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?
מגבלות המהירות מגיעות מכמה מקורות שונים ברמת הדיוק והסיקור. אם זיהיתם דפוס, למשל הגבלות מהירות שגויות באופן קבוע בסוג כביש מסוים או באזור מסוים, תוכלו לפעול לפי השלבים הבאים כדי להודיע לנו:
  1. פותחים את מפות Google במחשב או את אפליקציית מפות Google ל-Android.
  2. פותחים את התפריט הימני.
  3. לוחצים על שליחת משוב. הערה: יכול להיות שתתבקשו להתחבר לחשבון.
  4. בוחרים באפשרות עריכת המפה.
  5. בוחרים את מקטע הכביש שרוצים לערוך.
  6. לוחצים על הבא.
  7. בשדה 'אחר', מציינים שהמגבלה המותרת היא שגויה בכביש הזה.
  8. בוחרים באפשרות שליחה.
כאן אפשר גם לדווח על בעיות אחרות (לדוגמה, אם שם הכביש שגוי, אם הוא מצויר בצורה שגויה, אם הוא סגור או פרטי).
למה הנתיב המחובר שלי חוצה פינות במקום לפעול בהתאם לכביש?
כדי לפתור את הבעיה, צריך לבדוק את הדברים הבאים:
  • מוודאים שהפרמטר interpolate מוגדר כ-true.
  • מוודאים שהנקודות המקוריות של הנתונים נלקחות מדי פעם במרווחים קרובים מספיק (כל 1-10 שניות).
למה מופיעים הרבה קטעי כביש בנתיב המוצמד של כביש ללא שינויים במגבלת המהירות?
כשהפרמטר interpolate מוגדר ל-true, השאילתה 'הצמדה לכביש' מחזירה קו פוליגוני שעוקב אחרי הכביש בפניות, בעיקולים ובכיכרות. אם הכביש מתעקל, המערכת מחזירה כמה קטעי כביש גם אם הגבלת המהירות לא משתנה, כדי ליצור קו פוליגון שדומה מאוד לגיאומטריה של הכביש.