2017-03-20 63 views
0

Sample displayed route on mapdirectionsService.route結果獲取所有標記的緯度經度值

我在google地圖上使用directionsService。如何獲取此路線上顯示的標記的緯度和經度值,我遇到了麻煩?

var request = { 
       origin: nodes[0], 
       destination: nodes[0], 
       waypoints: waypts, 
       optimizeWaypoints: true, 
       travelMode: google.maps.TravelMode[$('#travel-type').val()], 
       avoidHighways: parseInt($('#avoid-highways').val()) > 0 ? true : false, 
       avoidTolls: false 
      }; 
      markerID = true; 

      directionsService.routes(request, function(response, status) { 
       if (status == google.maps.DirectionsStatus.OK) { 
        directionsDisplay.setDirections(response); 
       } 
      });; 
+0

你得到的錯誤是什麼? – oneNiceFriend

+0

我沒有得到錯誤,我只是有一個問題,如何獲取我的地圖上顯示的directionsService上的每個標記latlng值。我嘗試了'response.routes [index] .overview_path',但它返回了很多latlng值。我不知道沿着路線標記的確切位置在哪裏 – emman

回答

1

您應該能夠循環通過腿陣列以獲取數據。對於每個航點,路線中都會創建一條附加航段。沒有航點的航線只有1條航線。

每條腿都有一個起始位置,它是一個拉伸對象。您可以訪問每條腿的座標,像這樣:

for(var q = 0; q<route.legs.length; q++){ 
    alert(route.legs[q].start_location.lat() + " " + route.legs[q].start_location.lng()); 
} 

上面的代碼將會給你除了目標的每一個標記的經緯度座標。您可以通過查看最後一段的end_locatoin來獲取目的地,但由於DirectionsService通過在起點和終點使用最近的交通選項(通常是道路)來計算位置之間的方向,因此end_location可能與提供的目的地不同這條腿,例如,如果一條路不在目的地附近。這就是說你可以使用下面的代碼來獲得end_location:

route.legs[route.legs.length-1].end_location.lat() 
route.legs[route.legs.length-1].end_location.lng() 

我希望這有助於!