public IActionResult GetWeather() { var longitude = Request.Query["long"].ToString(); var latitude = Request.Query["lat"].ToString(); var realTimeInfo = CaiyunService.GetRealtimeInfo(longitude, latitude); var getWeatherVm = new GetWeatherVm(); var realtimeClimateInfo = new RealtimeClimateInfo(); getWeatherVm.RealtimeClimateInfo = realtimeClimateInfo; realtimeClimateInfo.Address = Request.Query["address"].ToString(); realtimeClimateInfo.AQI = realTimeInfo.Item5; //otherRealtimeInfo.NearRainDistance = realTimeInfo.Item4; realtimeClimateInfo.PM = realTimeInfo.Item3; realtimeClimateInfo.Tempture = realTimeInfo.Item6; realtimeClimateInfo.LocalPrecipitation = realTimeInfo.Item7;//增加本地降水量指标 getWeatherVm.ClimateInfo = CaiyunService.GetPrediction(realtimeClimateInfo, longitude, latitude).Item2; return(View(getWeatherVm)); }
public static Tuple <bool, ClimateInfo> GetPrediction(RealtimeClimateInfo realtimeClimateInfo, string longitude, string latitude) { var url = $"http://api.caiyunapp.com/v2/{key}/{longitude},{latitude}/forecast.json"; var getData = "unit=metric:v2"; var result = HttpHelper.HttpGet($"{url}?{getData}"); if (JsonHelper.GetString(result, "status") != "ok") { LogHelper.Error("获取天气预报信息错误:" + result); return(null); } realtimeClimateInfo.ClimateDescription = JsonHelper.GetString(result, "result", "hourly", "description"); realtimeClimateInfo.RainDescription = JsonHelper.GetString(result, "result", "minutely", "description"); var climateInfo = new ClimateInfo(); climateInfo.Temperatures = JsonHelper.Get <List <Dictionary <string, string> > >(result, "result", "daily", "temperature"); climateInfo.AQIs = JsonHelper.Get <List <Dictionary <string, string> > >(result, "result", "daily", "aqi"); climateInfo.PMs = JsonHelper.Get <List <Dictionary <string, string> > >(result, "result", "daily", "pm25"); climateInfo.Skycons = JsonHelper.Get <List <Dictionary <string, string> > >(result, "result", "daily", "skycon"); climateInfo.Precipitations = JsonHelper.Get <List <Dictionary <string, string> > >(result, "result", "daily", "precipitation"); return(new Tuple <bool, ClimateInfo>(true, climateInfo)); }