Подтвердить что ты не робот

Проверка широты и долготы

Я хочу проверить широту и долготу. Прямо сейчас, я проверяю только, чтобы значение не было пустым, но я хочу, чтобы проверка проверяла, что это действительный 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; 
    }
}
4b9b3361

Ответ 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 ° соответственно. Положительные широты к северу от экватора, отрицательные широты к югу от экватора. Положительные долготы к востоку от Прайма Меридиан, отрицательные долготы западные Главного Меридиана. Широта и долгота обычно выражаются в эта последовательность, широта перед долготы.