קבלת מסלול בתחבורה ציבורית

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

ההבדל בין מסלולים של תחבורה ציבורית למסלולים אחרים

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

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

הבדלים בבקשות הבדלים בתשובה
לא ניתן לציין ציוני דרך. כולל פרטים לגבי תחבורה ציבורית.
אין אפשרות לקבל מסלולים ידידותיים לסביבה כולל מטא-נתונים לכל מצב נסיעה, שמכילים את סיכום השלבים של מצב הנסיעה הזה ב-'stepsOverview' (כדי לבקש את המטא-נתונים האלה, צריך להשתמש במסכת השדות 'routes.legs.stepsOverview').
לא ניתן לציין איך ואם לכלול נתוני תנועה
לא ניתן לציין תכונות מסלול שיש להימנע מהן
ניתן לציין רק transitPreferences עבור routingPreference. פרטים נוספים זמינים במאמר [TransitPreferences](reference/rest/v2/TransitPreferences).

מידע נוסף על התשובה שחוזרת מה-Routes API אפשר למצוא במאמר בדיקת התגובות למסלול לתחבורה ציבורית.

כדי לקבל מסלול לתחבורה ציבורית

  1. מגדירים את נקודת המוצא והיעד.

  2. הגדרת מצב הנסיעה לתחבורה ציבורית:

    travelMode: "TRANSIT"

  3. מוסיפים מסכת שדות כדי לקבל את שדות התגובה הרצויים. ראו בקשת השדות של מסלולי התחבורה הציבורית הנדרשים.

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

בקשה לשדות במסלול לתחבורה ציבורית

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

כדי לבקש את המידע הזה שימוש במסכת השדות הזו
כל פרטי המסלול routes.*
כל הפרטים לגבי תחבורה ציבורית routes.legs.steps.transitDetails
מיקום ההתחלה של כל רגל routes.legs.steps.startLocation
מיקום סיום לכל רגל routes.legs.steps.endLocation
ניתוב של קו פוליגוני בכל שלב routes.legs.steps.polyline
סוג התחבורה הציבורית בכל שלב routes.legs.steps.travelMode
תעריף משוער לכל שלב והמסלול, ותעריף משוער מקומי routes.travel_advisory.transitFare localized routes.localizedValues.transitFare

הערה: המאפיין transitFare מסופק רק אם ה-API יכול למצוא מידע על מחיר הכרטיס לתחבורה הציבורית בכל השלבים.

טקסט מותאם אישית למשך הזמן ולמרחק routes.localizedValues

למידע נוסף על הגדרת מסכות של שדות, ראו בחירת שדות להחזרה.

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

אלו הפרמטרים הרלוונטיים למסלולי תחבורה ציבורית:

לשם כך שימוש בפרמטר הזה הערות
בחירת מצב תחבורה ציבורית travelMode: "TRANSIT" חובה. מידע נוסף
הגדרת שעת הגעה או יציאה "arrivalTime": "yyyy-mm-ddThh:mm:ssZ"

או

"departureTime": "yyyy-mm-ddThh:mm:ssZ"
זה שינוי אופציונלי. ניתן לציין arrival_time או takeure_time. אם לא מציינים אף שעה, departure_time יוגדר כברירת מחדל לפי זמן הביצוע הנוכחי (now). אפשר להגדיר את זמני ההגעה והיציאה רק בחלון הזמן הבא, כשזמן הביצוע הנוכחי (now) הוא:
  • עד 7 ימים לפני now, כולל
  • עד 100 ימים אחרי התאריך now, כולל
השעה מבוטאת כחותמת זמן בפורמט 'Zulu', בפורמט RFC3339 UTC. מידע נוסף
הכללת מסלולים חלופיים "computeAlternativeRoutes": true זה שינוי אופציונלי. צריך להגדיר את הערך True כדי שה-Routs API יחשב עד 3 מסלולים נוספים, כשיש כאלה. מידע נוסף
ציון העדפות לסוג התחבורה הציבורית "transitPreferences": { allowedTravelModes: ["BUS","SUBWAY","TRAIN","LIGHT_RAIL","RAIL"]}

הערה: אם מציינים אמצעי נסיעה מועדף, מסלולים שהוחזרו עשויים עדיין להשתמש באמצעי תחבורה ציבורית אחרים, אפילו להשתמש רק באמצעי תחבורה ציבורית אחרים, בהתאם ליעילות המסלול ולזמינות של הנסיעה המועדפת.

זה שינוי אופציונלי. לציין אמצעי הגעה מועדפים לתחבורה ציבורית. מידע נוסף
ציון העדפות למסלול לתחבורה ציבורית "transitPreferences": {routingPreference: "LESS_WALKING|FEWER_TRANSFERS"} זה שינוי אופציונלי. לציין העדפות למסלול תחבורה ציבורית. מידע נוסף

דוגמה: קבלת מסלול בתחבורה ציבורית

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

  • מציינת העדפות לנסיעה ברכבת ופחות הליכה.

  • היא מבקשת נתיבים חלופיים.

  • הצגת מסכת שדות שמחזירה את פרטי התחבורה הציבורית:

curl -X POST -H 'content-type: application/json' -d '{
  "origin": {
    "address": "Humberto Delgado Airport, Portugal"
  },
  "destination": {
    "address": "Basílica of Estrela, Praça da Estrela, 1200-667 Lisboa, Portugal"
  },
  "travelMode": "TRANSIT",
  "computeAlternativeRoutes": true,
  "transitPreferences": {
     routingPreference: "LESS_WALKING",
     allowedTravelModes: ["TRAIN"]
  },
}' \
-H 'Content-Type: application/json' \
-H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.legs.steps.transitDetails' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

התשובה מציגה שדות route.legs.steps.transitDetails לשני המסלולים:

{
  "routes": [
    {
    "legs": [
        {
        "steps": [
          {},
          {},
          {},
          {
          "transitDetails": {
            "stopDetails": {
            "arrivalStop": {
              "name": "Saldanha",
              "location": {
                "latLng": {
                  "latitude": 38.73532,
                  "longitude": -9.14543
                }
              }
            },
            "arrivalTime": "2023-08-26T10:49:42Z",
            "departureStop": {
              "name": "Aeroporto",
              "location": {
                "latLng": {
                  "latitude": 38.769047799999996,
                  "longitude": -9.1284593
                }
              }
            },
            "departureTime": "2023-08-26T10:32:10Z"
              },
              "localizedValues": {
              "arrivalTime": {
                  "time": {
                    "text": "11:49"
                  },
                  "timeZone": "Europe/Lisbon"
              },
              "departureTime": {
                "time": {
                  "text": "11:32"
                },
                "timeZone": "Europe/Lisbon"
              }
            },
              "headsign": "São Sebastião",
              "transitLine": {
                "agencies": [
                  {
                    "name": "Metropolitano de Lisboa, E.P.E.",
                    "phoneNumber": "+351 21 350 0115",
                    "uri": "https://www.metrolisboa.pt/"
                  }
                ],
                "name": "Vermelha",
                "color": "#f23061",
                "nameShort": "Vm",
                "textColor": "#000000",
                "vehicle": {
                  "name": {
                    "text": "Metrô"
                  },
                "type": "SUBWAY",
                "iconUri": "//maps.gstatic.com/mapfiles/transit/iw2/6/subway2.png"
                }
              },
              "stopCount": 11
            }
          },
        {},
        {
          "transitDetails": {
            "stopDetails": {
              "arrivalStop": {
                "name": "Rato",
                "location": {
                  "latLng": {
                    "latitude": 38.7201022,
                    "longitude": -9.1540562
                  }
              }
            },
            "arrivalTime": "2023-08-26T11:01:37Z",
            "departureStop": {
              "name": "Saldanha",
                "location": {
                  "latLng": {
                    "latitude": 38.73527,
                    "longitude": -9.1455200000000012
                  }
                }
              },
              "departureTime": "2023-08-26T10:57:57Z"
            },
            "localizedValues": {
              "arrivalTime": {
                "time": {
                  "text": "12:01"
                },
                "timeZone": "Europe/Lisbon"
              },
              "departureTime": {
                "time": {
                  "text": "11:57"
                },
                "timeZone": "Europe/Lisbon"
              }
            },
            "headsign": "Rato",
            "transitLine": {
              "agencies": [
                {
                "name": "Metropolitano de Lisboa, E.P.E.",
                "phoneNumber": "+351 21 350 0115",
                "uri": "https://www.metrolisboa.pt/"
                }
              ],
              "name": "Amarela",
              "color": "#f2c200",
              "nameShort": "Am",
              "textColor": "#000000",
              "vehicle": {
                "name": {
                  "text": "Metrô"
                },
                "type": "SUBWAY",
                "iconUri": "//maps.gstatic.com/mapfiles/transit/iw2/6/subway2.png"
              }
            },
            "stopCount": 4
          }
        },
        {},
        {},
        {},
        {},
        {},
        {}
        ]
      }
    ]
  }
]
}