【发布时间】:2014-05-06 05:30:41
【问题描述】:
我使用此代码获取两个不同位置的经度和纬度并计算它们之间的距离 我的代码是
protected void Button1_Click(object sender, EventArgs e)
{
double lat1= Convert.ToDouble(TextBox1.Text);
double lon1= Convert.ToDouble(TextBox2.Text);
double lat2= Convert.ToDouble(TextBox3.Text);
double lon2= Convert.ToDouble(TextBox4.Text);
var rlat1 = Math.PI * lat1/180;
var rlat2 = Math.PI * lat2/180;
var rlon1 = Math.PI * lon1/180;
var rlon2 = Math.PI * lon2 / 180;
var theta = lon1-lon2;
var rtheta = Math.PI * theta/180;
var dist = Math.Sign(rlat1) * Math.Sign(rlat2) + Math.Cos(rlat1) * Math.Cos(rlat2) * Math.Cos(rtheta);
dist = Math.Acos(dist);
dist = dist * 180/Math.PI;
dist = dist * 60 * 1.1515;
dist = dist * 1.609344 ;
TextBox5.Text = dist.ToString("0.######");
}
但是对于所有输入值,我得到的结果是 NaN。请帮助我。
【问题讨论】:
-
你能在问题中添加一些示例输入吗
-
调试这应该提供解决方案。我不确定是否比你更适合做这件事?
-
对于任何坐标它给出相同的答案
-
可能有很多原因。通常会发生这种情况,例如输入不在函数的域中,即 Acos 的域 -1 ≤ x ≤ 1。甚至结果数是虚数
标签: c# google-maps latitude-longitude