web-dev-qa-db-fra.com

Valider la latitude et la longitude

Je veux valider la latitude et la longitude. En ce moment, je vérifie juste pour que la valeur ne soit pas vide, mais je veux une validation pour vérifier qu'il s'agit d'un latidue ou d'une longitude valide.

Comment je fais ça?

Ma propriété ressemble à ceci:

public string Lat
{
    get {
        return this._lat; 
    }
    set 
    {
        base.ValidationErrors.Remove("Lat");

        if (String.IsNullOrWhiteSpace(value))
        {
            this.ValidationErrors.Add("Lat", strings.Positions_Lat_Empty);
        }

        this._lat = value != null ? value.Trim() : null;
    }
}

public string Lng
{
    get { 
        return this._lng; 
    }
    set {

        base.ValidationErrors.Remove("Lng");

        if (String.IsNullOrWhiteSpace(value))
        {
            this.ValidationErrors.Add("Lng", strings.Positions_Lng_Empty);
        }

        this._lng = value != null ? value.Trim() : null; 
    }
}
32
Hysteria

Depuis MSDN

http://msdn.Microsoft.com/en-us/library/aa578799.aspx

La latitude mesure à quelle distance au nord ou au sud de l'équateur se trouve un lieu. L'équateur est situé à 0 °, le pôle Nord à 90 ° nord (ou 90 °, car une latitude positive implique le nord), et le pôle sud à 90 ° sud (ou –90 °). Les mesures de latitude varient de 0 ° à (+/-) 90 °.

La longitude mesure la distance à l'est ou à l'ouest du méridien principal où se trouve un lieu. Le méridien principal traverse Greenwich, en Angleterre. Les mesures de longitude varient de 0 ° à (+/-) 180 °.

enter image description here

Dans votre setter de latitude, vérifiez si la valeur définie se situe entre -90 et 90 degrés. Si ce n'est pas le cas, jetez une exception. Pour votre longitude, vérifiez si la valeur se situe entre -180 et 180 degrés. Si ce n'est pas le cas, jetez une exception.

54
George Johnston

Vous pouvez également utiliser la classe GeoCoordinate intégrée à .NET 4 (référence System.Device.dll). Son constructeur lance sur une longitude et une latitude invalides:

latitude

Type: System.Double

La latitude de l'emplacement. Peut aller de -90,0 à 90,0.

longitude

Type: System.Double

La longitude de l'emplacement. Peut aller de -180,0 à 180,0.

33
Dmitry

Utilisez des doubles plutôt que des cordes. Si vous devez autoriser la saisie de chaîne, utilisez Double.TryParse(string)

    public Double Lat
    {
        get
        {
            return this._lat;
        }
        set
        {
            if (value < -90 || value > 90)
            {
                throw new ArgumentOutOfRangeException("Latitude must be between -90 and 90 degrees inclusive.");
            }
            this._lat= value;
        }
    }

    public Double Lng
    {
        get
        {
            return this._lng;
        }
        set
        {
            if (value < -180 || value > 180)
            {
                throw new ArgumentOutOfRangeException("Longitude must be between -180 and 180 degrees inclusive.");
            }
            this._lng= value;
        }
    }
19
Ian

généralement la latitude/longitude sont des décimales , pas une chaîne.

Les degrés décimaux sont une alternative à l'utilisation des degrés, minutes et secondes (DMS). Comme pour la latitude et la longitude, les valeurs sont délimitées respectivement par ± 90 ° et ± 180 °. Les latitudes positives sont au nord de l'équateur, les latitudes négatives sont au sud de l'équateur. Les longitudes positives sont à l'est du premier méridien, les longitudes négatives sont à l'ouest du premier méridien. La latitude et la longitude sont généralement exprimées dans cette séquence, la latitude avant la longitude.

0
Muad'Dib