我正在尝试找出一种在c#中计算两点之间距离的方法。
这是我一直在尝试的代码,但我担心得到的答案不正确。
static void Main()
{
//postcode australia 2600 -> 3000
float latA = -31.997976f;
float longA = 115.762877f;
float latB = -31.99212f;
float longB = 115.763228f;
decimal distance = (DistanceBetween(latA, latB, longA, longB));
Console.WriteLine("Distance is" + distance);
Console.ReadLine();
}
static decimal DistanceBetween(float latA, float longA, float latB, float longB)
{
var RadianLatA = Math.PI * latA / 180;
var RadianLatb = Math.PI * latB / 180;
var RadianLongA = Math.PI * longA / 180;
var RadianLongB = Math.PI * longB / 180;
double theDistance = (Math.Sin(RadianLatA)) *
Math.Sin(RadianLatb) +
Math.Cos(RadianLatA) *
Math.Cos(RadianLatb) *
Math.Cos(RadianLongA - RadianLongB);
return Convert.ToDecimal(((Math.Acos(theDistance) * (180.0 / Math.PI)))) * 69.09M * 1.6093M;
}
这是从这里找到的回答改编而来:地址之间的距离 有没有关于出了什么问题的想法?
谢谢 Ryan
Math.Sin
(或其他三角函数)的结果,看看结果是否匹配。 在将角度转换为弧度时,在使用三角函数时也必须考虑符号。 - Daniel Kotin