0

在地圖上,我必須使用標記數組。一個人是靜態的,我們打電話station。其他的也是靜態的,但它們是暫時的,我們稱它們爲fire。當點擊fire時,最短路線必須構建爲stations之一。我使用TravelMode.DRIVING。我知道我可以計算路線距離,但爲了計算我必須先構建路線。是否有任何圖書館可以找到一個固定標記與許多其他標記之間的最佳路線?或者你能幫我講邏輯嗎?我可以自己編寫代碼。如何找到多個標記之一的最佳路線?

這裏是我實現了兩個標記之一的最佳路線,並且可以使用循環計算出許多標記。但是有沒有其他辦法可以做到這一點?

directionsService1.route(request1, function (response1, status1) { 
     if (status1 == google.maps.DirectionsStatus.OK) { 
      var myRoute1 = response1.routes[0].legs[0]; 
      distance1 = myRoute1.distance.value; 
      directionsService2.route(request2, function (response2, status2) { 
       if (status2 == google.maps.DirectionsStatus.OK) { 
        var myRoute2 = response2.routes[0].legs[0]; 
        distance2 = myRoute2.distance.value; 
        if (distance1 > distance2) { 
         directionsDisplay2.setMap(map); 
         directionsDisplay2.setDirections(response2); 
         directionsDisplay1.setMap(null); 
        } else { 
         directionsDisplay1.setMap(map); 
         directionsDisplay1.setDirections(response1); 
         directionsDisplay2.setMap(null); 
        } 
       } 
      }); 
     } 
    }); 

回答

0

路線服務的費率有限且受配額限制。如果你有很多積分,你將無法對它們進行循環調用。

一個建議是計算所有點的直線距離,然後計算這些結果中最接近的8點的駕駛距離(假設有8個以上的起點)。我建議8,因爲這可能是您可以放入方向要求的航點的最大數量,我想如果您將optimize_waypoints設置爲true,並將所有8個航點添加爲往返行程(起點和終點相同),您將獲得第一個或最後一個航點與起點之間的最短駕駛距離。

另一個辦法是使用谷歌的distance matrix api

+0

謝謝!我會嘗試編碼。 – Zharzhan 2012-07-06 06:35:18

0

DirectionsService有一個方法route來計算兩個點之間的一個或多個路線。

您可以每隔fire - station對調用此方法,並檢查返回的路線以確定最短路線。

+0

我知道,但沒有任何替代辦法?附:我編輯問題。 – Zharzhan 2012-07-05 13:38:39

相關問題