Đặt một điểm cho một tuyến đường đi qua

Nhà phát triển ở Khu vực kinh tế Châu Âu (EEA)

Theo mặc định, API coi các điểm tham chiếu trung gian là điểm dừng dọc theo một tuyến đường. Tuy nhiên, bạn có thể định cấu hình một điểm tham chiếu trung gian làm điểm tham chiếu via truyền qua mà xe sẽ đi qua mà không dừng lại.

Sử dụng điểm tham chiếu trung gian để định hình hoặc điều chỉnh một tuyến đường cụ thể. Thay vì chia tuyến đường thành các điểm dừng đón hoặc trả khách riêng biệt, một điểm tham chiếu đi qua sẽ buộc công cụ định tuyến đi qua một vị trí cụ thể trên đường đến đích đến – ví dụ: để đi theo một đoạn đường ưu tiên hoặc tránh một mối nguy hiểm đã biết.

Một tuyến đường chứa điểm khởi hành, một hoặc nhiều điểm tham chiếu trung gian và điểm đến chỉ chứa một đoạn đường kết nối trực tiếp điểm khởi hành với điểm đến.

Để định cấu hình một điểm tham chiếu trung gian làm điểm tham chiếu truyền qua, hãy đặt thuộc tính via của điểm tham chiếu thành true trong tài nguyên Waypoint REST hoặc thông báo Waypoint gRPC.

Mặc dù Routes API chấp nhận địa chỉ, mã địa điểm và toạ độ vĩ độ và kinh độ, nhưng vĩ độ và kinh độ hoặc latLng, toạ độ cung cấp các điều chỉnh tuyến đường chính xác nhất cho các điểm tham chiếu truyền qua.

Thuộc tính via hiệu quả nhất khi bạn tạo các tuyến đường để phản hồi việc kéo các điểm tham chiếu trên bản đồ. Phương pháp này giúp bạn xem tuyến đường cuối cùng trông như thế nào theo thời gian thực và giúp bạn đặt các điểm tham chiếu ở những vị trí dễ tiếp cận.

Ví dụ: Đặt một điểm tham chiếu đi qua

Ví dụ sau đây minh hoạ cách đặt "via": true trên một điểm tham chiếu trung gian trong một yêu cầu computeRoutes POST hoàn chỉnh:

curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.419734,
        "longitude": -122.0827784
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.417670,
        "longitude": -122.079595
      }
    }
  },
  "intermediates": [
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      },
      "via": true
    }
  ],
  "travelMode": "DRIVE"
}' \
-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'

Sử dụng địa chỉ hoặc mã địa điểm cho các điểm tham chiếu truyền qua

Mặc dù bạn nên sử dụng toạ độ vĩ độ và kinh độ để định tuyến chính xác, nhưng bạn cũng có thể chỉ định các điểm tham chiếu trung gian bằng cách sử dụng chuỗi địa chỉ hoặc mã địa điểm.

Khi bạn sử dụng địa chỉ hoặc mã địa điểm cho một điểm tham chiếu truyền qua, API sẽ nội suy và điều chỉnh vị trí cho phù hợp với con đường gần nhất có thể đi được. Đôi khi, quá trình gắn đường này có thể dẫn đến các biến thể hoặc điểm không chính xác của tuyến đường so với toạ độ chính xác.

Nếu bạn chỉ định một điểm tham chiếu bằng chuỗi địa chỉ hoặc Plus Code, API sẽ mã hoá địa lý vị trí và trả về Mã địa điểm trùng khớp trong mảng geocodingResults.intermediates trong phản hồi.

Đối với mỗi phần tử trong mảng intermediates, hãy sử dụng thuộc tính intermediateWaypointRequestIndex để xác định điểm tham chiếu trung gian nào trong yêu cầu tương ứng với Mã địa điểm trong phản hồi.

Ví dụ: Yêu cầu mã địa điểm cho các điểm tham chiếu truyền qua

Ví dụ sau đây cho thấy một yêu cầu có 3 điểm tham chiếu trung gian truyền qua, mỗi điểm tham chiếu chỉ định "via": true:

curl -X POST -d '{
  "origin":{
    "address": "1600 Amphitheatre Parkway, Mountain View, CA"
  },
  "destination":{
    "address": "24 Willie Mays Plaza, San Francisco, CA 94107"
  },
  "intermediates": [
    {
      "address": "450 Serra Mall, Stanford, CA 94305, USA",
      "via": true
    },
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      },
      "via": true
    },
    {
      "address": "1836 El Camino Real, Redwood City, CA 94063",
      "via": true
    }
  ],
  "travelMode": "DRIVE"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs,geocodingResults' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

Phản hồi này bao gồm mảng geocodingResults chứa mã địa điểm cho điểm xuất phát, điểm đến và 2 điểm dừng chân trung gian mà bạn đã chỉ định theo địa chỉ tại chỉ mục yêu cầu 0 và chỉ mục 2. API bỏ qua điểm tham chiếu trung gian tại chỉ mục 1 trong geocodingResults vì bạn đã chỉ định điểm này bằng cách sử dụng toạ độ vĩ độ và kinh độ:

{
  "routes": [
    {
      "distanceMeters": 54200,
      "duration": "2400s",
      "legs": [
        {
          "distanceMeters": 54200,
          "duration": "2400s",
          "startLocation": {
            "latLng": {
              "latitude": 37.4220,
              "longitude": -122.0841
            }
          },
          "endLocation": {
            "latLng": {
              "latitude": 37.7786,
              "longitude": -122.3893
            }
          }
        }
      ]
    }
  ],
  "geocodingResults": {
    "origin": {
      "geocoderStatus": {},
      "type": [
        "premise"
      ],
      "placeId": "ChIJj38IfwK6j4ARNcyPDnEGa9g"
    },
    "destination": {
      "geocoderStatus": {},
      "type": [
        "premise"
      ],
      "placeId": "ChIJI7ES6tl_j4ARVpDZoXbWAiY"
    },
    "intermediates": [
      {
        "geocoderStatus": {},
        "intermediateWaypointRequestIndex": 0,
        "type": [
          "street_address"
        ],
        "placeId": "ChIJvdLMGyq7j4ARScE5tWX_C0Y"
      },
      {
        "geocoderStatus": {},
        "intermediateWaypointRequestIndex": 2,
        "type": [
          "premise"
        ],
        "placeId": "ChIJkTc0GKajj4AR9UMsOSHwGD0"
      }
    ]
  }
}