2017-06-20 73 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