2017-06-20 145 views
0

我需要计算最短距离两点之间的距离。我正在使用以下功能来实现这一点。获得两点之间的最短距离

var p1 = new google.maps.LatLng(6.71532762,80.06215197); 
var p2 = new google.maps.LatLng(6.93234287,79.84870747); 

var distance = document.getElementById('distance'); 
distance.innerHTML = distance.innerHTML+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); 
} 

这给33.77公里的距离。但根据google maps,最短以上点之间的距离应为45.0公里

我怎么能得到那个价值? (45.0千米

这里是jsfiddle link

+1

注意你正在调用该方法“ google.maps.geometry程式** **球.computeDistanceBetween”我怀疑是GRE在两点之间的圆周距离(即全球最短距离)。 – RobG

+0

我在Google Maps中测量了自己的距离,结果得到**〜33.7公里**。编辑:我想你从道路上的距离得到** 45公里**。如果您想通过公路测量距离,这不是您正在寻找的功能。 [请参阅此链接](https://developers.google.com/maps/documentation/javascript/direction) – Nysten

+1

计算球形距离!=通过道路行驶的距离。请说明你需要什么。 –

回答

1

为了得到路途远近,你可以使用google.maps.DirectionsService ():

var p1 = new google.maps.LatLng(6.71532762, 80.06215197); 
var p2 = new google.maps.LatLng(6.93234287, 79.84870747); 

function getShortestDistance(p1, p2) { 
    return new Promise(function(resolve, reject) { 
    var request = { 
     origin: p1, 
     destination: p2, 
     travelMode: google.maps.TravelMode.DRIVING, 
     provideRouteAlternatives: true 
    }; 
    new google.maps.DirectionsService().route(request, function(response, status) { 
     var minRoute = null; 
     for (var i = 0; i < response.routes.length; i++) { 
     if (minRoute === null || response.routes[i].legs[0].distance.value < minRoute.legs[0].distance.value) { 
      minRoute = response.routes[i]; 
     } 
     } 
     resolve(minRoute); 
    }); 
    }); 
} 

getShortestDistance(p1, p2).then(function(result) { 
    document.getElementById('distance').innerHTML = 'Distance : ' +  result.legs[0].distance.text; 
}); 

您可以在这里找到库:https://maps.google.com/maps/api/js?sensor=false&libraries=geometry

+0

感谢您的回答。但是这给** **最快的路线**。但我需要的是**最短路线** – Bishan

+0

然后,我认为您可以添加provideRouteAlternatives:true请求获取替代路线并选择最短路线。 – Rylyn

+0

是的,刚刚发现。谢谢 – Bishan

2

球面距离在一个直线的距离 - B中的谷歌地图链接您发布(如鸟飞)

显示一条街是45公里长。

编辑:为了得到你需要看看到谷歌的最短距离街道地图API的方向,而不是球形的方法: https://developers.google.com/maps/documentation/directions/intro

+0

感谢您的澄清。是的,我需要弄清45公里长的街道的距离。 – Bishan

+0

然后,您应该查看Google地图方向API: https://developers.google.com/maps/documentation/directions/intro – Fabwoofer

+0

感谢您的文档链接。我会检查这个。 – Bishan