Traveling Salesman Problem (TSP) v3¶
Ngừng hỗ trợ
Chúng tôi khuyên dùng TSP v4 API cho tích hợp mới. TSP v3 API sẽ ngừng hỗ trợ trong tương lai.
Traveling Salesman Problem (TSP) là bài toán kinh điển trong khoa học máy tính và vận trù học. Cho một tập điểm và khoảng cách giữa chúng, TSP đi tìm lộ trình ngắn nhất đi qua mỗi điểm đúng một lần rồi quay về điểm xuất phát. Đưa vào bài toán bản đồ và chỉ đường thì các "thành phố" chính là địa điểm, còn "khoảng cách" là quãng đường hoặc thời gian di chuyển.
TSP Maps API của VIETMAP là bộ công cụ giúp bạn giải bài toán TSP cho một tập địa điểm cho trước. API cung cấp thuật toán tìm lời giải tối ưu hoặc gần tối ưu, kèm dữ liệu để vẽ lộ trình lên bản đồ. Bạn dùng nó để làm các ứng dụng tối ưu lộ trình và dẫn đường, ví dụ tối ưu tuyến giao hàng hay quản lý logistics.
URL¶
https://maps.vietmap.vn/api/tsp/v3?apikey={your-apikey}&point={point}&point={point}&point={point}&points_encoded={points_encoded}&vehicle={vehicle}&roundtrip={roundtrip}&destinations={destinations}&sources={sources}
Method¶
GET
Tham số¶
| Tham số | Kiểu | Bắt buộc | Mặc định | Mô tả |
|---|---|---|---|---|
| apikey | string | có | không | API key VIETMAP cấp cho tài khoản của bạn. Đăng ký tại đây |
| point | array string | có | không | Các điểm cần tính tuyến. Định dạng [latitude,longitude] — vĩ độ trước. Ít nhất phải có điểm đi và điểm đến; có thể thêm điểm trung gian. Số điểm tối đa tùy theo gói bạn đang dùng. Ví dụ: &point=10.762622,106.660172 |
| points_encoded | boolean | không | true | Chọn cách mã hóa tọa độ trả về trong points và snapped_waypoints. true: chuỗi polyline google polyline 5 — payload nhỏ, phía client phải dùng thư viện polyline để giải mã. false: trả về mảng tọa độ thô, đọc được ngay. Mặc định true. Chúng tôi khuyên để true để giảm kích thước JSON phản hồi. |
| vehicle | string | không | car | Enum: car, bike, foot, motorcycle. Loại phương tiện dùng để tính tuyến. |
| roundtrip | boolean | không | all | Giá trị: true (mặc định), false. Tuyến trả về là hành trình vòng (quay lại điểm đầu tiên) |
| sources | string | không | không | Giá trị: any (mặc định), first. Tuyến bắt đầu từ điểm bất kỳ hoặc từ điểm đầu tiên |
| destinations | string | không | không | Giá trị: any (mặc định), last. Tuyến kết thúc ở điểm bất kỳ hoặc ở điểm cuối cùng |
Ví dụ¶
Đầu vào
https://maps.vietmap.vn/api/tsp/v3?apikey={your-apikey}&point=10.79628438955497,106.70592293472612&point=10.801891047584164,106.70660958023404&point=10.801595962927763,106.6898296806408&points_encoded=true&vehicle=motorcycle&roundtrip=true
{
"license": "vietmap",
"code": "OK",
"messages": null,
"paths": [
{
"distance": 7720.5,
"weight": 1022.8,
"time": 1022800,
"transfers": 0,
"points_encoded": true,
"bbox": [
106.68973,
10.79352,
106.71098,
10.80307
],
"points": "}s{`Ac_hjSIP[r@KTuAxCOb@QVuAoAi@g@w@u@oCmC_BgBm@}@QUcB{C}@qBMYs@{B]}A_@kBSkCIo@oABFbAHtAPtAPpAbApDXv@Rj@dAzBT^dAdBqA^e@Jo@F{BLCcAAEICq@@p@AHB@DBbAzBMn@Gd@KpA_@LRZh@dAvAv@z@pI`I[t@u@vA|@h@LJDLa@jL?`AF^gBVeF~@GZuAb@sARgDr@uHfBa@PGBd@xAF\\?RGz@WnEk@~HSzCUlDH?bB?TnAJbAH|@?VBz@?j@?JGJGXGf@?n@Db@H~BjCn@?B?JAFI?}BCAcAI_CEc@?o@Fg@FYFK?K?k@C{@?WI}@KcAUoAdAAz@CP?`A?b@?z@CbAI\\E^GHAJ?VClAGbBGPA`ACLAv@CH?~BOj@C~@Al@Ar@C@kADKbDJ~@Bh@LGk@Bo@H[T[TOPGNCNA`AFlA@REVSFIFQBYGkA@{@Ig@[_AA}B@y@Hq@BO@g@EmAAWCg@Ac@BwAX_DHs@H{@DUP_@No@Be@?KEMGd@GJIDE?k@i@Q?WJGG}AqA?a@mAoAeDcDQQUUyEmEPWNc@tAyCJUZs@HQ",
"instructions": [
{
"distance": 192,
"heading": 0,
"sign": 0,
"interval": [
0,
6
],
"text": "Tiếp tục theo Đường Nguyễn Cửu Vân",
"time": 25900,
"street_name": "Đường Nguyễn Cửu Vân",
"last_heading": null
},
/// More instruction objects will response here
{
"distance": 0,
"heading": 0,
"sign": 4,
"interval": [
201,
201
],
"text": "Đích đến",
"time": 0,
"street_name": "Đường Nguyễn Cửu Vân",
"last_heading": null
}
],
"snapped_waypoints": "}s{`Ac_hjS}`@{CVphB"
}
]
}
Mô tả phản hồi¶
| Trường | Kiểu | Mô tả |
|---|---|---|
| license | string | Loại giấy phép của dữ liệu bản đồ. |
| code | string | Mã trạng thái của phản hồi, ví dụ "OK" là thành công. |
| messages | null | Thông báo kèm theo phản hồi, nếu có. |
| paths | array | Mảng chứa thông tin tuyến đường: quãng đường, thời gian và hướng dẫn đi. |
Mỗi phần tử trong mảng paths gồm các trường sau:
| Trường | Kiểu | Mô tả |
|---|---|---|
| distance | float | Tổng quãng đường của tuyến, tính bằng mét. Ví dụ: 7720.5 (~7,7 km) |
| weight | float | Trọng số của tuyến. |
| time | integer | Tổng thời gian đi hết tuyến, tính bằng mili giây. Ví dụ: 1022800 (~17 phút) |
| transfers | integer | Số lần chuyển tuyến trong hành trình. |
| points_encoded | boolean | Cho biết các điểm có được mã hóa hay không. |
| bbox | array | Khung bao của tuyến. |
| points | string | Chuỗi điểm đã mã hóa dọc theo tuyến. |
| instructions | array | Mảng chứa hướng dẫn đi từng bước trên tuyến. |
| snapped_waypoints | string | Các điểm đã bám vào đường dọc theo tuyến. |
Mỗi phần tử trong mảng instructions gồm các trường sau:
| Trường | Kiểu | Mô tả |
|---|---|---|
| distance | float | Quãng đường của bước hướng dẫn này, tính bằng mét |
| heading | integer | Hướng đi tại bước này, tính bằng độ (0 = Bắc) |
| sign | integer | Mã chỉ hành động cần làm (ví dụ rẽ trái). |
| interval | array | Khoảng chỉ số điểm ứng với bước hướng dẫn. |
| text | string | Nội dung hướng dẫn dạng chữ. |
| time | integer | Thời gian đi hết bước này, tính bằng mili giây |
| street_name | string | Tên đường của bước hướng dẫn. |
| last_heading | null | Hướng đi cuối của bước hướng dẫn. |
