Map matching API
Làm sạch dữ liệu GPS theo đường đi thực tế với dữ liệu bản đồ. Giải pháp lý tưởng cho các ứng dụng giám sát, theo dõi đơn hàng, hoặc quản lý người dùng.
Code mẫu
curl -X POST 'https://maps.vietmap.vn/api/match-tolls?apikey=YOUR_API_KEY&vehicle=1' \
-H 'Content-Type: application/json' \
-d '[
[
106.6538842265694,
10.76272759672899
],
[
106.65327405390536,
10.762410814059304
],
[
106.65270927200363,
10.762785866195022
],
[
106.652236,
10.763346
],
[
106.65184,
10.763564
],
[
106.651296,
10.763603
],
[
106.651313,
10.76329
],
[
106.651281,
10.7628
],
[
106.650694,
10.762969
],
[
106.6498,
10.763475
],
[
106.649074,
10.763686
],
[
106.648454,
10.764128
],
[
106.64823,
10.764644
],
[
106.647774,
10.764902
],
[
106.647289,
10.76501
],
[
106.64681,
10.765064
],
[
106.64627,
10.765323
],
[
106.645936,
10.765663
],
[
106.645447,
10.765917
],
[
106.644988,
10.766128
],
[
106.644608,
10.766234
],
[
106.644225,
10.766287
]
]'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],
["vehicle", "1"],
]);
const body = [
[
106.6538842265694,
10.76272759672899
],
[
106.65327405390536,
10.762410814059304
],
[
106.65270927200363,
10.762785866195022
],
[
106.652236,
10.763346
],
[
106.65184,
10.763564
],
[
106.651296,
10.763603
],
[
106.651313,
10.76329
],
[
106.651281,
10.7628
],
[
106.650694,
10.762969
],
[
106.6498,
10.763475
],
[
106.649074,
10.763686
],
[
106.648454,
10.764128
],
[
106.64823,
10.764644
],
[
106.647774,
10.764902
],
[
106.647289,
10.76501
],
[
106.64681,
10.765064
],
[
106.64627,
10.765323
],
[
106.645936,
10.765663
],
[
106.645447,
10.765917
],
[
106.644988,
10.766128
],
[
106.644608,
10.766234
],
[
106.644225,
10.766287
]
];
const response = await fetch(`https://maps.vietmap.vn/api/match-tolls?${params}`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(body),
});
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),
("vehicle", "1"),
]
body = [
[
106.6538842265694,
10.76272759672899,
],
[
106.65327405390536,
10.762410814059304,
],
[
106.65270927200363,
10.762785866195022,
],
[
106.652236,
10.763346,
],
[
106.65184,
10.763564,
],
[
106.651296,
10.763603,
],
[
106.651313,
10.76329,
],
[
106.651281,
10.7628,
],
[
106.650694,
10.762969,
],
[
106.6498,
10.763475,
],
[
106.649074,
10.763686,
],
[
106.648454,
10.764128,
],
[
106.64823,
10.764644,
],
[
106.647774,
10.764902,
],
[
106.647289,
10.76501,
],
[
106.64681,
10.765064,
],
[
106.64627,
10.765323,
],
[
106.645936,
10.765663,
],
[
106.645447,
10.765917,
],
[
106.644988,
10.766128,
],
[
106.644608,
10.766234,
],
[
106.644225,
10.766287,
],
]
response = requests.post("https://maps.vietmap.vn/api/match-tolls", params=params, json=body, timeout=60)
response.raise_for_status()
print(response.json())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 Map Matching (match-tolls) API 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/match-tolls/
Đây là một request mẫu đã chạy được trên Vietmap API Playground:
POST https://maps.vietmap.vn/api/match-tolls?apikey=YOUR_API_KEY&vehicle=1
Body (JSON):
```json
[
[
106.6538842265694,
10.76272759672899
],
[
106.65327405390536,
10.762410814059304
],
[
106.65270927200363,
10.762785866195022
],
[
106.652236,
10.763346
],
[
106.65184,
10.763564
],
[
106.651296,
10.763603
],
[
106.651313,
10.76329
],
[
106.651281,
10.7628
],
[
106.650694,
10.762969
],
[
106.6498,
10.763475
],
[
106.649074,
10.763686
],
[
106.648454,
10.764128
],
[
106.64823,
10.764644
],
[
106.647774,
10.764902
],
[
106.647289,
10.76501
],
[
106.64681,
10.765064
],
[
106.64627,
10.765323
],
[
106.645936,
10.765663
],
[
106.645447,
10.765917
],
[
106.644988,
10.766128
],
[
106.644608,
10.766234
],
[
106.644225,
10.766287
]
]
```
Tham số đang dùng:
- vehicle = 1
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.
https://tools.vietmap.vn/playground/map-matching?point=10.76272759672899,106.6538842265694&point=10.762410814059304,106.65327405390536&point=10.762785866195022,106.65270927200363&point=10.763346,106.652236&point=10.763564,106.65184&point=10.763603,106.651296&point=10.76329,106.651313&point=10.7628,106.651281&point=10.762969,106.650694&point=10.763475,106.6498&point=10.763686,106.649074&point=10.764128,106.648454&point=10.764644,106.64823&point=10.764902,106.647774&point=10.76501,106.647289&point=10.765064,106.64681&point=10.765323,106.64627&point=10.765663,106.645936&point=10.765917,106.645447&point=10.766128,106.644988&point=10.766234,106.644608&point=10.766287,106.644225&vehicle=1Mở Playground với đúng các tham số này — dùng để gắn vào tài liệu hoặc gửi đồng nghiệp. Link không chứa API key.
Nhập thông tin và bấm gửi yêu cầu để xem kết quả
Map Matching API là gì?
Map Matching API là gì?
Map Matching API (match-tolls) làm sạch dữ liệu GPS bằng cách khớp một chuỗi điểm GPS — thường lệch và thưa — vào đúng con đường xe đã đi, và cho biết xe đã qua những trạm thu phí nào cùng mức phí theo loại xe (từ loại 1 đến loại 5). Dữ liệu gửi lên là danh sách tọa độ theo thứ tự thời gian trong body JSON, dạng [kinh độ, vĩ độ].
Dùng để làm gì
- Đối soát phí cầu đường cho đội xe.
- Vẽ lại hành trình thật từ dữ liệu thiết bị giám sát.
- Tính quãng đường đã chạy chính xác hơn so với nối điểm GPS.
- Phát hiện xe đi sai tuyến đã giao.
Request mẫu
POST https://maps.vietmap.vn/api/match-tolls?apikey=YOUR_API_KEY&vehicle=1
body: [[106.65388, 10.76272], [106.65327, 10.76241], [106.65270, 10.76278]]Chú ý thứ tự [kinh độ, vĩ độ] — ngược với tham số point của Route.
Câu hỏi thường gặp về Map Matching API
- Map matching là gì?
- Map matching (snap to road) là khớp chuỗi tọa độ GPS — thường bị lệch, nhảy hoặc thưa — vào đúng con đường mà phương tiện thực sự đã đi. Kết quả là hành trình sạch, bám theo mạng lưới đường, dùng để vẽ lại lộ trình và tính quãng đường chính xác.
- API tính phí cầu đường thế nào?
- Từ hành trình đã khớp, match-tolls trả về các trạm thu phí xe đã đi qua cùng mức phí theo loại xe, từ loại 1 đến loại 5, chọn qua tham số vehicle.
- Dữ liệu GPS gửi lên theo định dạng nào?
- Body JSON là mảng tọa độ theo thứ tự thời gian, mỗi điểm dạng [kinh độ, vĩ độ] — ngược với tham số point của Route API.
- Dùng thử Map Matching API có mất phí không?
- Trên Playground có sẵn API key demo để gọi thử Map Matching 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á.