1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
use std::env::temp_dir; use std::fs::File; use std::io::Write; use uuid::Uuid; pub fn download_osm_data_by_bbox( left: f64, bottom: f64, right: f64, top: f64, ) -> Result<String, Box<dyn std::error::Error>> { let query = format!( "https://overpass-api.de/api/map?bbox={},{},{},{}", left, bottom, right, top ); let client = reqwest::blocking::Client::builder() .user_agent("osm-geo-mapper") .build()?; let response = client.get(&query).send()?; let result = response.text()?; let mut tempfile = temp_dir(); tempfile.push(Uuid::new_v4().to_string()); tempfile.set_extension("xml"); let mut file = File::create(&tempfile)?; write!(file, "{}", result)?; Ok(tempfile.as_path().to_str().unwrap().to_string()) }