Javascript 计算两点之间的距离显示错误的距离

Javascript 计算两点之间的距离显示错误的距离,javascript,html,google-maps,google-maps-api-3,Javascript,Html,Google Maps,Google Maps Api 3,我使用以下两种方法来计算谷歌地图中使用纬度和经度的两点之间的距离 TYPE I: function CalcDistanceBetween(lat1, lon1, lat2, lon2) { //Radius of the earth in: 1.609344 miles, 6371 km | var R = (6371 / 1.609344); var R = 6371; // Radius of earth in Miles var dLat

我使用以下两种方法来计算谷歌地图中使用纬度和经度的两点之间的距离

            TYPE I:
         function CalcDistanceBetween(lat1, lon1, lat2, lon2) {
//Radius of the earth in:  1.609344 miles,  6371 km  | var R = (6371 / 1.609344);
var R = 6371; // Radius of earth in Miles 
var dLat = toRad(lat2-lat1);
var dLon = toRad(lon2-lon1); 
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) * 
        Math.sin(dLon/2) * Math.sin(dLon/2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
var d = R * c;
   alert("d==" + d);
return d;
}
  alert(CalcDistanceBetween(13.125511084202,80.029651635576,12.9898593006481,80.2497744326417));
                 function toRad(Value) {
            /** Converts numeric degrees to radians */
         return Value * Math.PI / 180;
         }  

    TYPE II:

            var p1 = new google.maps.LatLng(13.125511084202,80.029651635576);
            var p2 = new google.maps.LatLng(12.9898593006481,80.2497744326417);

            alert(calcDistance(p1, p2));

           //calculates distance between two points in km's
                       function calcDistance(p1, p2){
                return (google.maps.geometry.spherical.computeDistanceBetween(p1, p2) /                              
                  1000).toFixed(2);
                }    
以上两种类型的距离均为28公里。 但当我用同样的经度和广度在谷歌地图上注册时,它会返回36.8公里。 我的代码和谷歌地图中的示例检查如下所示..:


你建议我得到准确的结果吗?

谷歌给出的距离是从建议的路线开始的。这不是从a点到B点的直接路径。您计算的距离是直接路径,仅当您直接从a点飞到B点时才会出现这种情况。

如果你想得到谷歌输出的结果,请看这里:

谷歌给出的距离是从建议路线开始的。这不是从a点到B点的直接路径。您计算的距离是直接路径,仅当您直接从a点飞到B点时才会出现这种情况。

如果你想得到谷歌输出的结果,看这里:

可能是我完全错了:)但是你的方法似乎计算了这两个点之间的实际距离,当你使用谷歌进行路线时,它就是你所走路线的距离。

可能是我完全错了:)但是你的方法似乎计算了这两个点之间的实际距离,当你使用谷歌进行路线时谷歌它是你走的路线的距离。

他是对的,从A到B的距离是“航空线”(直接的,不包括路线和东西)。是的,你是对的。但是如果你给出示例代码。这对我很有帮助。他是对的,从A到B的距离是“航空线”(直接的,不包括路线和东西).是的,你是对的..但是如果你给出示例代码..对我有帮助