Traveling Salesman Problem (TSP) — Tối ưu thứ tự điểm¶
Ngừng hỗ trợ
Đây là endpoint TSP đời cũ. Tích hợp mới bạn hãy dùng TSP v4 — cùng bài toán, chạy trên bộ máy định tuyến v4. Bản này sẽ ngừng hỗ trợ trong tương lai.
URL¶
https://maps.vietmap.vn/api/tsp?api-version=1.1&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?api-version=1.1&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. |
