| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- using cwebplusApp.Shared.Models;
- using FisSst.BlazorMaps;
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using System.Net.Http;
- using System.Threading.Tasks;
-
- namespace cwebplusApp.Shared.Services {
- public class NominatimService {
-
- public static async ValueTask<NominatimReverseAddress> GetAddressForCoordinates(double latitude, double longitude) {
- string lat = latitude.ToString("0.0000000000", CultureInfo.InvariantCulture);
- string lng = longitude.ToString("0.0000000000", CultureInfo.InvariantCulture);
-
- HttpClient httpClient = new() { BaseAddress = new Uri("https://nominatim.openstreetmap.org/") };
- try {
- HttpResponseMessage httpResult = await httpClient.GetAsync(string.Format("reverse?format=json&accept-language={0}&lat={1}&lon={2}",
- CultureInfo.CurrentCulture.Name, lat, lng));
- if (httpResult.StatusCode == System.Net.HttpStatusCode.OK) {
- string contentStr = await httpResult.Content.ReadAsStringAsync();
- NominatimReverseAddress addressDto = JsonConvert.DeserializeObject<NominatimReverseAddress>(contentStr);
- return addressDto;
- }
- return null;
-
- } catch (Exception) {
- return null;
- }
- }
-
-
- public static async ValueTask<LatLng> GetCoordinatesForAddress(string addressZipCity) {
- HttpClient httpClient = new() { BaseAddress = new Uri("https://nominatim.openstreetmap.org/") };
- try {
- HttpResponseMessage httpResult = await httpClient.GetAsync(string.Format("search?q={0}&format=json", addressZipCity));
- if (httpResult.StatusCode == System.Net.HttpStatusCode.OK) {
- string contentStr = await httpResult.Content.ReadAsStringAsync();
- var settings = new JsonSerializerSettings();
- settings.NullValueHandling = NullValueHandling.Ignore;
- List<NominatimCoordinates> coordinatesDtos = JsonConvert.DeserializeObject<List<NominatimCoordinates>>(contentStr, settings);
- return new LatLng(coordinatesDtos[0].lat, coordinatesDtos[0].lon);
- }
- return null;
-
- } catch (Exception) {
- return null;
- }
- }
-
-
- }
- public class NominatimCoordinates {
- public double lat;
- public double lon;
- }
- }
|