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

ממשק 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"
          }
        ] 
      }
    }
  ]
}

איך מעבדים קווים פוליגוניים עם נתונים על תנועת כלי רכב באמצעות Maps SDK

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

דוגמה לעיבוד של קו מרובה

למשתמשים ב-Maps SDK יש אפשרות להגדיר לוגיקת מיפוי מותאמת אישית בין קטגוריות המהירות לבין סכימות העיבוד של הקו המקומט. לדוגמה, אפשר להחליט להציג מהירות 'רגילה' כקו כחול עבה במפה, מהירות 'איטית' כקו כתום עבה וכן הלאה.

קטעי הקוד הבאים מוסיפים קו פוליגוני כחול עבה עם קטעים גיאודזיים ממלבורן לפרת'. מידע נוסף זמין במאמרים התאמה אישית של מראה (ל-Android) והתאמה אישית של קו פוליגוני (ל-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