我想验证纬度和经度。现在,我只是检查该值是否为空,但我想验证它是否是有效的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;
}
}
答案 0 :(得分:53)
来自MSDN
http://msdn.microsoft.com/en-us/library/aa578799.aspx
纬度衡量北方或北方的距离 赤道以南的一个地方 位于。赤道位于 0°,北极90°以北(或 90°,因为正纬度 暗示北方)和南极 向南90°(或-90°)。纬度 测量范围从0°到 (+/-)90°。
经度衡量东部或东部 在本初子午线以西的一个地方 位于。本初子午线运行 通过格林威治,英格兰。经度 测量范围从0°到 (+/-)180°。
在纬度设定器中,检查设定的值是否介于-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。纬度和 经度通常表示为 那个序列,纬度之前 经度。