בקשת מידע על תנועה בקו מרובה

ה-Routes Preferred 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 דרך מסיכת השדות, השדות יאוכלסו תחת routes.travelAdvisory.speedReadingIntervals. התנועה בגובה הרגל זמינה מתחת ל-routes.legs.travelAdvisory.speedReadingIntervals. כל מרווח מתואר באמצעות startPolylinePointIndex, endPolylinePointIndex וקטגוריית המהירות המתאימה. שים לב שהיעדר אינדקס התחלה בתוך המרווח תואם לאינדקס 0 בהתאם לנוהלי Proto3.

{
  "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"
          }
        ] 
      }
    }
  ]
}

עיבוד קווים פוליגוניים המודעים לתנועה באמצעות ה-SDK של מפות Google

אנחנו ממליצים להציג במפה קווים פוליגוניים המודעים לתנועה באמצעות התכונות השונות שמוצעות על ידי ערכות ה-SDK של מפות Google, כולל צביעה בהתאמה אישית, קווים ותבניות לאורך הקווים הפוליגוניים. למידע נוסף על השימוש בקווים פוליגוניים, אפשר לקרוא את המאמרים תכונות של פוליגונים ל-Android ותכונות של פוליגונים ל-iOS.

דוגמה לעיבוד קווים פוליגוניים

למשתמשים ב-SDK של מפות Google יש הזדמנות להגדיר לוגיקת מיפוי מותאמת אישית בין קטגוריות המהירות לבין סכימות העיבוד הפוליגוניות. לדוגמה, אפשר להציג מהירות "NORMAL" כקו כחול עבה במפה, בעוד שהמהירות "SLOW" עשויה להופיע כקו כתום עבה וכן הלאה.

קטעי הקוד הבאים מוסיפים קו פוליגוני כחול ועבה עם קטעים גיאודזיים מלבורן עד פרת'. מידע נוסף זמין בהתאמה אישית של המראה (ל-Android) ובהתאמה אישית של קו ה-Polyline (ל-iOS).

Android

Java

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));

Kotlin

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

iOS

Objective-C

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;

Swift

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