Windows Phone 7 GetDistanceTo()返回不正确的距离

时间:2012-04-17 08:14:09

标签: windows-phone-7 geolocation

我正在开发一个小型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米以下),它也会给出极大的距离。

示例cordinates(从设备中提取)

保存在数据库中

  

Lat:29.8752546310425
  长:73.8865985870361

当前的Cordinates

  

Lat:29.8734102249146
  长:73.9049253463745

     

距离   1780.45

有人可以告诉我这里有什么问题或者更好的方法来获得两个坐标之间的距离吗?

1 个答案:

答案 0 :(得分:3)

根据boulter.com,从A到B的距离为1.11英里。这大约是1780米,所以我不知道问题是什么。阅读有关lat和长计算的Moveable Type帮助。