Example #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;
        }