緯度と経度を検証したい。現在、値が空でないことを確認していますが、有効な緯度または経度であることを確認するための検証が必要です。
それ、どうやったら出来るの?
私の財産は次のようになります。
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;
}
}
MSDNから
http://msdn.Microsoft.com/en-us/library/aa578799.aspx
緯度は、場所が赤道から北または南にどれだけ離れているかを測定します。赤道は0°、北極は北90°(正の緯度は北を意味するため90°)、南極は南90°(-90°)に位置しています。緯度の測定範囲は0°〜(+/–)90°です。
経度は、場所が本初子午線から東または西にどれだけ離れているかを測定します。子午線はイギリスのグリニッジを通ります。経度の測定範囲は0°〜(+/–)180°です。
緯度のセッターで、設定されている値が-90〜90度の間にあるかどうかを確認します。そうでない場合は、例外をスローします。経度については、値が-180〜180度の間かどうかを確認してください。そうでない場合は、例外をスローします。
または、.NET 4に組み込まれている GeoCoordinate クラスを使用できます(System.Device.dllを参照)。その constructor は、無効な経度と緯度でスローされます。
緯度
タイプ:System.Double
場所の緯度。 -90.0から90.0の範囲です。
経度
タイプ:System.Double
場所の経度。 -180.0から180.0の範囲で指定できます。
文字列ではなく、Doublesを使用します。文字列の入力を許可する必要がある場合は、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;
}
}
通常、緯度/経度は小数 、文字列ではありません。
10進度は、度、分、秒(DMS)を使用する代わりになります。緯度と経度と同様に、値はそれぞれ±90°と±180°で区切られています。正の緯度は赤道の北、負の緯度は赤道の南です。正の経度は本初子午線の東、負の経度は本初子午線の西です。通常、緯度と経度はその順序で表され、緯度は経度より前です。