קבלת מטריצת מסלול

מפתחים באזור הכלכלי האירופי (EEA)

אתם יכולים להשתמש ב-Routes API כדי לחשב את המרחק ומשך הנסיעה של מסלול עם כמה נקודות מוצא ויעדים, על ידי קריאה ל-method‏ computeRouteMatrix (REST) או ל-method‏ ComputeRouteMatrix (gRPC) בסטרימינג.

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

קבלת מטריצת ניתוב טרנזיטיבי

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

מגבלות על בקשות

השיטות של Compute Route Matrix אוכפות את המגבלות הבאות על בקשות לנקודות דרך באמצעות כתובת או מזהי מקומות, ועל רכיבים. הרכיבים הם המסלולים בין כל נקודת מוצא ויעד במטריצת מסלולים, כך שמספר הרכיבים הוא מספר נקודות המוצא כפול מספר היעדים. לדוגמה, אם יש לכם 10 נקודות מוצא ו-10 יעדים, יש לכם 100 רכיבים:

  • מספר הרכיבים לא יכול להיות גדול מ-625 במסלולים שהם לא מסלולי TRANSIT.

  • אם מציינים מסלול TRANSIT, מספר הרכיבים לא יכול להיות גדול מ-100.

  • אם מציינים את TRAFFIC_AWARE_OPTIMAL, מספר הרכיבים לא יכול להיות גדול מ-100. מידע נוסף על TRAFFIC_AWARE_OPTIMAL זמין במאמר איך מציינים אם לכלול נתוני תנועה ואיך לעשות את זה.

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

שגיאות בתגובה

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

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

תוצאות של סטרימינג ב-gRPC

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

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

דוגמאות ל-Compute a Route Matrix

כדי לחשב מטריצת מסלולים, משתמשים ב-method‏ computeRouteMatrix בבקשת HTTP.

דוגמה ל-HTTP

בדוגמה הבאה מוצגת בקשת HTTP של computeRouteMatrix. בדוגמה הזו:

  • מציינים מערך של שתי נקודות ציון של מוצא ושתי נקודות ציון של יעד. ה-method מחשבת מסלול מכל נקודת מוצא לכל יעד, כך שהתשובה מכילה ארבעה מסלולים.

    במערך, האינדקס של הרכיב הראשון הוא 0, האינדקס של הרכיב השני הוא 1 וכן הלאה.

  • צריך לכלול מסכת שדות של תשובה כדי לציין אילו שדות של התשובה (REST) או של ComputeRoutesResponse (gRPC) יוחזרו. בדוגמה הזו, מגדירים את הבקשה כך שתחזיר את השדות originIndex,‏ destinationIndex,‏ duration,‏ distanceMeters,‏ status ו-condition לכל מסלול. מידע נוסף זמין במאמר בחירת השדות שיוחזרו.

curl -X POST -d '{
  "origins": [
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.420761,
            "longitude": -122.081356
          }
        }
      },
      "routeModifiers": { "avoid_ferries": true}
    },
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.403184,
            "longitude": -122.097371
          }
        }
      },
      "routeModifiers": { "avoid_ferries": true}
    }
  ],
  "destinations": [
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.420999,
            "longitude": -122.086894
          }
        }
      }
    },
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.383047,
            "longitude": -122.044651
          }
        }
      }
    }
  ],
  "travelMode": "DRIVE",
  "routingPreference": "TRAFFIC_AWARE"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status,condition' \
'https://routes.googleapis.com/distanceMatrix/v2:computeRouteMatrix'

התשובה מכילה את ארבעת המסלולים האפשריים לשילוב של כל נקודות הציון של המוצא והיעד.

מזהים כל מסלול בתגובה באמצעות השדות originIndex ו-destinationIndex. לדוגמה, הערך 1 של originIndex בתגובה תואם למסלול שמחושב מנקודת הדרך באינדקס 1 של המערך origins בבקשה.

[
    {
        "originIndex": 0,
        "destinationIndex": 0,
        "status": {},
        "distanceMeters": 822,
        "duration": "160s",
        "condition": "ROUTE_EXISTS"
    },
    {
        "originIndex": 1,
        "destinationIndex": 0,
        "status": {},
        "distanceMeters": 2919,
        "duration": "361s",
        "condition": "ROUTE_EXISTS"
    },
    {
        "originIndex": 1,
        "destinationIndex": 1,
        "status": {},
        "distanceMeters": 5598,
        "duration": "402s",
        "condition": "ROUTE_EXISTS"
    },
    {
        "originIndex": 0,
        "destinationIndex": 1,
        "status": {},
        "distanceMeters": 7259,
        "duration": "712s",
        "condition": "ROUTE_EXISTS"
    }
]

דוגמאות ל-gRPC

במאמר דוגמה לבקשת gRPC מופיעות דוגמאות לבקשות gRPC. הדוגמה ב-Java בדף הזה קוראת גם ל-Compute Routes וגם ל-Compute Route Matrix.