我正在开发一个小型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
有人可以告诉我这里有什么问题或者更好的方法来获得两个坐标之间的距离吗?