pub struct WayPoint { /* private fields */ }Expand description
Encapsulates a waypoint.
Waypoints mark both the beginning and end of a route, and include intermediate stops along the route.
See https://developers.google.com/maps/documentation/routes/reference/rest/v2/Waypoint
Implementations§
Source§impl WayPoint
impl WayPoint
Sourcepub fn new_from_location(
location: Location,
params: Option<HashMap<String, Value>>,
) -> Result<Self>
pub fn new_from_location( location: Location, params: Option<HashMap<String, Value>>, ) -> Result<Self>
Examples found in repository?
examples/route_service.rs (line 31)
23async fn get_route() -> Result<()> {
24 dotenv().ok();
25
26 // api auth
27 let api_key = env::var("API_KEY")?;
28 let mut route_service = RouteService::new_with_api_key(api_key);
29
30 let masks = vec!["routes.duration", "routes.distanceMeters"];
31 let origin = WayPoint::new_from_location(Location::new(37.419734, -122.0827784, None), None)?;
32 let destination = WayPoint::new_from_location(Location::new(35.419734, -100.0827784, None), None)?;
33
34 let mut mid_waypoint_option: HashMap<String, Value> = HashMap::new();
35 mid_waypoint_option.insert("via".to_string(), true.into());
36
37 let mut route_option: HashMap<String, Value> = HashMap::new();
38 // let mid_waypoint = WayPoint::new_from_place_id("ChIJgUbEo8cfqokR5lP9_Wh_DaM", Some(mid_waypoint_option))?;
39 // route_option.insert("intermediates".to_owned(), serde_json::to_value(vec![mid_waypoint.clone()])?);
40 route_option.insert("travelMode".to_owned(), serde_json::to_value(RouteTravelMode::Drive)?);
41 route_option.insert("routingPreference".to_owned(), serde_json::to_value(RoutingPreference::TrafficAwareOptimal)?);
42 // route_option.insert("departureTime".to_owned(), serde_json::to_value(Utc::now() + Duration::seconds(60 * 60 * 24))?);
43 // let route_modifiers = RouteModifiers::new(Some(true), Some(true), Some(true), None, None, None);
44 // route_option.insert("routeModifiers".to_owned(), serde_json::to_value(route_modifiers)?);
45 // route_option.insert("requestedReferenceRoutes".to_owned(), serde_json::to_value(vec![ReferenceRoute::FuelEfficient])?);
46 let transit_preference = TransitPreferences::new(Some(vec![TransitTravelMode::Bus]), None);
47 route_option.insert("transitPreferences".to_owned(), serde_json::to_value(transit_preference)?);
48
49 let response = route_service.get_route(&origin, &destination, Some(masks.clone()), Some(route_option.clone())).await?;
50 println!("response: {}", serde_json::to_string_pretty(&response)?);
51
52
53 // service account auth
54 let filepath: PathBuf = PathBuf::from_str("credentials.json")?;
55 let credentials = ServiceAccountCredentials::from_service_account_file(filepath)?;
56 let mut route_service = RouteService::new_with_credentials(credentials);
57 let response = route_service.get_route(&origin, &destination, Some(masks.clone()), Some(route_option.clone())).await?;
58 println!("response: {}", serde_json::to_string(&response)?);
59
60 Ok(())
61}
62
63
64async fn get_route_matrix() -> Result<()> {
65 dotenv().ok();
66
67 // api auth
68 let api_key = env::var("API_KEY")?;
69 let mut route_service = RouteService::new_with_api_key(api_key);
70
71 let masks = vec!["originIndex", "destinationIndex", "status", "condition", "distanceMeters", "duration"];
72 let origin = WayPoint::new_from_location(Location::new(37.419734, -122.0827784, None), None)?;
73 let destination = WayPoint::new_from_location(Location::new(35.419734, -100.0827784, None), None)?;
74
75 let mut route_option: HashMap<String, Value> = HashMap::new();
76 // let mid_waypoint = WayPoint::new_from_place_id("ChIJgUbEo8cfqokR5lP9_Wh_DaM", Some(mid_waypoint_option))?;
77 // route_option.insert("intermediates".to_owned(), serde_json::to_value(vec![mid_waypoint.clone()])?);
78 route_option.insert("travelMode".to_owned(), serde_json::to_value(RouteTravelMode::Drive)?);
79
80 let response = route_service.get_route_matrix(&vec![RouteMatrixOrigin::new(&origin)], &vec![RouteMatrixOrigin::new(&destination)], Some(masks.clone()), Some(route_option.clone())).await?;
81 println!("response: {}", serde_json::to_string_pretty(&response)?);
82
83
84 // service account auth
85 let filepath: PathBuf = PathBuf::from_str("credentials.json")?;
86 let credentials = ServiceAccountCredentials::from_service_account_file(filepath)?;
87 let mut route_service = RouteService::new_with_credentials(credentials);
88 let response = route_service.get_route_matrix(&vec![RouteMatrixOrigin::new(&origin)], &vec![RouteMatrixOrigin::new(&destination)], Some(masks.clone()), Some(route_option.clone())).await?;
89 println!("response: {}", serde_json::to_string_pretty(&response)?);
90
91 Ok(())
92}pub fn new_from_place_id( place_id: &str, params: Option<HashMap<String, Value>>, ) -> Result<Self>
pub fn new_from_address( address: &str, params: Option<HashMap<String, Value>>, ) -> Result<Self>
Trait Implementations§
Source§impl<'de> Deserialize<'de> for WayPoint
impl<'de> Deserialize<'de> for WayPoint
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for WayPoint
impl RefUnwindSafe for WayPoint
impl Send for WayPoint
impl Sync for WayPoint
impl Unpin for WayPoint
impl UnwindSafe for WayPoint
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more