Matrix API
Matrix API tính toán ma trận một-nhiều, nhiều-một và nhiều-nhiều cho thời gian và khoảng cách. Nói một cách khác dễ hiểu hơn thì API này sẽ:
- Tính thời gian dự tính đi giữa các điểm trong 1 tập hợp điểm.
- Tính quãng đường đi giữa các điểm trong 1 tập hợp điểm.
Bạn có thể tham khảo ví dụ sử dụng Matrix API với JavaScript
URL
URL: /navigation/matrix/{profile}
Method
Method: POST
Parameters
* tham số yêu cầu.
| Tham số | Mô tả | Giá trị |
|---|---|---|
api_key* | Key xác thực để cho gọi dịch vụ | YOUR_API_KEY |
profile* | Loại phương tiện | driving-car, cycling-regular, foot-walking |
$ curl "https://api.ekgis.vn/navigation/matrix/{profile}?api_key={YOUR_API_KEY}"Body
* tham số yêu cầu.
| Tham số | Mô tả | Giá trị |
|---|---|---|
locations*(array) | Danh sách tọa độ bao gồm kinh độ, vĩ độ. Ít nhất có hai cặp tọa độ. | {longitude},{latitude};{longitude},{latitude};... Ví dụ: [[105.703,21.473],[106.2079,22.1538],[105.572,21.881]] |
destinations(array) | Một danh sách các chỉ số đề cập đến danh sách các vị trí (bắt đầu bằng 0). | all (mặc định), [{index_1},{index_2}[,{index_N} ...].Ví dụ: [0,3] cho vị trí thứ nhất và thứ 4 |
id(string) | ID của yêu cầu. | Ví dụ: "centrality_request" |
metrics(array) | Tùy chọn các số liệu được ma trận trả về. - duration(Mặc định) Trả về là thời gian tới điểm được tính bằng giây. - distance Trả về là quãng đường cho tới điểm với đơn vị được định nghĩa tại units | Ví dụ: ["duration"] |
resolve_locations(boolean) | Tùy chọn có trả về chi tiết các vị trí hay không. Nếu giá trị tham số được đặt thành true, thì mọi phần tử trong destinations và sources sẽ chứa phần tử name xác định tên của con phố gần nhất. | false (mặc định), true |
sources(array) | Một danh sách các chỉ số đề cập đến danh sách các vị trí (bắt đầu bằng 0). | all (mặc định), [{index_1},{index_2}[,{index_N} ...].Ví dụ: [0,3] cho vị trí thứ nhất và thứ 4 |
units(string) | Đơn vị khoảng cách. | m (mặc định), km, mile |
Ví dụ body gửi lên dạng JSON như sau:
{"locations": [[105.809657,21.012723],[105.909234,21.100042],[105.500047,21.000043]],"metrics": ["duration"],"resolve_locations": "true"}Response
Đối tượng trả về ma trận với các thông tin sau:
durations([[double]]): Kết quả theo thời gian.distances([[double]]): Kết quả theo quãng đường.sources([object]): Các giá trị điểm bắt đầu.location([double]): Tọa độ của điểm tiếp nhất trên biểu đồ.name(string): Tên đường gần nhất. (Chỉ khiresolve_locations=truevà chỉ khi có tên).snapped_distance(double): Khoảng cách sai lệch giữa Vị trísourcesvà điểm trên biểu đồ.
destinations([object]): Các giá trị điểm kết thúc.location([double]): Tọa độ của điểm gần nhất trên biểu đồ.name(string): Tên đường gần nhất. (Chỉ khiresolve_locations=truevà chỉ khi có tên).snapped_distance(double): Khoảng cách sai lệch giữa Vị trídestinationsvà điểm trên biểu đồ.
metadata(object): Thông tin về dịch vụ và yêu cầu.attribution(string): Thông tin về bản quyền.engine(object): Thông tin về dịch vụ routing.build_date(string): Ngày cập nhật dịch vụ.graph_date(string): Ngày cập nhật dữ liệu đồ thị.version(string): Phiên bản back-end của dịch vụ.
id(string): ID của yêu cầu.osm_file_md5_hash(string): Hàm băm MD5 của tệp OSM được sử dụng để tạo biểu đồ.query(object): Thông tin được sử dụng để tạo ra các routing.service(string): Dịch vụ được yêu cầu.system_message(string): Tin nhăn hệ thông.timestamp(integer): Thời gian thực hiện yêu cầu.
Ví dụ dữ liệu trả về dạng JSON:
{"durations": [[0,1555.58,1861.34],[1506.96,0,3273.98],[1872.21,3277.35,0]],"destinations": [{"location": [105.809657,21.012723],"name": "Ngõ Láng Trung","snapped_distance": 0.03},{"location": [105.909943,21.099842],"snapped_distance": 76.81},{"location": [105.500778,21.001021],"snapped_distance": 132.63}],"sources": [{"location": [105.809657,21.012723],"name": "Ngõ Láng Trung","snapped_distance": 0.03},{"location": [105.909943,21.099842],"snapped_distance": 76.81},{"location": [105.500778,21.001021],"snapped_distance": 132.63}],"metadata": {"attribution": "eKGIS JSC, OpenStreetMap contributors","service": "matrix","timestamp": 1686113103434,"query": {"locations": [[105.809657,21.012723],[105.909234,21.100042],[105.500047,21.000043]],"profile": "driving-car","responseType": "json","metricsStrings": ["DURATION"],"metrics": ["duration"],"resolve_locations": true},"engine": {"version": "6.7.0","build_date": "2023-06-02T13:39:24Z","graph_date": "2023-06-02T09:41:21Z"}}}