Google地图显示两个目的地之间的距离不同

时间:2018-08-10 12:59:27

标签: c# .net google-maps google-maps-api-3 google-maps-api-2

我正在创建一个窗口表单应用程序,该应用程序使用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;
        }

我检查了我的代码的每一行,但无法找到为什么会出现这种差异。

1 个答案:

答案 0 :(得分:2)

Google Maps Distance Matrix API不会计算两点之间的直线或大圆距离。而是根据行驶方式(您在API调用中未指定,因此默认为driving)返回距离。 仔细想想:您不可能在两个方向上都精确地到达 距离,并且路程越长,所需路线的改变就越明显。它将取决于高速公路下坡道(在两个方向的特定交叉路口均不可用),单向街道等。

因此,结果符合预期。

来源:Google Maps Distance Matrix API