الحصول على مسار النقل العام

يوفر مسار النقل إرشادات التنقل باستخدام خيارات النقل العام المتاحة في المنطقة. قد تشمل خيارات النقل العام الحافلات ومترو الأنفاق والقطارات وغيرها. يتضمن مسار النقل العام أيضًا إرشادات حول السير إلى ومن وإلى محطات النقل العام. نظرًا لأن مسار النقل العام يتطلب منك عادةً السفر باستخدام أكثر من وسيلة نقل واحدة، تختلف كيفية طلب المسار وبعض أجزاء الاستجابة.

مدى اختلاف مسارات النقل العام عن المسارات الأخرى

تختلف مسارات النقل العام التي تطلبها من خلال ضبط travelMode (وضع النقل) 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 إلا إذا كان بإمكان واجهة برمجة التطبيقات تحديد المعلومات المتعلّقة بأسعار النقل العام لكل الخطوات.

النص المترجَم للمدة والمسافة routes.localizedValues

لمزيد من المعلومات حول ضبط أقنعة الحقول، يمكنك الاطّلاع على مقالة اختيار الحقول المطلوب عرضها.

ضبط مَعلمات لمسار نقل عام

في ما يلي المعلمات ذات الصلة بمسارات النقل العام:

لإجراء ذلك، يُرجى اتّباع الخطوات التالية: استخدام هذه المعلمة Notes
اختيار وضع النقل العام travelMode: "TRANSIT" مطلوبة. تتوفّر مزيد من المعلومات هنا.
تحديد وقت الوصول أو المغادرة "arrivalTime": "yyyy-mm-ddThh:mm:ssZ"

أو

"departureTime": "yyyy-mm-ddThh:mm:ssZ"
اختياريّ. يمكنك تحديد visibility_time أو expiration_time. في حال لم يتم تحديد أي وقت، سيتم ضبط departure_time تلقائيًا على وقت التنفيذ الحالي (now). ولا يمكنك تحديد وقتَي الوصول والمغادرة إلا خلال الفترة الزمنية التالية، مع استخدام وقت التنفيذ الحالي (now) كمرجع:
  • بما يصل إلى 7 أيام قبل now
  • بما يصل إلى 100 يوم بعد now
يتم التعبير عن الوقت كطابع زمني بتنسيق RFC3339 UTC "Zulu". مزيد من المعلومات
تضمين مسارات بديلة "computeAlternativeRoutes": true اختياريّ. يمكنك الضبط على "صحيح" لكي تحتسب Routes 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
          }
        },
        {},
        {},
        {},
        {},
        {},
        {}
        ]
      }
    ]
  }
]
}