예제 #1
0
        public async Task <CurrentObservation> GetConditions()
        {
            if (DateTime.UtcNow - lastUpdate > TimeSpan.FromMinutes(5))
            {
                lastUpdate = DateTime.UtcNow;

                var cond = await client.GetConditionsAsync(QueryType.GPS,
                                                           new QueryOptions()
                {
                    Latitude  = lat,
                    Longitude = lon,
                });

                _conditions = cond.CurrentObservation;
            }
            return(_conditions);
        }
예제 #2
0
        private string ParseResult(Weather weather)
        {
            if (weather.current_observation != null)
            {
                CurrentObservation o = weather.current_observation;
                DisplayLocation    d = o.display_location;

                string result = string.Format("Weather for {0}{1}: {2}, {3}", d.full, (d.zip != null ? " (" + d.zip + ")" : ""), o.weather, o.temperature_string);
                result += string.Format("; feels like {0}. {1} winds. {2} humidity", o.feelslike_string, o.wind_string, o.relative_humidity);
                if (o.precip_today_metric != null)
                {
                    result += string.Format("; {0} precipitation today", o.precip_today_string);
                }
                return(string.Format("{0}. {1}\n{2}", result, o.observation_time, o.forecast_url));
            }
            return(null);
        }
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            view = inflater.Inflate(Resource.Layout.CurrentConditionsFragment, container, false);

            ((MainActivity)this.Activity).StartProgressIndicator();

            Task.Run(async() =>
            {
                if (currentConditions == null)
                {
                    currentConditions = await WeatherService.Instance.GetCurrentConditions();
                }

                if (currentConditions != null)
                {
                    this.Activity.RunOnUiThread(() =>
                    {
                        var iconImage = view.FindViewById <ImageViewAsync>(Resource.Id.currentConditionIconImage);
                        ImageService.Instance.LoadUrl(currentConditions.IconUrl).IntoAsync(iconImage);

                        view.FindViewById <TextView>(Resource.Id.currentConditionsText).Text = currentConditions.Weather;
                        view.FindViewById <TextView>(Resource.Id.temperatureText).Text       = currentConditions.Temperature;
                        view.FindViewById <TextView>(Resource.Id.feelsLikeText).Text         = currentConditions.FeelsLike;
                        view.FindViewById <TextView>(Resource.Id.windText).Text      = currentConditions.WindDescription;
                        view.FindViewById <TextView>(Resource.Id.windChillText).Text = currentConditions.Windchill;
                        view.FindViewById <TextView>(Resource.Id.humidityText).Text  = currentConditions.RelativeHumidity;
                        view.FindViewById <TextView>(Resource.Id.dewpointText).Text  = currentConditions.Dewpoint;
                        view.FindViewById <TextView>(Resource.Id.heatIndexText).Text = currentConditions.HeatIndex;
                    });
                }

                ((MainActivity)this.Activity).StopProgressIndicator();
            });

            return(view);
        }
예제 #4
0
 public static double Gust(this CurrentObservation observation, SpeedUnits units, bool round = false)
 => getValueInUnits(units, observation?.wind_gust_mph, observation?.wind_gust_kph, round);
예제 #5
0
 public static double DewPoint(this CurrentObservation observation, TemperatureUnits units, bool round = false)
 => getValueInUnits(units, observation?.dewpoint_f, observation?.dewpoint_c, round);
예제 #6
0
 public static double FeelsLike(this CurrentObservation observation, TemperatureUnits units, bool round = false)
 => getValueInUnits(units, observation?.feelslike_f, observation?.feelslike_c, round);
예제 #7
0
 public static double Temp(this CurrentObservation observation, TemperatureUnits units, bool round = false)
 => getValueInUnits(units, observation?.temp_f, observation?.temp_c, round);
예제 #8
0
 public static string VisibilityString(this CurrentObservation observation, DistanceUnits units, bool round = false)
 => getValueStringInUnits(observation.Visibility(units, round), units);
예제 #9
0
 public static string PressureString(this CurrentObservation observation, PressureUnits units, bool round = false)
 => getValueStringInUnits(observation.Pressure(units, round), units);
예제 #10
0
 public static string PrecipTodayString(this CurrentObservation observation, LengthUnits units, bool round = false)
 => getValueStringInUnits(observation.PrecipToday(units, round), units);
예제 #11
0
 public static string GustString(this CurrentObservation observation, SpeedUnits units, bool round = false)
 => getWindString(observation.Gust(units, round), observation.wind_dir, units);
예제 #12
0
 public static string DewPointString(this CurrentObservation observation, TemperatureUnits units, bool round = false, bool degreeSymbol = false)
 => getTemperatureString(observation.DewPoint(units, round), degreeSymbol);
예제 #13
0
 public static double Visibility(this CurrentObservation observation, DistanceUnits units, bool round = false)
 => getValueInUnits(units, observation?.visibility_mi, observation?.visibility_km, round);
예제 #14
0
 public static double Pressure(this CurrentObservation observation, PressureUnits units, bool round = false)
 => getValueInUnits(units, observation?.pressure_in, observation?.pressure_mb, round);
예제 #15
0
 public static double PrecipToday(this CurrentObservation observation, LengthUnits units, bool round = false)
 => getValueInUnits(units, observation?.precip_today_in, observation?.precip_today_metric, round);