예제 #1
0
        private void Guarda(CampoCoordenadas elCampoCoordenadas, StreamWriter elEscritor)
        {
            StringBuilder texto = new StringBuilder();
            bool          esPrimeraCoordenada = true;

            foreach (Coordenadas coordenadas in elCampoCoordenadas.Coordenadas)
            {
                if (esPrimeraCoordenada)
                {
                    esPrimeraCoordenada = false;
                }
                else
                {
                    texto.Append(',');
                }

                texto.Append("("
                             + coordenadas.Latitud.ToString(FormatoDeCoordenada, miFormatoNumérico)
                             + ","
                             + coordenadas.Longitud.ToString(FormatoDeCoordenada, miFormatoNumérico)
                             + ")");
            }

            Guarda(
                elCampoCoordenadas,
                elCampoCoordenadas.Nivel,
                texto.ToString(),
                elEscritor);
        }
예제 #2
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="elManejadorDeMapa">El manejador del mapa.</param>
 /// <param name="elNúmero">El número de la Polilínea.</param>
 /// <param name="laClase">La clase de la Polilínea.</param>
 /// <param name="losCampos">Los campos de la Polilínea.</param>
 public Polilínea(
     ManejadorDeMapa elManejadorDeMapa,
     int elNúmero,
     string laClase,
     IList <Campo> losCampos)
     : base(elManejadorDeMapa,
            elNúmero,
            laClase,
            CaracterísticasDePolilíneas.Descripciones,
            losCampos)
 {
     // Busca los campos especificos de los Polilíneas.
     foreach (Campo campo in losCampos)
     {
         CampoCoordenadas campoCoordenadas = campo as CampoCoordenadas;
         if (campoCoordenadas != null)
         {
             // Si ya tenemos coordenadas entonces solamente las remplazamos
             // si el nivel es menor.
             if (miCampoCoordenadas != CampoCoordenadas.Nulas)
             {
                 if (campoCoordenadas.Nivel < miCampoCoordenadas.Nivel)
                 {
                     miCampoCoordenadas = campoCoordenadas;
                 }
             }
             else
             {
                 miCampoCoordenadas = campoCoordenadas;
             }
         }
     }
 }
예제 #3
0
        /// <summary>
        /// Devuelve una variable lógica que indica si un objeto
        /// dado es igual.
        /// </summary>
        /// <param name="elObjecto">EL objecto dado.</param>
        public override bool Equals(object elObjecto)
        {
            // Verifica objectos nulos y compara el tipo.
            if (elObjecto == null || (GetType() != elObjecto.GetType()))
            {
                return(false);
            }

            // Compara objecto.
            CampoCoordenadas comparador = (CampoCoordenadas)elObjecto;
            bool             esIgual    = false;

            if (Nivel == comparador.Nivel)
            {
                if (comparador.Coordenadas.Length == Coordenadas.Length)
                {
                    esIgual = true;
                    for (int i = 0; i < Coordenadas.Length; ++i)
                    {
                        if (comparador.Coordenadas[i] != Coordenadas[i])
                        {
                            esIgual = false;
                            break;
                        }
                    }
                }
            }

            return(esIgual);
        }
예제 #4
0
        /// <summary>
        /// Cambia las coordenadas.
        /// </summary>
        /// <param name="lasCoordenadaNuevas">Las coordenadas nuevas.</param>
        /// <param name="elIndice">El índice de la coordenada a cambiar.</param>
        /// <param name="laRazón">La razón del cambio.</param>
        public virtual void CambiaCoordenadas(Coordenadas lasCoordenadaNuevas, int elIndice, string laRazón)
        {
            // Si no tiene Campo de Coordenadas entonces es un error.
            if (miCampoCoordenadas == CampoCoordenadas.Nulas)
            {
                throw new ArgumentException("Las coordenadas son nulas.");
            }

            // Cambia el campo.
            CampoCoordenadas nuevoCampoCoordenadas = new CampoCoordenadas(
                miCampoCoordenadas.Identificador,
                miCampoCoordenadas.Nivel,
                miCampoCoordenadas.Coordenadas);

            nuevoCampoCoordenadas.Coordenadas[elIndice] = lasCoordenadaNuevas;
            CambiaCampo(nuevoCampoCoordenadas, miCampoCoordenadas, laRazón);
            miCampoCoordenadas = nuevoCampoCoordenadas;
        }
예제 #5
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="elManejadorDeMapa">El manejador del mapa.</param>
 /// <param name="elNúmero">El número del Polígono.</param>
 /// <param name="laClase">La clase de Polígono.</param>
 /// <param name="losCampos">Los campos del Polígono.</param>
 public Polígono(
     ManejadorDeMapa elManejadorDeMapa,
     int elNúmero,
     string laClase,
     IList <Campo> losCampos)
     : base(elManejadorDeMapa,
            elNúmero,
            laClase,
            CaracterísticasDePolígonos.Descripciones,
            losCampos)
 {
     // Busca los campos especificos de los Polígonos.
     foreach (Campo campo in losCampos)
     {
         if (campo is CampoCoordenadas)
         {
             misCoordenadas = (CampoCoordenadas)campo;
         }
     }
 }
예제 #6
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="elManejadorDeMapa">El manejador del mapa.</param>
 /// <param name="elNúmero">El número de la Polilínea.</param>
 /// <param name="laClase">La clase de la Polilínea.</param>
 /// <param name="losCampos">Los campos de la Polilínea.</param>
 public Polilínea(
     ManejadorDeMapa elManejadorDeMapa,
     int elNúmero,
     string laClase,
     IList<Campo> losCampos)
     : base(elManejadorDeMapa,
      elNúmero,
      laClase,
      CaracterísticasDePolilíneas.Descripciones,
      losCampos)
 {
     // Busca los campos especificos de los Polilíneas.
       foreach (Campo campo in losCampos)
       {
     CampoCoordenadas campoCoordenadas = campo as CampoCoordenadas;
     if (campoCoordenadas != null)
     {
       // Si ya tenemos coordenadas entonces solamente las remplazamos
       // si el nivel es menor.
       if (miCampoCoordenadas != CampoCoordenadas.Nulas)
       {
     if (campoCoordenadas.Nivel < miCampoCoordenadas.Nivel)
     {
       miCampoCoordenadas = campoCoordenadas;
     }
       }
       else
       {
     miCampoCoordenadas = campoCoordenadas;
       }
     }
       }
 }
예제 #7
0
        /// <summary>
        /// Cambia las coordenadas.
        /// </summary>
        /// <param name="lasCoordenadaNuevas">Las coordenadas nuevas.</param>
        /// <param name="elIndice">El índice de la coordenada a cambiar.</param>
        /// <param name="laRazón">La razón del cambio.</param>
        public virtual void CambiaCoordenadas(Coordenadas lasCoordenadaNuevas, int elIndice,  string laRazón)
        {
            // Si no tiene Campo de Coordenadas entonces es un error.
              if (miCampoCoordenadas == CampoCoordenadas.Nulas)
              {
            throw new ArgumentException("Las coordenadas son nulas.");
              }

              // Cambia el campo.
              CampoCoordenadas nuevoCampoCoordenadas = new CampoCoordenadas(
            miCampoCoordenadas.Identificador,
            miCampoCoordenadas.Nivel,
            miCampoCoordenadas.Coordenadas);
              nuevoCampoCoordenadas.Coordenadas[elIndice] = lasCoordenadaNuevas;
              CambiaCampo(nuevoCampoCoordenadas, miCampoCoordenadas, laRazón);
              miCampoCoordenadas = nuevoCampoCoordenadas;
        }
        private void Guarda(CampoCoordenadas elCampoCoordenadas, StreamWriter elEscritor)
        {
            StringBuilder texto = new StringBuilder();
              bool esPrimeraCoordenada = true;
              foreach (Coordenadas coordenadas in elCampoCoordenadas.Coordenadas)
              {
            if (esPrimeraCoordenada)
            {
              esPrimeraCoordenada = false;
            }
            else
            {
              texto.Append(',');
            }

            texto.Append("("
            + coordenadas.Latitud.ToString(FormatoDeCoordenada, miFormatoNumérico)
            + ","
            + coordenadas.Longitud.ToString(FormatoDeCoordenada, miFormatoNumérico)
            + ")");
              }

              Guarda(
            elCampoCoordenadas,
            elCampoCoordenadas.Nivel,
            texto.ToString(),
            elEscritor);
        }
예제 #9
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="elManejadorDeMapa">El manejador del mapa.</param>
 /// <param name="elNúmero">El número del Polígono.</param>
 /// <param name="laClase">La clase de Polígono.</param>
 /// <param name="losCampos">Los campos del Polígono.</param>
 public Polígono(
     ManejadorDeMapa elManejadorDeMapa,
     int elNúmero,
     string laClase,
     IList<Campo> losCampos)
     : base(elManejadorDeMapa, 
      elNúmero,
      laClase,
      CaracterísticasDePolígonos.Descripciones,
      losCampos)
 {
     // Busca los campos especificos de los Polígonos.
       foreach (Campo campo in losCampos)
       {
     if (campo is CampoCoordenadas)
     {
       misCoordenadas = (CampoCoordenadas)campo;
     }
       }
 }