小さな Windows Phone アプリケーションを開発しています。ユーザーの現在の場所をデータベースに保存しています。
データベースに保存されている現在の場所を取得するコードを次に示します。
public void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
CurrentLatitude = e.Position.Location.Latitude.ToString();
CurrentLongitude = e.Position.Location.Longitude.ToString();
}
ユーザーが保存した場所から 400 メートル以内にいる場合、ユーザーが何らかのアクティビティを実行できるようにする必要があります。
次のコードを使用して距離を計算しています。
internal double GetDistanceTo(GeoCoordinate ClientLocation)
{
double distanceInMeter;
GeoCoordinate currentLocation = new GeoCoordinate(Convert.ToDouble(watcher.Position.Location.Latitude.ToString()), Convert.ToDouble(watcher.Position.Location.Longitude.ToString()));
distanceInMeter = currentLocation.GetDistanceTo(ClientLocation);
return distanceInMeter;
}
ClientLocation : データベースに保存された場所です。
したがって、私の問題は、ユーザーがデータベースに保存されている同じ場所(1メートル未満)に立っている場合でも、非常に大きな距離が得られることです。
座標の例 (デバイスから抽出)
データベースに保存
緯度: 29.8752546310425 経度
: 73.8865985870361
現在の座標
緯度: 29.8734102249146 経度
: 73.9049253463745距離 1780.45
ここで何が間違っているのか、または2つの座標間の距離を取得するためのより良い方法を誰かに教えてもらえますか?