Để tính toán ma trận tuyến đường, bạn phải chỉ định ít nhất vị trí của một điểm xuất phát tuyến đường và một điểm đến tuyến đường.
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 Điểm trung gian (REST) hoặc Điểm trung gian (gRPC). Trong định nghĩa điểm trung gian, bạn có thể chỉ định vị trí theo một trong các cách sau:
- Mã địa điểm (ưu tiên)
- Toạ độ vĩ độ/kinh độ
- Chuỗi địa chỉ ("Chicago, IL" hoặc "Darwin, NT, Australia")
- Mã Plus
Bạn có thể chỉ định vị trí cho tất cả các điểm trung gian trong một yêu cầu theo cách tương tự hoặc bạn có thể kết hợp các điểm trung gian đó. Ví dụ: bạn có thể sử dụng toạ độ vĩ độ/kinh độ cho điểm trung gian xuất phát và sử dụng mã nhận dạng địa điểm cho điểm trung gian đích đến.
Để đảm bảo 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 là giá trị nhận dạng duy nhất và mang lại các lợi ích về việc mã hoá địa lý cho việc định tuyến, chẳng hạn như điểm truy cập và biến lưu lượng truy cập. Các thông tin này 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 toạ độ vĩ độ/kinh độ có thể khiến vị trí được chụp nhanh đến đường gần nhất với các toạ độ đó – 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à đường dẫn đến đích nhanh chóng hoặc an toàn.
- Trước tiên, Routes API phải mã hoá địa lý các chuỗi địa chỉ để chuyển đổi các chuỗi đó 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 vị trí dưới dạng 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 trung gian. Vì các toạ độ vĩ độ và kinh độ được gắn với đường, nên bạn có thể thấy mã địa điểm mang lại kết quả tốt hơn trong một số trường hợp.
Truy xuất mã địa điểm từ Geocoding API và Places API (bao gồm cả tính năng Tự động hoàn thành đị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ả origin
và destination
:
{ "origin":{ "placeId": "ChIJayOTViHY5okRRoq2kGnGg8o" }, "destination":{ "placeId": "ChIJTYKK2G3X5okRgP7BZvPQ2FU" }, ... }
Chỉ định một vị trí dưới dạng toạ độ vĩ độ và kinh độ
Để xác định vị trí trong một điểm trung gian, hãy chỉ định Vị trí (REST) hoặc Vị trí(gRPC) bằng cách sử dụng toạ độ vĩ độ/kinh độ.
Ví dụ: chỉ định một điểm trung gian cho tuyến đường origin
và destination
bằng cách sử dụng toạ độ latitude
và longitude
:
{ "origin":{ "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0827784 } } }, "destination":{ "location":{ "latLng":{ "latitude": 37.417670, "longitude": -122.079595 } } }, ... }
Chỉ định một vị trí dưới dạng chuỗi địa chỉ
Chuỗi địa chỉ là đị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 toạ độ 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 trung gian, Routes API sẽ mã hoá địa lý chuỗi đó trong nội bộ để chuyển đổi chuỗi thành toạ độ vĩ độ và kinh độ.
Ví dụ: để tính toán một tuyến đường, bạn chỉ định một điểm trung gian cho tuyến đường origin
và destination
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á địa lý cả hai địa chỉ để chuyển đổi thành toạ độ vĩ độ và kinh độ.
Nếu giá trị địa chỉ không rõ ràng, 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à giá trị đầy đủ hoặc giá trị một phần cho "1st street NE" hoặc "1st St SE". Kết quả này có thể khác với kết quả do API Địa chỉ được mã hoá địa lý trả về. Bạn có thể tránh việc diễn giải sai bằng cách sử dụng mã địa điểm.
Đặt khu vực cho địa chỉ
Nếu bạn truyền một chuỗi địa chỉ chưa hoàn chỉnh làm vị trí của một điểm trung gian, 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 yêu cầu chỉ định "Toledo" làm điểm xuất phát và "Madrid" làm đích đế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 bang Ohio, Hoa Kỳ chứ không phải ở Tây Ban Nha. Do đó, yêu cầu sẽ trả về một mảng trống, nghĩa là không có tuyến nào tồn tại:
{ [] }
Bạn có thể định cấu hình API để trả về kết quả thiên về một khu vực cụ thể bằng cách đưa tham số regionCode
vào. Thông số này chỉ định mã vùng dưới dạng giá trị gồm hai ký tự ccTLD ("miền cấp cao nhất"). Hầu hết mã ccTLD giống hệt với mã ISO 3166-1, ngoại trừ một số trường hợp ngoại lệ đáng chú ý. Ví dụ: ccTLD của Vương quốc Anh là "uk" (.co.uk) còn mã ISO 3166-1 là "gb" (về mặt kỹ thuật là cho thực thể "Vương quốc Anh và Bắc Ireland").
Yêu cầu chỉ đường từ "Toledo" đến "Madrid" có chứa tham số regionCode
sẽ trả về kết quả phù 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 vị trí dưới dạng 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 hàng. Hoặc những người có địa chỉ có thể muốn nhận hàng tại các vị trí cụ thể hơn, chẳng hạn như lối vào sau hoặc bến xe tải.
Mã cộng giống như địa chỉ đường phố cho những người hoặc địa điểm không có địa chỉ thực tế. Thay vì địa chỉ có tên đường và số nhà, Mã cộng được 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 để mang lại lợi ích của địa chỉ cho mọi người và mọi thứ. Mã cộng là một tệp tham chiếu vị trí được mã hoá, bắt nguồn từ toạ độ vĩ độ/kinh độ, đại diện cho một khu vực: 1/8000 độ theo 1/8000 độ (khoảng 14m x 14m tại đường xích đạo) trở xuống. Bạn có thể sử dụng Plus Code thay cho địa chỉ đường phố ở những nơi không có địa chỉ đường phố hoặc những nơi không có số nhà hoặc tên đường.
Mã Plus phải được định dạng dưới dạng mã toàn cục hoặc mã phức hợp:
- Mã chung bao gồm mã vùng gồm 4 ký tự và mã địa phương gồm 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ã cục bộ là "CWC8+R9". Sau đó, bạn sử dụng toàn bộ Mã cộng gồm 10 ký tự để chỉ định giá trị vị trí là "849VCWC8+R9".
- Mã phức hợp bao gồm một mã cục bộ từ 6 ký tự trở lên kết hợp với một vị trí rõ ràng.
Ví dụ: địa chỉ "450 Serra Mall, Stanford, CA 94305, USA" 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à 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 đường bằng cách chỉ định một điểm trung gian cho tuyến đường
origin
vàdestination
bằng Mã cộng:{ "origin":{ "address": "849VCWC8+R9" }, "destination":{ "address": "CRHJ+C3 Stanford, CA 94305, USA" }, "travelMode": "DRIVE" }
Mã địa lý Plus được hỗ trợ trong các API Nền tảng Google Maps, bao gồm cả Tự động hoàn thành địa điểm, Thông tin chi tiết về địa điểm, API chỉ đường và API mã hoá địa lý. Ví dụ: bạn có thể sử dụng API Mã hoá địa lý để đảo ngược quá trình mã hoá địa lý một vị trí được chỉ định bằng toạ độ vĩ độ/kinh độ để xác định Plus Code của vị trí đó.