我需要找到.NET core中2个坐标之间的距离。我尝试使用下面提到的代码,
var sCoord =新的GeoCoordinate(sLatitude,sLongitude); var eCoord = new GeoCoordinate(eLatitude,eLongitude);
返回sCoord.GetDistanceTo(eCoord);
但是,.NET核心似乎不支持GeoCoordinate类。是否还有其他精确的方法可以使用.NET Core中的经度和纬度来计算2个坐标之间的距离?
答案 0 :(得分:3)
GeoCoordinate类是.net框架中System.Device.dll的一部分。但是,.Net Core不支持它。我找到了找到2个坐标之间距离的替代方法。
public double CalculateDistance(Location point1, Location point2)
{
var d1 = point1.Latitude * (Math.PI / 180.0);
var num1 = point1.Longitude * (Math.PI / 180.0);
var d2 = point2.Latitude * (Math.PI / 180.0);
var num2 = point2.Longitude * (Math.PI / 180.0) - num1;
var d3 = Math.Pow(Math.Sin((d2 - d1) / 2.0), 2.0) +
Math.Cos(d1) * Math.Cos(d2) * Math.Pow(Math.Sin(num2 / 2.0), 2.0);
return 6376500.0 * (2.0 * Math.Atan2(Math.Sqrt(d3), Math.Sqrt(1.0 - d3)));
}
其中point1和point2是2个坐标点,而Location是一个类,如下所示,
public class Location
{
public double Latitude { get; set; }
public double Longitude { get; set; }
}
请检查链接以获取另一种计算距离的方法,该方法得出的结果与上述代码相同- Alternative method