using OASystem.Domain.ViewModels.SmallFun; using System.Text.Json; namespace OASystem.API.OAMethodLib.GoogleMapAPI { /// /// 谷歌地图API /// public static class GoogleMapTools { private static string _appKey = "AIzaSyBdLf8u8DinXQWVPLEkdrxOJpClXSqEnho"; //谷歌地图AppKey private static readonly HttpClient _httpClient = new HttpClient { BaseAddress = new Uri("https://maps.googleapis.com") }; /// /// googleMapApi 获取距离And时间 /// /// /// /// public static async Task GetForeignAndTime(string origin, string destination) { var result = new Result() { Code = -2, Msg = "未知错误" }; if (string.IsNullOrEmpty(origin) || string.IsNullOrEmpty(destination)) { result.Msg = "起始地或目的地为空"; return result; } string url = string.Format(@"/maps/api/directions/json?origin={0}&destination={1}&key={2}", origin, destination, _appKey); var req = await _httpClient.GetAsync(url); if (req.IsSuccessStatusCode) { var strResponse = await req.Content.ReadAsStringAsync(); var resultData = System.Text.Json.JsonSerializer.Deserialize(strResponse, new JsonSerializerOptions() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }); if (resultData.Status == "OK") { if (resultData.Routes == null) { result.Msg = resultData.Status; return result; } var data = JsonConvert.DeserializeObject(resultData.Routes.ToJson()); var dataView = new DistanceAndTimeView { DistanceText = data[0]["legs"][0]["distance"]["text"].ToString(), DistanceValue = data[0]["legs"][0]["distance"]["value"], DurationText = data[0]["legs"][0]["duration"]["text"].ToString(), DurationValue = data[0]["legs"][0]["duration"]["value"], }; result.Code = 0; result.Data = dataView; } else { result.Msg = resultData.Status; } } else { result.Msg = "GoogleMapApi接口网络异常链接超时"; } return result; } } }