درخواست اطلاعات ترافیک در Polyline

API مسیرهای ترجیحی امکان درخواست اطلاعات در مورد شرایط ترافیک در امتداد چندخطی را ارائه می‌دهد. شرایط ترافیک بر اساس دسته‌های سرعت (NORMAL، SLOW، TRAFFIC_JAM) که در یک بازه مشخص از چندخطی پاسخ قابل اجرا هستند، بیان می‌شوند. این بازه‌ها توسط شاخص‌های نقاط چندخطی شروع (شامل) و پایان (منحصراً) تعریف می‌شوند.

درخواست نمونه

چندخطی آگاه از ترافیک، هم برای سطح مسیر و هم برای سطح شاخه در دسترس است. در سطح مسیر، اطلاعات سرعت ترافیک به صورت SpeedReadingIntervals در فیلد پاسخ RouteTravelAdvisory ارائه می‌شود. برای دریافت اطلاعات ترافیک در کنار چندخطی مسیر، هر دو polyline و speedReadingIntervals در ماسک فیلد پاسخ قرار دهید.

اگر ماسک فیلد شامل routes.legs.travelAdvisory.speedReadingIntervals باشد، آنگاه پاسخ شامل داده‌های ترافیک سطح پایه تحت RouteLegTravelAdvisory خواهد بود.

X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline,routes.travelAdvisory.speedReadingIntervals,routes.legs.polyline.encodedPolyline,routes.legs.travelAdvisory.speedReadingIntervals

برای جزئیات بیشتر در مورد تعیین ماسک فیلد پاسخ، به «انتخاب فیلدها برای بازگشت» مراجعه کنید.

پاسخ نمونه

مادامی که speedReadingIntervals از طریق field mask درخواست شوند، در زیر routes.travelAdvisory.speedReadingIntervals قرار می‌گیرند. ترافیک سطح پایه در زیر routes.legs.travelAdvisory.speedReadingIntervals در دسترس است. هر بازه با startPolylinePointIndex ، endPolylinePointIndex و دسته سرعت مربوطه توصیف می‌شود. توجه داشته باشید که عدم وجود اندیس شروع در بازه مطابق با رویه‌های proto3 با اندیس 0 مطابقت دارد.

{
  "routes": [
    {
      "legs": {
        "polyline": {
          "encodedPolyline": "}boeF~zbjVAg@EmB`GWHlD"
        },
        "travelAdvisory": {
          "speedReadingIntervals": [
            {
              "endPolylinePointIndex": 1,
              "speed": "NORMAL"
            },
            {
              "startPolylinePointIndex": 1,
              "endPolylinePointIndex": 2,
              "speed": "SLOW"
            },
            {
              "startPolylinePointIndex": 2,
              "endPolylinePointIndex": 4,
              "speed": "NORMAL"
            }
          ] 
        }
      },
      "polyline": {
        "encodedPolyline": "}boeF~zbjVAg@EmB`GWHlD"
      },
      "travelAdvisory": {
        "speedReadingIntervals": [
          {
            "endPolylinePointIndex": 1,
            "speed": "NORMAL"
          },
          {
            "startPolylinePointIndex": 1,
            "endPolylinePointIndex": 2,
            "speed": "SLOW"
          },
          {
            "startPolylinePointIndex": 2,
            "endPolylinePointIndex": 4,
            "speed": "NORMAL"
          }
        ] 
      }
    }
  ]
}

رندر کردن Polylineهای آگاه از ترافیک با Maps SDK

ما توصیه می‌کنیم با استفاده از ویژگی‌های مختلف ارائه شده توسط SDK های نقشه‌های گوگل، از جمله رنگ‌آمیزی سفارشی، خطوط و الگوهای موجود در امتداد خطوط چندخطی، خطوط چندخطی آگاه از ترافیک را روی نقشه نمایش دهید. برای جزئیات بیشتر در مورد استفاده از خطوط چندخطی، به ویژگی‌های چندخطی برای اندروید و ویژگی‌های چندخطی برای iOS مراجعه کنید.

مثال رندرینگ چندخطی

کاربران Maps SDK این امکان را دارند که یک منطق نگاشت سفارشی بین دسته‌های سرعت و طرح‌های رندر چندخطی تعریف کنند. به عنوان مثال، ممکن است تصمیم بگیرند سرعت "عادی" را به صورت یک خط آبی ضخیم روی نقشه نمایش دهند در حالی که سرعت "آهسته" ممکن است به صورت یک خط نارنجی ضخیم نمایش داده شود و غیره.

قطعه کدهای زیر یک چندخطی آبی ضخیم با بخش‌های ژئودزیک از ملبورن تا پرت اضافه می‌کنند. برای اطلاعات بیشتر، به سفارشی‌سازی ظاهر (برای اندروید) و سفارشی‌سازی چندخطی (برای iOS) مراجعه کنید.

اندروید

جاوا

Polyline line = map.addPolyline(new PolylineOptions()
    .add(new LatLng(-37.81319, 144.96298), new LatLng(-31.95285, 115.85734))
    .width(25)
    .color(Color.BLUE)
    .geodesic(true));

کاتلین

val line: Polyline = map.addPolyline(
  PolylineOptions()
    .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734))
    .width(25f)
    .color(Color.BLUE)
    .geodesic(true)
)

آی‌او‌اس

هدف-سی

GMSMutablePath *path = [GMSMutablePath path];
[path addLatitude:-37.81319 longitude:144.96298];
[path addLatitude:-31.95285 longitude:115.85734];
GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
polyline.strokeWidth = 10.f;
polyline.strokeColor = .blue;
polyline.geodesic = YES;
polyline.map = mapView;

سویفت

let path = GMSMutablePath()
path.addLatitude(-37.81319, longitude: 144.96298)
path.addLatitude(-31.95285, longitude: 115.85734)
let polyline = GMSPolyline(path: path)
polyline.strokeWidth = 10.0
polyline.geodesic = true
polyline.map = mapView