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 |
#55 in Geospatial
361 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–19MB
~270K SLoC