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

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

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

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

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