Skip to content

Instantly share code, notes, and snippets.

@denysvitali
Created April 10, 2018 19:04
Show Gist options
  • Select an option

  • Save denysvitali/5e394c13ded4cf0b89475a239d9d194b to your computer and use it in GitHub Desktop.

Select an option

Save denysvitali/5e394c13ded4cf0b89475a239d9d194b to your computer and use it in GitHub Desktop.
fn deg2meter_lng(lng: f64) -> f64 {
111412.84 * lng.cos() - 93.5 * (3.0 * lng).cos() + 0.118 * (5.0 * lng).cos()
}
fn deg2meter_lat(lat: f64) -> f64 {
111132.92 - 559.82 * (2.0 *lat).cos() + 1.175 * (4.0 *lat).cos() - 0.0023 * (6.0 *lat).cos()
}
fn get_stops_by_coordinates(c1: Coordinate, c2: Coordinate, r1: f64, r2: f64) -> String {
let result : Vec<Stop> = Vec::new();
// LAT = North to South (Y)
// LNG = East to West (X)
let mut p1 : Coordinate = Coordinate {
lat: 0.0,
lng: 0.0
};
let mut p2 : Coordinate = Coordinate {
lat: 0.0,
lng: 0.0
};
if c1.lng < c2.lng {
// Blue
p1.lng = c1.lng + r1 * 1.0/deg2meter_lng(c1.lng);
p1.lat = c1.lat - r1 * 1.0/deg2meter_lat(c1.lat);
p2.lng = c2.lng - r2 * 1.0/deg2meter_lng(c2.lng);
p2.lat = c2.lat - r2 * 1.0/deg2meter_lat(c2.lat);
} else if c1.lng > c2.lng {
// Orange
p1.lng = c2.lng + r2 * 1.0/deg2meter_lng(c2.lng);
p1.lat = c2.lat + r2 * 1.0/deg2meter_lat(c2.lat);
p2.lng = c1.lng - r1 * 1.0/deg2meter_lng(c2.lng);
p2.lat = c1.lat - r1 * 1.0/deg2meter_lat(c2.lat);
}
else {
if c1.lng > c2.lng {
// Orange
p1.lng = c2.lng + r2 * 1.0/deg2meter_lng(c2.lng);
p1.lat = c2.lat + r2 * 1.0/deg2meter_lat(c2.lat);
p2.lng = c1.lng - r1 * 1.0/deg2meter_lng(c2.lng);
p2.lat = c1.lat - r1 * 1.0/deg2meter_lat(c2.lat);
} else {
// Blue
p1.lng = c1.lng + r1 * 1.0/deg2meter_lng(c1.lng);
p1.lat = c1.lat - r1 * 1.0/deg2meter_lat(c1.lat);
p2.lng = c2.lng - r2 * 1.0/deg2meter_lng(c2.lng);
p2.lat = c2.lat - r2 * 1.0/deg2meter_lat(c2.lat);
}
}
println!("P1: {}, {}", p1.lat, p1.lng);
println!("P2: {}, {}", p2.lat, p2.lng);
format!(r#"
<img src="https://maps.googleapis.com/maps/api/staticmap?center={0},{1}&zoom=16&scale=1&size=600x300&maptype=roadmap&format=png&visual_refresh=true&markers=size:mid%7Ccolor:0x009fff%7Clabel:A%7C{0},{1}">
<img src="https://maps.googleapis.com/maps/api/staticmap?center={2},{3}&zoom=16&scale=1&size=600x300&maptype=roadmap&format=png&visual_refresh=true&markers=size:mid%7Ccolor:0x009fff%7Clabel:B%7C{2},{3}">"#,
p1.lat, p1.lng,
p2.lat, p2.lng)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment