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

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

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

מה ההבדל בין ניתוב טרנזיטיבי למסלולים אחרים

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

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

ההבדלים בין הבקשות הבדלים בתשובות
אי אפשר לציין נקודות ציון ביניים. כולל פרטי תחבורה ציבורית.
אי אפשר לקבל מסלולים ידידותיים לסביבה כולל מטא-נתונים לכל אמצעי תחבורה, שמכילים את סיכום השלבים של אמצעי התחבורה הזה, ב-`stepsOverview` (כדי לבקש את המטא-נתונים האלה, משתמשים במסכת השדות `routes.legs.stepsOverview`).
אי אפשר לציין איך ואם לכלול נתוני תנועה
אי אפשר לציין מאפייני מסלול שרוצים להימנע מהם
אפשר לציין רק transitPreferences עבור routingPreference. מידע נוסף מופיע במאמר 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 או את departure_time. אם לא צוינה אף אחת מהשעות, הערך של departure_time יהיה כברירת מחדל זמן הביצוע הנוכחי (now). אפשר להגדיר את זמני ההגעה והיציאה רק בחלון הזמן הבא, כשזמן הביצוע הנוכחי (now) הוא נקודת הייחוס:
  • עד 7 ימים לפני now (כולל)
  • עד 100 ימים אחרי now
השעה מופיעה כחותמת זמן בפורמט RFC3339 UTC "Zulu". מידע נוסף

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

הכללת מסלולים חלופיים "computeAlternativeRoutes": true אופציונלי. צריך להגדיר את הערך כ-true כדי שהשיטה Compute Routes תחשב עד 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
          }
        },
        {},
        {},
        {},
        {},
        {},
        {}
        ]
      }
    ]
  }
]
}