验证纬度和经度

时间:2011-06-30 14:19:23

标签: c# validation coordinates

我想验证纬度和经度。现在,我只是检查该值是否为空,但我想验证它是否是有效的latidue或经度。

我该怎么做?

我的财产看起来像这样:

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

4 个答案:

答案 0 :(得分:53)

来自MSDN

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

  

纬度衡量北方或北方的距离   赤道以南的一个地方   位于。赤道位于   0°,北极90°以北(或   90°,因为正纬度   暗示北方)和南极   向南90°(或-90°)。纬度   测量范围从0°到   (+/-)90°。

     

经度衡量东部或东部   在本初子午线以西的一个地方   位于。本初子午线运行   通过格林威治,英格兰。经度   测量范围从0°到   (+/-)180°。

enter image description here

在纬度设定器中,检查设定的值是否介于-90到90度之间。如果没有,抛出异常。对于经度,请检查该值是否介于-180和180度之间。如果没有,则抛出异常。

答案 1 :(得分:33)

或者,您可以使用.NET 4中内置的GeoCoordinate类(参考System.Device.dll)。它的constructor会引发无效的经度和纬度:

  

<强>纬度

     

输入:System.Double

     

位置的纬度。范围从-90.0到90.0。

     

<强>经度

     

输入:System.Double

     

位置的经度。范围从-180.0到180.0。

答案 2 :(得分:19)

使用双打,而不是字符串。如果您需要允许String输入,请使用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;
        }
    }

答案 3 :(得分:0)

typically latitude/longitude are decimals,而不是字符串。

  

十进制度是替代   使用度,分和秒   (DMS)。与纬度和经度一样,   这些值以±90°为界   分别为±180°。正纬度   在赤道以北,负面   纬度位于赤道以南。   正经度位于Prime以东   经络,负经度是西方   Prime Meridian。纬度和   经度通常表示为   那个序列,纬度之前   经度。