我需要在 .NET 核心中找到 2 个坐标之间的距离。我试过使用下面提到的代码,
var sCoord = new GeoCoordinate(sLatitude, sLongitude);
var eCoord = new GeoCoordinate(eLatitude, eLongitude);
返回 sCoord.GetDistanceTo(eCoord);
但是,似乎 .NET 核心不支持 GeoCoordinate 类。有没有其他精确的方法可以使用 .NET 核心中的纬度和经度来计算 2 个坐标之间的距离?
最佳答案
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
关于.net - 在 .NET 核心中查找 2 个坐标之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60700865/