Đặ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 sẽ 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 đi qua mà xe sẽ đi qua mà không dừng lại.

Sử dụng điểm tham chiếu đi qua để đị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 đón hoặc trả khách riêng biệt, điểm tham chiếu đi qua sẽ buộc công cụ định tuyến phải đi qua một vị trí cụ thể trên đường đến đích – 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 có điểm xuất phát, một hoặc nhiều điểm tham chiếu trung gian đi qua và một điểm đến chỉ chứa một đoạn tuyến đường kết nối trực tiếp điểm xuất phát 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 đi 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 toạ độ vĩ độ và kinh độ hoặc latLng sẽ 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 đi qua.

Thuộc tính via sẽ hiệu quả nhất khi bạn tạo 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 cho phé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 đ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 đi qua

Mặc dù bạn nên sử dụng toạ độ vĩ độ và kinh độ để định tuyến chính xác điểm tham chiếu đi qua, nhưng bạn cũng có thể chỉ định các điểm tham chiếu trung gian bằ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 đi qua, API sẽ nội suy và gắn vị trí vào con đường có thể di chuyển gần nhất. Quá trình gắn vào đường này đôi khi 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 Mã cộng, API sẽ mã hoá địa lý vị trí và trả về Mã địa điểm phù hợp trong geocodingResults.intermediates mảng 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 đi qua

Ví dụ sau đây cho thấy một yêu cầu có 3 điểm tham chiếu trung gian đi 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 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 tham chiếu 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 sẽ bỏ qua điểm tham chiếu trung gian tại chỉ mục 1 khỏi geocodingResults vì bạn đã chỉ định điểm tham chiếu đó bằ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"
      }
    ]
  }
}