Tất cả bài viết

Giới thiệu Directions API cho Việt Nam

Endpoint chỉ đường mới với hướng dẫn rẽ từng bước, tối ưu cho xe máy, trả về định dạng tương thích Google Directions để bạn tích hợp gần như không cần đổi code.

Hôm nay chúng tôi ra mắt một trong những tính năng được yêu cầu nhiều nhất: Directions API (chỉ đường). GET /v1/directions trả về tuyến đường giữa hai điểm — khoảng cách, thời gian và hướng dẫn rẽ từng bước — xây riêng cho đường Việt Nam và tối ưu cho xe máy, đúng cách phần lớn người Việt di chuyển.

Vì sao chúng tôi làm tính năng này

Các ứng dụng giao hàng, đặt xe, dịch vụ tận nơi và logistics ở Việt Nam đều cần cùng một thứ: tuyến đường thực tế cho xe máy, không phải ô tô. Ở Việt Nam xe máy và ô tô đi đường khác nhau — xe máy luồn được ngõ hẻm, làn nhỏ mà ô tô không vào được. Định tuyến kiểu ô tô sẽ ước lượng sai cả quãng đường lẫn thời gian.

Engine định tuyến của chúng tôi chạy trên đồ thị đường OpenStreetMap được tinh chỉnh cho hồ sơ motobike, nên tuyến đường — và thời gian dự kiến — khớp với cách một người chạy xe máy thực sự sẽ đi.

Tương thích Google Directions

Nếu ứng dụng của bạn đang dùng Google Maps hoặc Goong Directions, việc chuyển sang gần như miễn phí: chúng tôi trả về cùng cấu trúc responseroutes[] → legs[] → steps[] với distance/duration ({ text, value }), html_instructions, maneuver (turn-left, turn-right, …) và chuỗi polyline đã mã hoá.

Request

curl -G "https://api.gogoduk.com/v1/directions" \
  -H "X-API-Key: $GOGODUK_API_KEY" \
  --data-urlencode "origin=21.0285,105.8542" \
  --data-urlencode "destination=21.2212,105.8072" \
  --data-urlencode "vehicle=motobike"
  • origin / destination — dạng lat,lng (cùng thứ tự với Google/Goong).
  • vehicle — hiện hỗ trợ motobike; car sẽ có sau.
  • Scope yêu cầu: routing:read.

Response

{
  "status": "OK",
  "routes": [
    {
      "legs": [
        {
          "distance": { "text": "5.7 km", "value": 5704.1 },
          "duration": { "text": "9 phút", "value": 511.2 },
          "steps": [
            {
              "distance": { "text": "243 m", "value": 243.4 },
              "html_instructions": "Head northwest on Pasteur",
              "maneuver": "turn-right",
              "polyline": { "points": "suw`Aq{fjSOF{Bx@..." },
              "travel_mode": "DRIVING"
            }
          ]
        }
      ],
      "overview_polyline": { "points": "suw`Aq{fjS..." }
    }
  ]
}

Giải mã overview_polyline.points bằng bất kỳ decoder polyline Google/Mapbox nào (precision 5) rồi vẽ thẳng lên bản đồ.

Luôn có đường để vẽ

Khi không có tuyến đường thật giữa hai điểm (mạng đường bị đứt đoạn, đảo, hoặc input sai), chúng tôi không trả lỗi — mà trả về đường ước lượng (đường thẳng) để giao diện luôn có thứ để vẽ:

  • status chuyển thành "ESTIMATED".
  • distance là khoảng cách chim bay nhân hệ số đường bộ; duration ước lượng theo vận tốc trung bình.

Chúng tôi khuyến nghị vẽ tuyến ESTIMATED khác đi (vd nét đứt) để người dùng biết đây không phải tuyến đường thật.

Dùng thử

Có câu hỏi hay góp ý? Tham gia nhóm hỗ trợ Telegram của chúng tôi — rất mong được thấy sản phẩm bạn xây dựng.

Muốn dùng GoGoDuk?

Miễn phí trọn đời — 100 request/ngày mỗi tài khoản, không cần thẻ tín dụng. Giới hạn cao hơn theo yêu cầu.

Đăng ký →