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); }
/// <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; } } } }
/// <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); }
/// <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; }
/// <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; } } }
/// <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; } } } }
/// <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); }
/// <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; } } }