TSP API Playground

    Tối ưu lộ trình một xe (TSP)

    Cho một danh sách điểm, TSP sắp lại thứ tự ghé thăm sao cho quãng đường ngắn nhất. Khác với Route API (đi đúng thứ tự bạn nhập), TSP tự quyết định thứ tự.

    Bài toán: một shipper, 6 điểm giao

    Một kho và 5 điểm giao, nhập theo đúng thứ tự đơn hàng vào — tức là lộn xộn. TSP sắp lại thứ tự ghé sao cho tổng quãng đường ngắn nhất, chỉ một xe.

    • Giao hàng theo tuyến: shipper nhận 6 đơn rải rác, TSP trả về thứ tự ghé tối ưu thay vì đi theo thứ tự đơn về.
    • Đo được hiệu quả: trang này gọi thêm Route API cho thứ tự nhập ban đầu, vẽ cả hai lên bản đồ để thấy chênh lệch bằng km và phút.
    • API nhận danh sách point và trả về points_order — chính là thứ tự ghé. Tắt roundtrip nghĩa là kết thúc ở điểm cuối, không quay về kho.

    Nhấp lên bản đồ để thêm điểm. Số trên marker khớp với danh sách bên trái; nhãn xanh bên dưới là thứ tự ghé sau khi tối ưu.

    Code mẫu

    Ví dụ với tham số mẫu — điền tham số ở khung bên trái để có code đúng request của bạn.

    curl 'https://maps.vietmap.vn/api/tsp/v4?apikey=YOUR_API_KEY&point=10.7768,106.7009&point=10.80189,106.7066&point=10.7725,106.6828&point=10.80159,106.68982&point=10.7839,106.6911&point=10.79628,106.70592&points_encoded=false&vehicle=motorcycle&roundtrip=true&sources=first&destinations=any'

    Thay YOUR_API_KEY bằng API key của bạn trước khi chạy.

    // Khi đưa vào sản phẩm, đọc key từ biến môi trường thay vì ghi cứng.
    const API_KEY = "YOUR_API_KEY";
    
    const params = new URLSearchParams([
      ["apikey", API_KEY],
      ["point", "10.7768,106.7009"],
      ["point", "10.80189,106.7066"],
      ["point", "10.7725,106.6828"],
      ["point", "10.80159,106.68982"],
      ["point", "10.7839,106.6911"],
      ["point", "10.79628,106.70592"],
      ["points_encoded", "false"],
      ["vehicle", "motorcycle"],
      ["roundtrip", "true"],
      ["sources", "first"],
      ["destinations", "any"],
    ]);
    
    const response = await fetch(`https://maps.vietmap.vn/api/tsp/v4?${params}`);
    if (!response.ok) {
      throw new Error(`Vietmap ${response.status}: ${await response.text()}`);
    }
    const data = await response.json();
    console.log(data);

    Thay YOUR_API_KEY bằng API key của bạn trước khi chạy.

    import requests
    
    # Khi đưa vào sản phẩm, đọc key từ biến môi trường thay vì ghi cứng.
    API_KEY = "YOUR_API_KEY"
    
    params = [
        ("apikey", API_KEY),
        ("point", "10.7768,106.7009"),
        ("point", "10.80189,106.7066"),
        ("point", "10.7725,106.6828"),
        ("point", "10.80159,106.68982"),
        ("point", "10.7839,106.6911"),
        ("point", "10.79628,106.70592"),
        ("points_encoded", "false"),
        ("vehicle", "motorcycle"),
        ("roundtrip", "true"),
        ("sources", "first"),
        ("destinations", "any"),
    ]
    
    response = requests.get("https://maps.vietmap.vn/api/tsp/v4", params=params, timeout=30)
    response.raise_for_status()
    print(response.json())

    Thay YOUR_API_KEY bằng API key của bạn trước khi chạy.

    https://maps.vietmap.vn/api/tsp/v4?apikey=YOUR_API_KEY&point=10.7768,106.7009&point=10.80189,106.7066&point=10.7725,106.6828&point=10.80159,106.68982&point=10.7839,106.6911&point=10.79628,106.70592&points_encoded=false&vehicle=motorcycle&roundtrip=true&sources=first&destinations=any

    Thay YOUR_API_KEY bằng API key của bạn trước khi chạy.

    Tôi cần tích hợp TSP API v4 của Vietmap vào ứng dụng của mình.
    
    Tài liệu chính thức: https://maps.vietmap.vn/docs/map-api/tsp-version/tsp-v4/
    
    Đây là một request mẫu đã chạy được trên Vietmap API Playground:
    
    GET https://maps.vietmap.vn/api/tsp/v4?apikey=YOUR_API_KEY&point=10.7768,106.7009&point=10.80189,106.7066&point=10.7725,106.6828&point=10.80159,106.68982&point=10.7839,106.6911&point=10.79628,106.70592&points_encoded=false&vehicle=motorcycle&roundtrip=true&sources=first&destinations=any
    
    Tham số đang dùng:
    - point = 10.7768,106.7009
    - point = 10.80189,106.7066
    - point = 10.7725,106.6828
    - point = 10.80159,106.68982
    - point = 10.7839,106.6911
    - point = 10.79628,106.70592
    - points_encoded = false
    - vehicle = motorcycle
    - roundtrip = true
    - sources = first
    - destinations = any
    
    Hãy viết code bằng [ngôn ngữ / framework của tôi] để gọi API này, với các yêu cầu:
    1. Đọc API key từ biến môi trường VIETMAP_API_KEY, không ghi cứng trong code.
    2. Truyền tham số qua query string đúng như request mẫu; tham số lặp lại (như `point`) phải giữ nguyên thứ tự.
    3. Xử lý lỗi theo mã HTTP của Vietmap:
       - 401: API key sai hoặc đã bị thu hồi.
       - 403: key bị giới hạn theo domain / IP không khớp.
       - 423: API chưa được bật cho consumer của key, HOẶC tài khoản hết credit — phân biệt bằng nội dung phản hồi (có cụm "exceeded credit" là hết credit).
       - 429: vượt giới hạn tần suất — thử lại với backoff tăng dần.
    4. Đặt timeout cho request, và định nghĩa kiểu dữ liệu (type / interface / dataclass) cho phản hồi.
    
    Nếu không chắc tên một trường, tra trong tài liệu ở link trên thay vì đoán.

    Dán vào ChatGPT, Claude… để sinh code tích hợp. Prompt không bao giờ chứa API key của bạn.

    TSP API là gì?

    TSP API (bài toán người giao hàng) sắp lại thứ tự ghé một danh sách điểm sao cho tổng quãng đường ngắn nhất, cho một xe. Có thể cố định điểm xuất phát, điểm kết thúc, hoặc yêu cầu quay về điểm đầu; kết quả trả thứ tự ghé tối ưu cùng đường đi. Khi có nhiều xe, tải trọng hay khung giờ, hãy dùng VRP.

    Dùng để làm gì

    • Sắp thứ tự giao hàng trong ngày cho một shipper.
    • Lộ trình thăm khách của nhân viên kinh doanh.
    • Tuyến thu gom, kiểm tra thiết bị theo vòng.
    • Lịch trình tham quan nhiều điểm trong ngày.

    Request mẫu

    GET https://maps.vietmap.vn/api/tsp/v4?apikey=YOUR_API_KEY&point=10.7768,106.7009&point=10.8018,106.7066&point=10.7725,106.6828&vehicle=motorcycle&sources=first&points_encoded=false

    points_order trong kết quả là thứ tự ghé tối ưu của các point đã gửi.

    Câu hỏi thường gặp về TSP API

    TSP là gì?
    TSP (Travelling Salesman Problem, bài toán người giao hàng) là bài toán tìm thứ tự ghé một danh sách điểm sao cho tổng quãng đường ngắn nhất. TSP API giải bài toán này cho một xe và trả thứ tự ghé tối ưu (points_order) cùng đường đi.
    TSP khác gì VRP?
    TSP dành cho một xe, không có ràng buộc tải trọng hay khung giờ. Khi có nhiều xe, mỗi xe chở có hạn, hoặc khách hẹn giờ nhận hàng, dùng VRP API.
    Có cố định được điểm xuất phát và điểm kết thúc không?
    Có. Có thể cố định điểm đầu, điểm cuối, hoặc yêu cầu quay về điểm xuất phát (ví dụ quay về kho). Trang này cho bật các tùy chọn đó và so sánh tuyến trước, sau khi tối ưu.
    Dùng thử TSP API có mất phí không?
    Trên Playground có sẵn API key demo để gọi thử TSP API ngay trên trình duyệt, không cần đăng ký. Khi tích hợp vào sản phẩm, bạn đăng ký tài khoản VIETMAP để có API key riêng. Phí tính theo transaction, mỗi API quy đổi số request ra transaction theo tỉ lệ riêng; chi tiết và chương trình trải nghiệm miễn phí có trong bảng giá.