2013-07-23 122 views
0

使用谷歌地圖,你實際上可以得到兩個地址之間不同的可能路線,也可以得到每條可能路線的長度。兩個地址之間的最短路徑

enter image description here 我現在正在與google map在一個網站上工作,我想計算兩個不同地址之間的最短路徑谷歌地圖。然後獲取路徑長度作爲JavaScript變量。

+0

你可以用谷歌地圖API V3爲DirectionsService備用路由。每條路線包括其距離和持續時間。 [開發人員指南](https://developers.google.com/maps/documentation/javascript/directions) - [DirectionsService參考](https://developers.google.com/maps/documentation/javascript/reference#DirectionsRequest),請參閱provideRouteAlternatives - 是否應提供路由替代方案。可選的。 – geocodezip

回答

0

我發現它,它可以使用谷歌稱爲Distance Matrix它返回一個包含The recommended path's lengthDuration JSON響應地圖API來計算。

{ 
"destination_addresses" : [ "Témara, Maroc" ], 
"origin_addresses" : [ "Rabat, Maroc" ], 
"rows" : [ 
    { 
    "elements" : [ 
     { 
      "distance" : { 
       "text" : "13,6 km", 
       "value" : 13620 
      }, 
      "duration" : { 
       "text" : "23 minutes", 
       "value" : 1358 
      }, 
      "status" : "OK" 
     } 
    ] 
    } 
], 
"status" : "OK" 
} 

這應該很好地工作:

function getDistance() 
{ 
var url="http://maps.googleapis.com/maps/api/distancematrix/json?origins=rabat&destinations=temara&mode=driving&language=fr-FR&sensor=false"; 
var def = new jQuery.Deferred(); 
$.getJSON(url,function(json) 
{ 
if (json.status=="OK") 
{ 
var distance=json.rows[0].elements[0].distance.text; 
} 
def.resolve(distance); 
}); 
return def.promise(); 
} 

$.when(getDistance()).then(function(distance){ 
alert(distance);}); 

Demo

1

您可以使用這些功能:

google.maps.geometry.spherical.computeDistanceBetween (latLng1, latLng1); 

的參數有兩個LatLng對象。
請確保您有:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&v=3&libraries=geometry"></script> 
+0

它會返回什麼? –

+0

直線最短路徑 –

+0

但是,這會計算兩個LatLng對象之間的測地線的長度,無論是否存在路由。 –

相關問題