2013-03-01 67 views
2

我知道用Google API,可以計算兩點之間的路線距離,但是我看到的大多數例子都是方向服務計算汽車/步行/自行車路線。計算兩個火車站在谷歌地圖上的路線距離

從代碼中可以得出鐵路上兩個大城市之間的距離(代碼如下),但我也想得到16個分段的距離,這兩個大城市之間是小站。如何?

var directionsService = new google.maps.DirectionsService(); 
var directionsDisplay = new google.maps.DirectionsRenderer(rendererOptions); 
directionsDisplay.setMap(map); 

var request = { 
     origin: 'Chester', 
     destination: 'Liverpool', 
     travelMode: google.maps.TravelMode.TRANSIT, 
     unitSystem:google.maps.UnitSystem.METRIC 
}; 

directionsService.route(request, function(response, status) { 
    if (status == google.maps.DirectionsStatus.OK) { 

    //////////////////////////////////////////////////////////////////////////// 
    directionsDisplay.setDirections(response); 
    var path = response.routes[0].overview_path; 
    var legs = response.routes[0].legs; 
    for (i=0;i<legs.length;i++) { 
     var steps = legs[i].steps; 
     for (j=0;j<steps.length;j++) { 

     var transitMode = steps[j].travel_mode; 

     if (transitMode == "TRANSIT") { 
       var vehicle = steps[j].transit.line.vehicle.type; 
       if (vehicle == "HEAVY_RAIL") {   
        var nextSegment = steps[j].path; 

      console.log('segment '+nextSegment.length); 
      for (k=0;k<nextSegment.length;k++) { 
     console.log(nextSegment[k].hb+"  "+nextSegment[k].ib); 
      route_polyline.getPath().push(nextSegment[k]); 
      } 

        console.log('rail');      
       } 
     } 
     } 
    } 
    route_polyline.setMap(map); 
    } 
}); 

回答

3

您是否需要車站之間的最短距離而不是距離?如果是這樣,你需要一個火車站的數據庫,並使用Haversine公式來計算。我有一個Demo,它使用它來找到位置半徑範圍內的火車站。這可以修改,以滿足您的要求

+0

謝謝,大衛,我想得到的是兩個站之間的真正距離。例如,從利物浦到chaster,有16個小站,我要計算後續站點的距離。 – user824624 2013-03-01 20:21:48

+1

大衛的答案(偉大的地圖順便說一句)使用數據庫和檢查每個步驟,看看它是否在說50米的其中一個點的組合之間的組合會給你一個站的腿。在這一點上,你可以抓住每一步的距離,將它們加在一起得到每個站之間的總行程距離,如果你不想像David所建議的那樣直線。 – Rafe 2013-03-03 08:34:53

相關問題