Bỏ qua

Traveling Salesman Problem (TSP) v3

TSP


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 không API key VIETMAP cấp cho tài khoản của bạn. Đăng ký tại đây
point array string 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 pointssnapped_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
Phản hồi
{
    "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.
facebook
Tổng đài hỗ trợ
089.616.4567
facebook Chat Facebook zalo Chat Zalo