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

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

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

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