5 releases (3 breaking)
0.4.0 | Mar 15, 2025 |
---|---|
0.3.0 | Feb 16, 2025 |
0.2.0 | Dec 25, 2024 |
0.1.1 | Jul 14, 2023 |
0.1.0 | Jul 11, 2023 |
#259 in Web programming
274 downloads per month
210KB
3K
SLoC
Rust API client for Valhalla
This crate contains the types and functions for interacting with the Valhalla API.
These APIs are implemented:
- Turn-by-Turn Route
- Optimized Route
- Time-Distance Matrix
- Isochrone & Isodistance
- Map Matching
- Valhalla locate
- Elevation
- Expansion
- Status
Features and usage
We provide two clients:
- async:
valhalla_client::Valhalla
and - sync:
valhalla_client::blocking::Valhalla
using the tokio runtime internally to call the async version
The second one is behind the (default-enabled) blocking
feature, so if you don't need it, you can disable it via default-features = false
.
We also offer the (default-enabled) gpx
feature.
This enables reading and writing GPX (GPS Exchange Format) files for APIs where we have the needed context.
Example
// an async version is available at valhalla_client::Valhalla
use valhalla_client::blocking::Valhalla;
use valhalla_client::route::{Location, Manifest};
use valhalla_client::costing::{Costing};
let valhalla = Valhalla::default();
let amsterdam = Location::new(4.9041, 52.3676);
let utrecht = Location::new(5.1214, 52.0907);
let manifest = Manifest::builder()
.locations([amsterdam, utrecht])
.costing(Costing::Motorcycle(Default::default()));
let response = valhalla.route(manifest).unwrap();
println!("{:#?}", response);
// If the gpx feature is enabled, you can convert the response to a gpx::Gpx object
// let gpx = response.trip.into();
For further examples, please see the different clients:
- async:
valhalla_client::Valhalla
and - sync:
valhalla_client::blocking::Valhalla
Dependencies
~8–20MB
~271K SLoC