חישוב מטריצת מסלולים

אפשר לחשב את המרחק והמשך של מסלול למספר נקודות מוצא ויעד באמצעות השיטה ComputeRouteMatrix של Routes Preferred API. ‫ComputeRouteMatrix תומך גם בשיחות gRPC של סטרימינג וגם בשיחות HTTP של REST.

בהינתן רשימה של זוגות של נקודות מוצא ויעד, הפונקציה ComputeRouteMatrix מחשבת את המרחק ואת משך הזמן של מסלול שמתחיל בכל נקודת מוצא ומסתיים בכל יעד. כל רכיב בפיד מתאים למידע על מסלול טיסה יחיד.

לשיטה ComputeRouteMatrix יש כמה יתרונות על פני Distance Matrix Service:

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

הפעלת השיטה ComputeRouteMatrix

כדי להשתמש בשיטה ComputeRouteMatrix בקוד, צריך להפעיל אותה. מידע נוסף על הפעלת שיטות של Routes Preferred API זמין במאמר תחילת העבודה.

שימוש בשיטה ComputeRouteMatrix

השיטה ComputeRouteMatrix זמינה דרך נקודת הקצה (endpoint) של Routes Preferred‏ v1.

מידע מפורט יותר זמין במסמכים הבאים:

gRPC: https://developers.google.com/maps/documentation/routes_preferred/reference/rpc/google.maps.routes.v1

REST: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/v1/TopLevel/computeRouteMatrix

בשלבים הכלליים הבאים מוסבר איך להשתמש ב-gRPC כדי לקרוא לשיטה ComputeRouteMatrix:

  1. בודקים את ה-Protobufs הנדרשים ממאגר googleapis:

    https://github.com/googleapis/googleapis/tree/master/google/maps/routes

    שימו לב: מערכות בנייה מסוימות, כמו Go, עשויות לבצע את הפעולה הזו באופן אוטומטי.

  2. בעזרת השפה המועדפת וערכת כלי הבנייה, יוצרים את קוד ה-Protobuffer הרלוונטי.

  3. יוצרים את הבקשה. צריך לשלוח עם הבקשה שני פריטי מטא-נתונים:

    • הערך של X-Goog-Api-Key צריך להיות מוגדר למפתח ה-API שלכם.
    • השדה X-Goog-Fieldmask צריך להיות מוגדר כרשימה מופרדת בפסיקים של השדות שנדרשים מהתגובה. לדוגמה, X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status. אפשר להשתמש בתו הכללי לחיפוש (*) כדי לציין את כל השדות, אבל לא מומלץ לעשות את זה. אפשר להשתמש בתו הכללי כדי לבדוק ולהבין את תגובת ה-API, אבל צריך לציין באופן מפורש את השדות שרוצים במסכת השדות בקוד הייצור.

      מידע נוסף על אופן יצירת המחרוזת של מסכת השדות זמין בכתובת https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto. שימו לב: השבתה של שדות שאתם לא צריכים יכולה להפחית את זמן האחזור, כי יכול להיות שהשדות האלה דורשים חישוב נוסף. זמן האחזור יישאר יציב אם תציינו את השדות שאתם צריכים ותוסיפו בהמשך שדות חדשים שדורשים יותר חישובים.

  4. שולחים את הבקשה אל routespreferred.googleapis.com:443.חובה להשתמש בפרוטוקול TLS.

דוגמאות לשימוש בשיטה ComputeRouteMatrix מופיעות במאמר דוגמאות לחישוב מטריצת מסלולים (בטא).

תכונה ייחודית של שיטת ComputeRouteMatrix היא שאפשר להחזיר קודי שגיאה לכל הסטרימינג או לרכיבים בודדים. לדוגמה, החיבור לסטרימינג מחזיר שגיאה אם הבקשה לא תקינה (למשל, אם אין לה מקורות). עם זאת, אם שגיאה חלה רק על כמה רכיבים בזרם (לדוגמה, הגדרת מזהה מקום לא תקין למקור), רק הרכיבים שמושפעים מהשגיאה יכילו קודי שגיאה.

אין ערובה לכך שהרכיבים שמוחזרים על ידי הזרם יוחזרו בסדר כלשהו. לכן, כל רכיב מכיל origin_index ו-destination_index. לגבי המקורות והיעדים שצוינו בבקשה, המקור של המסלול שווה ל-origins[origin_index] עבור רכיב נתון, והיעד של המסלול שווה ל-destinations[destination_index]. המערכים האלה הם מערכים עם אינדקס אפס. חשוב לשמור את סדר הרשימות של המוצא והיעד.

חישוב עמלות על נסיעה בכביש אגרה

מידע על חישוב עמלות על שיחות לטלפון זמין במאמר חישוב עמלות על שיחות לטלפון.

דוגמאות לחישוב עמלות על כבישי אגרה מופיעות במאמר דוגמאות לחישוב מטריצת מסלולים.