0

小さな 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つの座標間の距離を取得するためのより良い方法を誰かに教えてもらえますか?

4

1 に答える 1

3

boulter.comによると、A から B までは 1.11 マイルです。約 1780 メートルなので、何が問題なのかわかりません。緯度と経度の計算に関するMoveable Typeのヘルプを読んでください。

于 2012-04-17T08:20:40.960 に答える