private void EnDibujóElementos(object elEnviador, EventArgs losArgumentos) { miMapa.PuntosAddicionales.Clear(); double mínimaLatitud = double.PositiveInfinity; double máximaLatitud = double.NegativeInfinity; double mínimaLongitud = double.PositiveInfinity; double máximaLongitud = double.NegativeInfinity; // Dibuja los nodos como puntos addicionales para resaltarlos. foreach (int índiceSeleccionado in miLista.SelectedIndices) { ElementoConEtiqueta elemento = (ElementoConEtiqueta)miLista.Items[índiceSeleccionado].Tag; InformaciónNodoDesconectado posibleNodoDesconectado = (InformaciónNodoDesconectado)elemento.Etiqueta; // Dibuja la vía destino. miMapa.PolilíneasAdicionales.Add(new InterfaseMapa.PolilíneaAdicional( posibleNodoDesconectado.NodoDestino.Vía.Coordenadas, miLápizDeViaDestino)); // Dibuja los nodos y los nodos ruteables DibujaNodos(posibleNodoDesconectado.PosibleNodoDesconectado.Vía); DibujaNodos(posibleNodoDesconectado.NodoDestino.Vía); // Dibuja el nodo destino. miMapa.PuntosAddicionales.Add(new InterfaseMapa.PuntoAdicional( posibleNodoDesconectado.NodoDestino.Coordenadas, miPincelDeBordeDeNodo, 11)); // Dibuja el posible nodo desconectado. miMapa.PuntosAddicionales.Add(new InterfaseMapa.PuntoAdicional( posibleNodoDesconectado.PosibleNodoDesconectado.Coordenadas, miPincelDeBordeDeNodo, 13)); miMapa.PuntosAddicionales.Add(new InterfaseMapa.PuntoAdicional( posibleNodoDesconectado.PosibleNodoDesconectado.Coordenadas, miPincelDePosibleNodoDesconectado, 9)); InterfaseMapa.ActualizaRectánguloQueEncierra( posibleNodoDesconectado.PosibleNodoDesconectado.Coordenadas, ref mínimaLatitud, ref máximaLatitud, ref mínimaLongitud, ref máximaLongitud); } // Muestra los nodos desconectados. const float margen = 0.0001f; RectangleF rectánguloVisible = new RectangleF( (float)mínimaLongitud - margen, (float)mínimaLatitud - margen, (float)(máximaLongitud - mínimaLongitud) + (2 * margen), (float)(máximaLatitud - mínimaLatitud) + (2 * margen)); miMapa.RectánguloVisibleEnCoordenadas = rectánguloVisible; }
private void EnClick(object laLista, MouseEventArgs losArgumentosDelRatón) { // Obtiene el grupo seleccionado. ListView lista = (ListView)laLista; ListViewHitTestInfo información = lista.HitTest(losArgumentosDelRatón.Location); ListViewGroup grupo = información.Item.Group; List <Pdi> pdis = (List <Pdi>)grupo.Tag; // Busca el rango visible para los PDIs. IList <ElementoDelMapa> elementos = new List <ElementoDelMapa>(pdis.ToArray()); RectangleF rectánguloQueEncierra = InterfaseMapa.RectanguloQueEncierra(elementos); const float margen = 0.0001f; RectangleF rectánguloVisible = new RectangleF( rectánguloQueEncierra.X - margen, rectánguloQueEncierra.Y - margen, rectánguloQueEncierra.Width + (2 * margen), rectánguloQueEncierra.Height + (2 * margen)); // Dibuja los PDIs como PDIs adicionales para resaltarlos. miMapa.PuntosAddicionales.Clear(); Pdi pdiSeleccionado = ((ElementoConEtiqueta)información.Item.Tag).ElementoDelMapa as Pdi; miMapa.PuntosAddicionales.Add(new InterfaseMapa.PuntoAdicional( pdiSeleccionado.Coordenadas, miPincelDePdi, 13)); foreach (Pdi pdi in pdis) { miMapa.PuntosAddicionales.Add(new InterfaseMapa.PuntoAdicional( pdi.Coordenadas, miPincelDePdiDuplicado, 7)); } // Muestra el mapa en la region deseada. miMapa.Enabled = true; miMapa.RectánguloVisibleEnCoordenadas = rectánguloVisible; miMapa.MuestraTodoElMapa = false; miMapa.Refresh(); }