Пример #1
0
        /// <summary>
        /// Contiene los resultados de la consulta al indice semántico y carga las listas para
        /// desplegar los dispositivos en la pantalla.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void ob_RetornarMapaLugarDatapointsCompleted(object sender, RetornarMapaLugarDatapointsCompletedEventArgs e)
        {
            arrayFeeds = e.Result;

            try
            {
                string[] lista        = new string[arrayFeeds.Length];
                string[] listaFeedIDs = new string[arrayFeeds.Length];

                for (int i = 0; i < arrayFeeds.Length; i++)
                {
                    lista[i]        = arrayFeeds[i].feed.location.name;
                    listaFeedIDs[i] = arrayFeeds[i].feed.id;
                }

                this.LP.ItemsSource        = lista;
                this.LP_FeedID.ItemsSource = listaFeedIDs;
                txtEspera.Text             = "";
                txtEsperaFeed.Text         = "";
                btnBuscar.Visibility       = System.Windows.Visibility.Visible;
            }
            finally
            {
            }
        }
        /// <summary>
        /// Se recupera los feedXively que corresponden a los parametros de la busqueda indicados
        /// posteriormente se analiza la información y si se muestra la alerta de como es
        /// la calidad del aire en la proximidad de un radio determinado.
        /// </summary>
        /// <param name="sender">Objeto enviante</param>
        /// <param name="e">Resultados</param>
        void ob1_RetornarMapaLugarDatapointsCompleted(object sender, RetornarMapaLugarDatapointsCompletedEventArgs e)
        {
            FeedXively[] arrayFeeds = e.Result;
            try
            {
                if (bandAlerta == true)
                {
                    miAlerta.cancelar();
                }

                bandAlerta          = false;
                tblInfoPeligro.Text = "";
                for (int i = 0; i < arrayFeeds.Length; i++)
                {
                    PagListaSensores color = new PagListaSensores();
                    if (color.riesgo(arrayFeeds[i].feed) == 3)
                    {
                        bandAlerta         = true;
                        DispositivoCercano = arrayFeeds[i].feed.id;
                    }
                }


                if (bandAlerta == true)
                {
                    miAlerta = new Alerta();
                    miAlerta.iniciar(mediaControl);
                }
            }
            finally
            {
            }
        }
Пример #3
0
        /// <summary>
        /// Se recupera los feedXively que corresponden a los parametros de la busqueda indicados
        /// posteriormente se analiza la información y si se muestra la alerta de como es
        /// la calidad del aire en la proximidad de un radio determinado.
        /// </summary>
        /// <param name="sender">Objeto enviante</param>
        /// <param name="e">Resultados</param>
        void ob1_RetornarMapaLugarDatapointsCompleted(object sender, RetornarMapaLugarDatapointsCompletedEventArgs e)
        {
            //Se toman los resultados de la consulta
            FeedXively[] misFeed = e.Result;

            try
            {
                //Si hay resultados se evalua el dato mas cercano
                if (misFeed.Length > 0)
                {
                    String mensaje = "";
                    feedCapturado = misFeed[0].feed.id.ToString();
                    PagListaSensores tipoAlerta = new PagListaSensores();

                    if (tipoAlerta.riesgo(misFeed[0].feed) == 1)
                    {
                        mensaje = misFeed[0].feed.location.name + "\nEsta área presenta\nuna concentracion de aire\nsegura para respirar";
                    }
                    else if (tipoAlerta.riesgo(misFeed[0].feed) == 2)
                    {
                        mensaje = misFeed[0].feed.location.name + "\nEsta área presenta\n una concentracion de aire\nno tan segura para respirar";
                    }
                    else
                    {
                        mensaje = misFeed[0].feed.location.name + "\nEsta área presenta\nuna concentracion de aire\nPELIGROSA ";
                    }

                    //Otra forma de mostrar mensaje... plan b

                    /*if (MessageBox.Show(mensaje, "Mensaje de alerta", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
                     * {
                     *  NavigationService.Navigate(new Uri("/Views/PagInfoSensores.xaml?feedId=" + misFeed[0].feed.id.ToString(), UriKind.Relative));
                     * }*/

                    //Se muestra el mensaje en pantalla de la Alerta que corresponda.
                    if (!Guide.IsVisible)
                    {
                        iniciarSonido();
                        Guide.BeginShowMessageBox("Alerta", mensaje, new string[] { "Detalles", "Omitir" }, 1,
                                                  MessageBoxIcon.None,
                                                  new AsyncCallback(OnMessageBoxClosed), null); //Invocación a OnMessageBoxClosed
                    }
                }
            }
            finally
            {
            }
        }
        /// <summary>
        /// Contiene los resultados de la consulta hecha al indice semántico, posteriormente se
        /// pinta en pantalla los cuadros que indican con colores el nivel de riesgo, y un botón
        /// para poder ver en detalle la información del dispositivo.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void c_RetornarMapaLugarDatapointsCompleted(object sender, RetornarMapaLugarDatapointsCompletedEventArgs e)
        {
            //Obtención de resultados
            listaFeeds = e.Result;
            try
            {
                int numeroDispositivos = listaFeeds.Length;
                int tamListaDefRow     = numeroDispositivos;

                //Borrar la lista de definiciones de filas y columnas, para poder pintar de nuevo cada actualización
                listaDispositivos.RowDefinitions.Clear();
                listaDispositivos.ColumnDefinitions.Clear();
                listaDispositivos.Children.Clear();

                //Definición de columnas
                ColumnDefinition defCol1 = new ColumnDefinition();
                ColumnDefinition defCol2 = new ColumnDefinition();
                defCol1.Width = new GridLength();
                defCol2.Width = new GridLength();

                //Cargando con la configuración básica para los dispositivos
                listaDispositivos.ColumnDefinitions.Add(defCol1);
                listaDispositivos.ColumnDefinitions.Add(defCol2);
                List <RowDefinition> listaDefRow = definicionRows(numeroDispositivos);

                for (int i = 0; i < tamListaDefRow; i++)
                {
                    listaDispositivos.RowDefinitions.Add(listaDefRow[i]);
                }



                //-------------Ya se ha cargado la configuración basica----------------
                //A cargar los dispositivos..
                for (int i = 0; i < numeroDispositivos; i++)
                {
                    String tipo = "";
                    //En riesgo(valor) el valor q debe ir ahi es algun valor calculado para decidir si esta en riesgo o no
                    switch (riesgo(listaFeeds[i].feed))
                    {
                    case 1: tipo = "RectanguloDispositivoBueno"; break;

                    case 2: tipo = "RectanguloDispositivoAceptable"; break;

                    case 3: tipo = "RectanguloDispositivoMalo"; break;
                    }

                    Rectangle rectangulo = new Rectangle();
                    rectangulo.Style  = Application.Current.Resources[tipo] as Style;
                    rectangulo.Margin = new Thickness(10);

                    Button b = new Button();
                    b.Content     = listaFeeds[i].feed.location.name;
                    b.FontSize    = 15;
                    b.Background  = new SolidColorBrush(Colors.Black);
                    b.Foreground  = new SolidColorBrush(Colors.White);
                    b.BorderBrush = new SolidColorBrush(Colors.Black);
                    b.Width       = 400;
                    b.Height      = 70;
                    b.Click      += b_Click;
                    //b.Margin = new Thickness(2);
                    b.Name = listaFeeds[i].feed.id;
                    b.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
                    Grid.SetRow(rectangulo, i);
                    Grid.SetColumn(rectangulo, 0);
                    Grid.SetRow(b, i);
                    Grid.SetColumn(b, 1);


                    //Se añaden los dispositivos..
                    listaDispositivos.Children.Add(rectangulo);
                    listaDispositivos.Children.Add(b);
                    listaRectangulos.Add(rectangulo);
                }
            }
            finally
            {
            }
        }
        /// <summary>
        /// Método asincrono donde recupera los feedXively que corresponden a los parametros de la busqueda indicados
        /// posteriormente se analiza la información y se pinta en el mapa.
        /// </summary>
        /// <param name="sender">Objeto enviante</param>
        /// <param name="e">Resultados</param>
        public void ob_RetornarMapaLugarDatapointsCompleted(object sender, RetornarMapaLugarDatapointsCompletedEventArgs e)
        {
            /// Se recupera el resultado de la busqueda
            FeedXively[] arrayFeeds = e.Result;

            mapWithMyLocation.Layers.Clear();//Para borrar las capas que hay en el momento para cuando se actualiza

            /*if (bandAlerta == true)
             *  miAlerta.cancelar();
             * bandAlerta = false;*/

            try
            {
                if (bandera == false)
                {
                    this.mapWithMyLocation.Center    = pin.GeoCoordinate;
                    this.mapWithMyLocation.ZoomLevel = 20;
                }
            }
            catch (Exception) { }
            finally { }

            try
            {
                for (int i = 0; i < arrayFeeds.Length; i++)
                {
                    //Se crea un nuevo PushPin en las coordenadas de un Dispositivo
                    pin = new Pushpin();
                    pin.GeoCoordinate = new GeoCoordinate(double.Parse(arrayFeeds[i].feed.location.lat /*.Replace(".", ",")*/), double.Parse(arrayFeeds[i].feed.location.lon /*.Replace(".", ",")*/));

                    //////////////Logica para asignar contenido y color
                    PagListaSensores color = new PagListaSensores();
                    if (color.riesgo(arrayFeeds[i].feed) == 1)
                    {
                        pin.Content    = "D" + (i + 1) + ": Aire puro";
                        pin.Background = new SolidColorBrush(Colors.Green);
                    }
                    else if (color.riesgo(arrayFeeds[i].feed) == 2)
                    {
                        pin.Content    = "D" + (i + 1) + ": Precaucion\n";          // +"Aire riesgoso";
                        pin.Background = new SolidColorBrush(Colors.Orange);
                    }
                    else if (color.riesgo(arrayFeeds[i].feed) == 3)
                    {
                        pin.Content    = "D" + (i + 1) + ": Peligro\n";             // +"Aire contaminado";
                        pin.Background = new SolidColorBrush(Colors.Red);
                        //bandAlerta = true;
                        if (arrayFeeds[i].feed.id.Equals(DispositivoCercano))
                        {
                            textoAlerta.Text    = "Alerta! Está en zona contaminada:";
                            tblInfoPeligro.Text = "\n" + "D" + (i + 1) + ": " + arrayFeeds[i].feed.location.name;
                        }
                    }
                    pin.Name = arrayFeeds[i].feed.id;
                    pin.MouseLeftButtonUp += new System.Windows.Input.MouseButtonEventHandler(click);
                    //////////////////////////////////////////////////////

                    /// Se añaden al mapa cada PushPin
                    MapOverlay myLocationOverlay = new MapOverlay();
                    myLocationOverlay.Content        = pin;
                    myLocationOverlay.PositionOrigin = new Point(0.5, 0.5);
                    myLocationOverlay.GeoCoordinate  = pin.GeoCoordinate;

                    MapLayer myLocationLayer = new MapLayer();
                    myLocationLayer.Add(myLocationOverlay);
                    mapWithMyLocation.Layers.Add(myLocationLayer);
                }
            }
            finally
            {
                miLocalizacion();       //Se establece nuevamente mi ubicación
            }
        }