1 个不稳定版本
0.1.0 | 2024年1月17日 |
---|
139 in 地理空间
8.5MB
180K SLoC
rs_osrm
Rust 对 osrm 的包装
需要安装 osrm 的依赖项
如何使用
- 创建一个 EngineConfigBulter,传入 .osrm 文件的路径。您可以更改其他设置,请参阅 osrm 文档。
- 使用构建器(例如:NearestRequestBuilder)创建一个请求对象(例如:NearestRequest)
- 在请求对象上调用 run 并传入 osrm。
Nearest 示例
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}");
}
}
}