Đặt điểm tham chiếu trung gian

Điểm tham chiếu trung gian là các vị trí ở giữa điểm khởi hành và điểm đến mà bạn muốn tuyến đường đi qua. Điểm tham chiếu trung gian có thể là một điểm dừng hoặc bạn có thể chỉ định điểm này làm vị trí để đi qua. Để xem ví dụ về điểm tham chiếu cho một điểm dừng, hãy xem phần Đặt điểm dừng dọc theo một tuyến đường. Để xem ví dụ về điểm tham chiếu đến điểm truyền qua, hãy Đặt điểm cho tuyến đường truyền qua.

Sử dụng thuộc tính mảng intermediates của phương thức computeRoutes (REST) hoặc phương thức ComputeRoutes (gRPC) để xác định tối đa 25 điểm tham chiếu trung gian.

Đối với mỗi điểm tham chiếu trung gian trong yêu cầu, Đối tượng định tuyến (REST) hoặc Đối tượng định tuyến (gRPC) trong phản hồi sẽ thêm một mục nhập vào mảng legs để cung cấp thông tin chi tiết cho phần đó của hành trình.

Mỗi chặng của một tuyến được biểu thị bằng một đối tượng RouteLeg (REST) hoặc RouteLeg (gRPC). Kiểm soát trường RouteLeg cần trả về bằng cách sử dụng mặt nạ trường phản hồi.

Ví dụ – Thiết lập điểm tham chiếu trung gian

Ví dụ sau đây sử dụng thuộc tính mảng intermediates để thêm một điểm tham chiếu trung gian duy nhất vào nội dung yêu cầu POST của một tuyến.

Ví dụ này sử dụng mặt nạ cho trường (field mask) trong tiêu đề X-Goog-FieldMask. Mặt nạ này chỉ định trả về các trường sau trong phản hồi:

  • routes.duration
  • routes.distanceMeters
  • routes.legs tương ứng với toàn bộ đối tượng RouteLeg.
curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.419734,
        "longitude": -122.0827784
      }
    },
    "sideOfRoad": true
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.417670,
        "longitude": -122.079595
      }
    }
  },
  "intermediates": [
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      }
    }
  ],
  "travelMode": "DRIVE",
  "routingPreference": "TRAFFIC_AWARE",
  "departureTime": "2022-10-15T15:01:23.045123456Z",
  "computeAlternativeRoutes": false,
  "routeModifiers": {
    "avoidTolls": false,
    "avoidHighways": false,
    "avoidFerries": false
  },
  "languageCode": "en-US",
  "units": "IMPERIAL"
}'
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY'
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs'
'https://routes.googleapis.com/directions/v2:computeRoutes'

Phản hồi của lệnh gọi này chứa mảng legs. Mỗi bước của chân được biểu thị bằng một đối tượng RouteLegStep (REST) hoặc RouteLegStep (gRPC).

{
  "routes": [
    {
      "legs": [
        # First leg
        {
            "distanceMeters": 207,
            "duration": "89s",
            "staticDuration": "89s",
            "polyline": {
                "encodedPolyline": "ipkcFjgchVd@@@cF]@@oCK?"
            },
            "startLocation": {
                "latLng": {
                    "latitude": 37.4197318,
                    "longitude": -122.0826233
                }
            },
            "endLocation": {
                "latLng": {
                    "latitude": 37.419734,
                    "longitude": -122.08077919999998
                }
            },
            "steps": [            {
              "distanceMeters": 21,
              "staticDuration": "6s",
              "polyline": {
                "encodedPolyline": "ipkcFjgchVd@@"
              },
              "startLocation": {
                "latLng": {
                  "latitude": 37.4197318,
                  "longitude": -122.0826233
                }
              },
              "endLocation": {
                "latLng": {
                  "latitude": 37.41954,
                  "longitude": -122.08262750000002
                }
              }
            },
            ...
        },
        # Second leg
        {
            "distanceMeters": 598,
            "duration": "159s",
            "staticDuration": "159s",
            "polyline": {
                "encodedPolyline": "ipkcFz{bhVh@??{@xPBP?J}E{E?"
            },
            "startLocation": {
                "latLng": {
                    "latitude": 37.419734,
                    "longitude": -122.08077919999998
                }
            },
            "endLocation": {
                "latLng": {
                    "latitude": 37.417616599999995,
                    "longitude": -122.07938820000001
                }
            },
            "steps": [
                {
                  ...