| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | using OASystem.Domain.ViewModels.JuHeExchangeRate;using OASystem.Domain.ViewModels.SmallFun;using System.Text.Json;namespace OASystem.API.OAMethodLib.GoogleMapAPI{    /// <summary>    /// 谷歌地图API    /// </summary>    public static class GoogleMapTools    {        private static string _appKey = "AIzaSyBdLf8u8DinXQWVPLEkdrxOJpClXSqEnho"; //谷歌地图AppKey        private static readonly HttpClient _httpClient = new HttpClient { BaseAddress = new Uri("https://maps.googleapis.com") };        /// <summary>        /// googleMapApi 获取距离And时间        /// </summary>        /// <param name="origin"></param>        /// <param name="destination"></param>        /// <returns></returns>        public static async Task<Result> 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<GoogleMapResultView>(strResponse,                        new JsonSerializerOptions() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase });                if (resultData.Status == "OK")                 {                    if (resultData.Routes == null)                    {                        result.Msg = resultData.Status;                        return result;                    }                    var data =  JsonConvert.DeserializeObject<dynamic>( 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;        }    }}
 |