Проверка широты и долготы
Я хочу проверить широту и долготу. Прямо сейчас, я проверяю только, чтобы значение не было пустым, но я хочу, чтобы проверка проверяла, что это действительный 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;
}
}
Ответы
Ответ 1
Из 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 градусов. Если это не так, создайте исключение.
Ответ 2
В качестве альтернативы вы можете использовать GeoCoordinate класс, встроенный в .NET 4 (reference System.Device.dll). Его конструктор генерирует недействительную долготу и широту:
широта
Тип: System.Double
Широта местоположения. Может варьироваться от -90,0 до 90,0.
долготы
Тип: System.Double
Долгота местоположения. Может варьироваться от -180,0 до 180,0.
Ответ 3
Используйте парные разряды, а не строки. Если вам нужно разрешить ввод строки, используйте 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;
}
}
Ответ 4
обычно широта/долгота - десятичные числа, а не строки.
Десятичные градусы являются альтернативой используя градусы, минуты и секунды (DMS). Как и в случае с широтой и долготой, значения ограничены ± 90 ° и ± 180 ° соответственно. Положительные широты к северу от экватора, отрицательные широты к югу от экватора. Положительные долготы к востоку от Прайма Меридиан, отрицательные долготы западные Главного Меридиана. Широта и долгота обычно выражаются в эта последовательность, широта перед долготы.