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

ממשק 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