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;
}
}
}