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

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

4

1 回答 1

3

根据boulter.com的说法,从 A 到 B 的距离为 1.11 英里。那大约是 1780 米,所以我看不出问题出在哪里。阅读有关经纬度计算的可移动类型帮助。

于 2012-04-17T08:20:40.960 回答