Подтвердите широту и долготу - PullRequest
31 голосов
/ 30 июня 2011

Я хочу подтвердить широту и долготу. Прямо сейчас я проверяю, чтобы значение не было пустым, но я хочу, чтобы проверка проверила, является ли оно допустимым значением latidue или longitude.

Как мне это сделать?

Моя собственность выглядит так:

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 ]

53 голосов
/ 30 июня 2011

Из 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 градусов. Если это не так, сгенерируйте исключение.

33 голосов
/ 23 июня 2013

В качестве альтернативы вы можете использовать GeoCoordinate класс, встроенный в .NET 4 (ссылка System.Device.dll) Его конструктор генерирует недопустимые значения долготы и широты:

широта

Тип: System.Double

Широта местоположения. Может варьироваться от -90,0 до 90,0.

долгота

Тип: System.Double

Долгота местоположения. Может варьироваться от -180,0 до 180,0.

19 голосов
/ 30 июня 2011

Используйте Double, а не Strings. Если вам нужно разрешить ввод строки, используйте 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;
        }
    }
0 голосов
/ 30 июня 2011

обычно широта / долгота - десятичные числа , а не строки.

Десятичные градусы являются альтернативой используя градусы, минуты и секунды (DMS). Как с широтой и долготой, значения ограничены ± 90 ° и ± 180 ° соответственно. Положительные широты к северу от экватора, отрицательный широты к югу от экватора. Положительные долготы к востоку от премьер Меридиан, отрицательные долготы - запад премьер меридиана. Широта и долгота обычно выражается в эта последовательность, широта до долготы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...