28个版本 (16个稳定版本)
2.0.3 | 2024年5月30日 |
---|---|
2.0.1 | 2022年11月18日 |
1.0.11 | 2021年5月19日 |
1.0.10 | 2020年10月24日 |
0.6.0 | 2020年3月8日 |
#284 in 解析器实现
每月118次下载
8.5MB
180K SLoC
rs_osrm
Rust对osrm的封装
需要已安装osrm的依赖项
如何使用
- 创建一个EngineConfigBulter,传递.osrm文件的路径。您可以更改其他设置,请参阅osrm文档。
- 使用构建器(例如NearestRequestBuilder)创建请求对象(例如NearestRequest)。
- 在请求对象上调用run,并传递osrm。
最近示例
use crate::{
engine_config::engine_config_builder::EngineConfigBuilder,
nearest_api::nearest_request_builder::NearestRequestBuilder, Status,
};
fn main() {
let osrm_result = EngineConfigBuilder::new("<PATH TO .osrm FILE>")
.set_use_shared_memory(false)
.set_algorithm(crate::Algorithm::MLD)
.build();
match osrm_result {
Ok(osrm) => {
let request = NearestRequestBuilder::new(57.804404, 13.448601)
.set_number_of_results(3)
.build();
match request {
Ok(mut nearest_request) => {
let (status, nearest_result) = nearest_request.run(&osrm);
if status == Status::Ok {
if nearest_result.code.is_some() {
println!("code: {}", nearest_result.code.unwrap());
}
if nearest_result.waypoints.is_some() {
for waypoint in nearest_result.waypoints.unwrap() {
println!(
"lat: {}, lon: {}, name: {}",
waypoint.location[1], waypoint.location[0], waypoint.name
);
}
}
} else {
if nearest_result.code.is_some() {
println!("code: {}", nearest_result.code.unwrap());
}
if nearest_result.message.is_some() {
println!("message: {}", nearest_result.message.unwrap());
}
}
}
Err(request_error) => {
eprintln!("{request_error}");
}
}
}
Err(osrm_error) => {
eprintln!("{osrm_error}");
}
}
}