50个版本
0.1.50 | 2024年2月29日 |
---|---|
0.1.47 | 2023年9月21日 |
0.1.46 | 2023年6月1日 |
0.1.44 | 2023年3月10日 |
0.1.16 | 2020年11月13日 |
#174 in 算法
155KB
4K SLoC
rsc_osrm
Rust封装的osrm
需要安装osrm的依赖项
要链接最终二进制文件,您需要:0. libosrm.a
- libboost_filesystem.so
- libboost_iostreams.so
- libboost_thread.so
- libboost_system.so
如何使用
- 创建一个EngineConfig,传递.osrm文件的路径。您可以更改其他设置,请参阅osrm文档。
- 通过Osrm::new创建一个Osrm,并传递配置。
- 创建一个请求对象(例如NearestRequest),建议始终使用::new以获取正确的默认值。
- 在请求对象上调用run并传递osrm。
最近示例
use rsc_osrm::{EngineConfig, Osrm, Algorithm, Status, route::RouteRequest, general::Coordinate};
fn main() {
let mut config = EngineConfig::new("<path to your .osrm file>");
config.use_shared_memory = false;
config.algorithm = Algorithm::MLD;
let osrm = Osrm::new(&mut config).unwrap();
let coords = vec!(Coordinate{latitude:12.98657118,longitude:77.56644753}, Coordinate{latitude:12.97436012,longitude:77.62567071});
let mut request = RouteRequest::new(&coords);
let (status,result) = request.run(&osrm);
match status{
Status::Ok => {
let route0 = &result.routes[0];
println!("eta: {}, eda: {}, geometry: {}",route0.duration, route0.distance, (route0.geometry).as_ref().unwrap());
}
_ => println!("call osrm failed"),
}
}
无运行时依赖项
~225KB