Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        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();
        }