【发布时间】:2013-09-11 18:12:31
【问题描述】:
我正在尝试根据与该点的距离(以米为单位)计算该点的新纬度。
我在这里和其他地方发现了一些有用的帖子,但我仍然遇到了一些麻烦。
这是我目前得到的代码:
public LatLon CalculateNewCoords(decimal startingLat, decimal startingLon, int distanceEast, int distanceNorth)
{
int r = 6378137;
decimal dLat = Convert.ToDecimal(distanceNorth) / Convert.ToDecimal(r);
decimal pi = Convert.ToDecimal(Math.PI);
double cosInput = Convert.ToDouble(pi * startingLat / Convert.ToDecimal(180));
decimal dLon = Convert.ToDecimal(distanceEast) / Convert.ToDecimal(Convert.ToDouble(r) * Math.Cos(cosInput));
decimal lat0 = startingLat + dLat * (180 * pi);
decimal lon0 = startingLon + dLon * (180 / pi);
LatLon output = new LatLon();
output.Latitude = lat0;
output.Longitude = lon0;
return output;
}
经度似乎是正确的,但纬度显示得非常明显。
我是这样使用的:
CalculateNewCoords(Convert.ToDecimal(40.743461), Convert.ToDecimal(-74.175847), 0, 1000);
谁能指出我做错了什么?
【问题讨论】:
标签: c# map latitude-longitude