Chỉ định vị trí cho tuyến đường

Để tính toán một tuyến đường, tối thiểu bạn phải chỉ định các vị trí gốc và đích của tuyến. Bạn xác định các vị trí này là điểm tham chiếu trên tuyến đường.

Ngoài điểm gốc và điểm đến, bạn có thể chỉ định nhiều loại điểm tham chiếu và cách xử lý các điểm tham chiếu cho một tuyến đường. Để biết thêm thông tin và ví dụ, hãy xem các chủ đề sau:

Chỉ định vị trí cho một tuyến đường

Bạn biểu thị một vị trí bằng cách tạo đối tượng Waypoint (REST) hoặc waypoint (gRPC). Trong định nghĩa điểm tham chiếu, bạn có thể chỉ định một vị trí theo bất kỳ cách nào sau đây:

Bạn có thể chỉ định vị trí cho tất cả các điểm tham chiếu trong một yêu cầu theo cách tương tự hoặc có thể kết hợp chúng. Ví dụ: bạn có thể sử dụng toạ độ vĩ độ/kinh độ cho điểm tham chiếu điểm khởi hành và sử dụng mã địa điểm cho điểm tham chiếu đích.

Để đảm bảo tính hiệu quả và độ chính xác, hãy sử dụng mã địa điểm thay vì toạ độ vĩ độ/kinh độ hoặc chuỗi địa chỉ. Mã địa điểm rõ ràng là duy nhất và mang lại lợi ích mã hoá địa lý cho việc định tuyến, chẳng hạn như các điểm truy cập và biến lưu lượng truy cập. Chúng giúp tránh các tình huống sau đây có thể xảy ra do các cách khác để chỉ định vị trí:

  • Việc sử dụng vĩ độ/kinh độ có thể dẫn đến việc vị trí bị gắn với con đường gần với các toạ độ đó nhất – có thể không phải là điểm truy cập vào cơ sở lưu trú hoặc thậm chí là con đường dẫn đến điểm đến một cách nhanh chóng hoặc an toàn.
  • Trước tiên, chuỗi địa chỉ phải được mã hoá địa lý bằng Routes API (API Tuyến đường) để chuyển đổi chuỗi địa chỉ thành toạ độ vĩ độ/kinh độ trước khi có thể tính toán tuyến đường. Lượt chuyển đổi này có thể ảnh hưởng đến hiệu suất.

Chỉ định một vị trí làm mã địa điểm

Bạn có thể sử dụng mã địa điểm để chỉ định vị trí của một điểm tham chiếu. Vì vĩ độ và kinh độ được gắn với đường, nên bạn có thể tìm thấy mã địa điểm cung cấp kết quả tốt hơn trong một số trường hợp.

Truy xuất mã địa điểm từ API mã hoá địa lýAPI Địa điểm (bao gồm cả tính năng Tự động hoàn thành theo địa điểm). Để biết thêm về mã địa điểm, hãy xem bài viết Tổng quan về mã địa điểm.

Ví dụ sau đây sử dụng thuộc tính placeId để truyền mã địa điểm cho cả origindestination:

{
  "origin":{
    "placeId": "ChIJayOTViHY5okRRoq2kGnGg8o"
  },
  "destination":{
    "placeId": "ChIJTYKK2G3X5okRgP7BZvPQ2FU"
  },
  ...
}

Chỉ định một vị trí làm toạ độ theo vĩ độ và kinh độ

Để xác định vị trí trong một điểm tham chiếu, hãy chỉ định Vị trí (REST) hoặc Vị trí(gRPC) bằng cách sử dụng toạ độ vĩ độ/kinh độ.

Ví dụ: hãy chỉ định một điểm tham chiếu cho tuyến đường origindestination bằng cách sử dụng các toạ độ latitudelongitude:

{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.419734,
        "longitude": -122.0827784
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.417670,
        "longitude": -122.079595
      }
    }
  },
...
}

Chỉ định vị trí làm chuỗi địa chỉ

Chuỗi địa chỉ là các địa chỉ cố định được biểu thị bằng một chuỗi (chẳng hạn như "1600 Amphitheatre Parkway, Mountain View, CA"). Mã hoá địa lý là quá trình chuyển đổi một chuỗi địa chỉ thành vĩ độ và kinh độ (chẳng hạn như vĩ độ 37,423021 và kinh độ -122.083739).

Khi bạn truyền một chuỗi địa chỉ làm vị trí của một điểm tham chiếu, Routes API sẽ mã hoá nội bộ chuỗi để chuyển đổi chuỗi đó thành toạ độ vĩ độ và kinh độ.

Ví dụ: để tính toán một tuyến đường, bạn sẽ chỉ định một điểm tham chiếu cho tuyến đường origindestination bằng cách sử dụng chuỗi địa chỉ:

{
  "origin":{
    "address": "1600 Amphitheatre Parkway, Mountain View, CA"
  },
  "destination":{
    "address": "450 Serra Mall, Stanford, CA 94305, USA"
  },
  ...
}

Trong ví dụ này, Routes API sẽ mã hoá cả hai địa chỉ để chuyển đổi thành toạ độ theo vĩ độ và kinh độ.

Nếu giá trị địa chỉ không rõ ràng, thì Routes API có thể gọi một lượt tìm kiếm để phân biệt với các địa chỉ tương tự. Ví dụ: "1st Street" có thể là một giá trị đầy đủ hoặc một phần giá trị cho "1st đường NE" hoặc "1st St SE". Kết quả này có thể khác với kết quả do API mã hoá địa lý trả về. Bạn có thể tránh những hiểu lầm có thể xảy ra bằng cách sử dụng mã địa điểm.

Thiết lập khu vực cho địa chỉ

Nếu bạn chuyển một chuỗi địa chỉ không đầy đủ làm vị trí của điểm tham chiếu, thì API có thể sử dụng toạ độ vĩ độ/kinh độ được mã hoá địa lý không chính xác. Ví dụ: bạn đưa ra một yêu cầu chỉ định "Toledo" là điểm khởi hành và "Madrid" là điểm đến cho một tuyến đường lái xe:

{
  "origin":{
    "address": "Toledo"
  },
  "destination":{
    "address": "Madrid"
  },
  "travelMode": "DRIVE"
}

Trong ví dụ này, "Toledo" được hiểu là một thành phố ở tiểu bangOhio của Hoa Kỳ chứ không phải ở Tây Ban Nha. Do đó, yêu cầu này sẽ trả về một mảng trống, nghĩa là không có tuyến nào:

{
  []
}

Bạn có thể định cấu hình API để trả về kết quả không chính xác ở một khu vực cụ thể bằng cách thêm tham số regionCode. Tham số này chỉ định mã khu vực ở dạng giá trị ccTLD ("miền cấp cao nhất") gồm hai ký tự. Hầu hết các mã ccTLD (miền cấp cao nhất theo mã quốc gia) đều giống với mã ISO 3166-1, trừ một số trường hợp ngoại lệ đáng chú ý. Ví dụ: ccTLD (miền cấp cao nhất theo mã quốc gia) của Vương quốc Anh là "uk" (.co.uk) trong khi mã ISO 3166-1 của quốc gia này là "gb" (về mặt kỹ thuật, mã này là "Vương quốc Anh và Bắc Ireland").

Yêu cầu chỉ đường cho "Toledo" đến "Madrid" bao gồm tham số regionCode sẽ trả về kết quả thích hợp vì "Toledo" được hiểu là một thành phố ở Tây Ban Nha:

{
  "origin":{
    "address": "Toledo"
  },
  "destination":{
    "address": "Madrid"
  },
  "travelMode": "DRIVE",
  "regionCode": "es"
}

Phản hồi hiện chứa tuyến đường được tính từ Toledo, Tây Ban Nha đến Madrid, Tây Ban Nha:

{
  "routes": [
    {
      "distanceMeters": 75330,
      "duration": "4137s",
      ...
    }
  ]
}

Chỉ định một vị trí làm Plus Code

Nhiều người không có địa chỉ chính xác. Điều này có thể khiến họ gặp khó khăn khi nhận đơn hàng. Hoặc, những người có địa chỉ có thể thích chấp nhận phân phối tại các vị trí cụ thể hơn, chẳng hạn như lối vào sau hoặc đế tải.

Plus Code giống như địa chỉ đường phố của những người hoặc địa điểm không có địa chỉ thực. Thay vì địa chỉ có tên đường và số, Plus Codes sẽ dựa trên toạ độ vĩ độ/kinh độ và hiển thị dưới dạng số và chữ cái.

Google đã phát triển Plus Codes để cung cấp lợi ích của địa chỉ cho mọi người và mọi thứ. Plus Code là một thông tin tham chiếu vị trí được mã hoá, lấy từ toạ độ vĩ độ/kinh độ, đại diện cho một khu vực: 1/8000th của một độ x 1/8000th của một độ (khoảng 14m x 14m tại đường xích đạo) hoặc nhỏ hơn. Bạn có thể sử dụng Plus Codes để thay thế địa chỉ đường phố ở những nơi không có địa điểm đó hoặc nơi toà nhà không được đánh số hoặc đường phố không có tên.

Plus Code phải được định dạng dưới dạng mã chung hoặc mã phức hợp:

  • Mã chung bao gồm một mã vùng gồm 4 ký tự và mã cục bộ có độ dài từ 6 ký tự trở lên.

    Ví dụ: đối với địa chỉ "1600 Amphitheatre Parkway, Mountain View, CA", mã chung là "849V" và mã địa phương là "CWC8+R9". Sau đó, bạn sử dụng toàn bộ 10 ký tự Plus Code để chỉ định giá trị vị trí là "849VCWC8+R9".

  • Mã phức hợp bao gồm một mã cục bộ gồm 6 ký tự trở lên kết hợp với một vị trí rõ ràng.

    Ví dụ: địa chỉ "450 hầu trung tâm mua sắm ở Stanford, Stanford, CA 94305, Hoa Kỳ" có mã địa phương là "CRHJ+C3". Đối với địa chỉ phức hợp, hãy kết hợp mã địa phương với thành phố, tiểu bang, mã bưu chính và phần quốc gia của địa chỉ ở dạng "CRHJ+C3 Stanford, CA 94305, USA".

    Ví dụ: tính toán một tuyến bằng cách chỉ định một điểm tham chiếu cho tuyến đường origindestination qua Plus Codes:

    {
      "origin":{
        "address": "849VCWC8+R9"
      },
      "destination":{
        "address": "CRHJ+C3 Stanford, CA 94305, USA"
      },
      "travelMode": "DRIVE"
    }

Mã cộng được hỗ trợ trong API Nền tảng Google Maps, bao gồm Tự động hoàn thành địa điểm, Thông tin chi tiết về địa điểm, API Chỉ đườngAPI mã hoá địa lý. Ví dụ: bạn có thể sử dụng API Mã hoá địa lý để đảo ngược mã địa lý đối với một vị trí được chỉ định theo vĩ độ/kinh độ nhằm xác định Plus Code của vị trí đó.