我正在创建一个窗口表单应用程序,该应用程序使用Google API通过其纬度来计算两个位置之间的距离。效果很好,但是我注意到有些时间api对于相同的位置给出了不同的结果(距离)。
示例:-
位置-A => 孟买(19.075983,72.877655)
位置B => 德里(28.704060,77.102493)
当我计算从位置A 到位置B
的距离时decimal Distance = EmployeeTaskWorkLogManager.getDistance(string.Concat(19.075983, ", ", 72.877655), string.Concat(28.704060, ", ", 77.102493));
这表明 距离= 1423.297
当我计算从位置B 到位置A
的距离时decimal Distance = EmployeeTaskWorkLogManager.getDistance(string.Concat(28.704060, ", ", 77.102493), string.Concat(19.075983, ", ", 72.877655));
这表明 距离= 1415.239
这是我用来计算两个位置之间距离的代码,
public static decimal getDistance(string origin, string destination)
{
decimal num;
Thread.Sleep(1000);
decimal num1 = new decimal(0);
string[] strArrays = new string[] { "https://maps.googleapis.com/maps/api/distancematrix/json?origins=", origin, "&destinations=", destination, "&key=AIzaSyBitr9pMG67igLLSRp34uquGhG8DTDC3NU" };
string str = string.Concat(strArrays);
JObject jObjects = JObject.Parse(EmployeeTaskWorkLogManager.fileGetContents(str));
try
{
num1 = (decimal)jObjects.SelectToken("rows[0].elements[0].distance.value");
num = num1 / new decimal(1000);
}
catch
{
num = num1;
}
return num;
}
我检查了我的代码的每一行,但无法找到为什么会出现这种差异。
答案 0 :(得分:2)
Google Maps Distance Matrix API不会计算两点之间的直线或大圆距离。而是根据行驶方式(您在API调用中未指定,因此默认为driving
)返回距离。
仔细想想:您不可能在两个方向上都精确地到达 距离,并且路程越长,所需路线的改变就越明显。它将取决于高速公路下坡道(在两个方向的特定交叉路口均不可用),单向街道等。
因此,结果符合预期。