כדי לחשב את המרחק ואת משך הנסיעה במסלול עם כמה נקודות מוצא ויעדים, אפשר להשתמש ב-method ComputeRouteMatrix של Routes Preferred API. ComputeRouteMatrix תומך גם בסטרימינג של קריאות gRPC וגם בקריאות REST HTTP.
כשמזינים רשימה של זוגות של נקודות מוצא ויעד, ComputeRouteMatrix מחשב את המרחק ואת משך הזמן של מסלול שמתחיל בכל נקודת מוצא ומסתיים בכל נקודת יעד. כל רכיב בפיד תואם למידע על מסלול טיסה אחד.
ל-method ComputeRouteMatrix יש כמה יתרונות על פני Distance Matrix API (הגרסה הקודמת):
- הסטרימינג מאפשר להחזיר רכיבים לפני שכל המטריצה חושבה, וכך מקצר את זמן האחזור.
- ב-
ComputeRouteMatrixיש אפשרויות מפורטות לחישוב תנועה, שמאפשרות לכם לקבל החלטות לגבי האיזון בין האיכות לזמן האחזור. - הבקשות מופעלות בעדיפות גבוהה יותר בתשתית של Google, וכתוצאה מכך הזמינות גבוהה יותר.
- אפשר לציין את כיוון הנסיעה ואת הצד של הכביש בנקודות הדרך.
- אתם יכולים לבקש לקבל מידע על כבישי אגרה, יחד עם מרחק המסלול וזמן ההגעה המשוער.
הפעלת השיטה ComputeRouteMatrix
כדי להשתמש ב-ComputeRouteMatrix בקוד, צריך להפעיל את השיטה. מידע נוסף על הפעלת שיטות של Routes Preferred API זמין במאמר תחילת העבודה.
שימוש ב-ComputeRouteMatrix
ה-method ComputeRouteMatrix זמינה דרך נקודת הקצה (endpoint) של Routes Preferred בגרסה v1.
מידע מפורט יותר זמין במאמרי העזרה הבאים:
thought gRPC: https://developers.google.com/maps/documentation/routes_preferred/reference/rpc/google.maps.routes.v1
השלבים הכלליים הבאים מתארים איך להשתמש ב-gRPC כדי לקרוא ל-method ComputeRouteMatrix:
בודקים את מאגרי הנתונים של מאגרי ה-Protocol Buffers שצריך ממאגר googleapis:
https://github.com/googleapis/googleapis/tree/master/google/maps/routes
שימו לב שיש מערכות build, כמו Go, שעשויות לעשות את זה בשבילכם באופן אוטומטי.
משתמשים בשפה ובכלי ה-build המועדפים כדי ליצור את קוד ה-protobuffer הרלוונטי.
יוצרים את הבקשה. צריך לשלוח שני פריטי מטא-נתונים נדרשים עם הבקשה:
- צריך להגדיר את 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. חשוב לדעת: השבתת שדות שאתם לא צריכים יכולה להפחית את זמן האחזור, כי יכול להיות שהשדות האלה דורשים חישוב נוסף. זמן האחזור יישאר יציב אם תציינו את השדות שאתם צריכים, ובהמשך תוסיפו שדות חדשים שדורשים יותר חישובים.
שולחים את הבקשה אל
routespreferred.googleapis.com:443.חובה להשתמש בפרוטוקול TLS.
דוגמאות לשימוש ב-ComputeRouteMatrix מופיעות במאמר דוגמאות לחישוב מטריצת מסלולים (בטא).
אחד המאפיינים הייחודיים של השיטה ComputeRouteMatrix הוא שקודי שגיאה יכולים להיות מוחזרים לכל הסטרימינג או לרכיבים ספציפיים. לדוגמה, החיבור לסטרימינג מחזיר שגיאה אם הבקשה לא תקינה (למשל, אם אין לה מקורות). עם זאת, אם השגיאה חלה רק על כמה רכיבים בפיד (לדוגמה, הגדרת מזהה מקום לא חוקי לנקודת מוצא), רק הרכיבים שמושפעים מהשגיאה יכילו קודי שגיאה.
אין הבטחה שהרכיבים שמוחזרים על ידי הסטרימינג יוחזרו בסדר מסוים. לכן, כל רכיב מכיל origin_index ו-destination_index. בנקודות המוצא והיעד שצוינו בבקשה, נקודת המוצא של המסלול שווה ל-origins[origin_index] עבור רכיב נתון, ונקודת היעד של המסלול שווה ל-destinations[destination_index]. המערכים האלה מבוססים על אינדקס שמתחיל באפס. חשוב לשמור את סדר הרשימות של המקור והיעד.
חישוב אגרות
למידע על חישוב עמלות, קראו את המאמר חישוב עמלות.
דוגמאות לחישוב של עמלות אגרה מופיעות במאמר דוגמאות לחישוב של מטריצת מסלולים.