/// <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 { } }
/// <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 } }