public override double GetElevationFromWebService(double lat, double lng) { if (string.IsNullOrEmpty(ApiKey)) { _logger.Trace("No Google API key set, returning elevation 0."); return(0); } double elevationInMeters = 0; try { string url = $"https://maps.googleapis.com/maps/api/elevation/json?key={ApiKey}&locations={lat},{lng}"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Credentials = CredentialCache.DefaultCredentials; request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2"; request.ContentType = "application/json"; request.ReadWriteTimeout = 2000; using (WebResponse response = request.GetResponse()) { using (Stream dataStream = response.GetResponseStream()) using (StreamReader reader = new StreamReader(dataStream)) { string responseFromServer = reader.ReadToEnd(); GoogleResponse googleResponse = JsonConvert.DeserializeObject <GoogleResponse>(responseFromServer); if (googleResponse.Status != "OK") { _logger.Warn("Request to Google API failed: {0}", googleResponse.ErrorMessage); } else { if (googleResponse.Results != null && googleResponse.Results.Count != 0) { elevationInMeters = googleResponse.Results[0].Elevation; } } } } } catch (Exception ex) { _logger.Error(ex, "Could not get elevation/altitude. Returning 0."); elevationInMeters = 0; } return(elevationInMeters); }
public override double GetElevationFromWebService(double lat, double lng) { if (string.IsNullOrEmpty(_apiKey)) { return(0); } try { string url = $"https://maps.googleapis.com/maps/api/elevation/json?key={_apiKey}&locations={lat},{lng}"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Credentials = CredentialCache.DefaultCredentials; request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2"; request.ContentType = "application/json"; request.ReadWriteTimeout = 2000; string responseFromServer = ""; using (WebResponse response = request.GetResponse()) { using (Stream dataStream = response.GetResponseStream()) using (StreamReader reader = new StreamReader(dataStream)) { responseFromServer = reader.ReadToEnd(); GoogleResponse googleResponse = JsonConvert.DeserializeObject <GoogleResponse>(responseFromServer); if (googleResponse.status == "OK" && googleResponse.results != null && 0 < googleResponse.results.Count && googleResponse.results[0].elevation > -100) { return(googleResponse.results[0].elevation); } // All error handling is handled inside of the ElevationService. } } } catch (ActiveSwitchByRuleException ex) { throw ex; } catch (Exception) { // If we get here for any reason, then just drop down and return 0. } return(0); }
public override async Task <double> GetElevationFromWebService(double lat, double lng) { if (string.IsNullOrEmpty(_apiKey)) { return(0); } using (HttpClient client = new HttpClient()) { try { string url = $"https://maps.googleapis.com/maps/api/elevation/json?key={_apiKey}&locations={lat},{lng}"; var responseContent = await client.GetAsync(url).ConfigureAwait(false); if (responseContent.StatusCode != HttpStatusCode.OK) { return(0); } var responseFromServer = await responseContent.Content.ReadAsStringAsync().ConfigureAwait(false); GoogleResponse googleResponse = JsonConvert.DeserializeObject <GoogleResponse>(responseFromServer); if (googleResponse.Status == "OK" && googleResponse.Results != null && 0 < googleResponse.Results.Count && googleResponse.Results[0].Elevation > -100) { return(googleResponse.Results[0].Elevation); } } catch (ActiveSwitchByRuleException ex) { throw ex; } catch (Exception) { // If we get here for any reason, then just drop down and return 0. Will cause this elevation service to be blacklisted. } } return(0); }