2017-09-06 34 views
0

以下のコードは3つの可能なルートを与えていますが、私は最短パス(直線ではありません)を得たいと思いますが、3つのルートの中のパスを取得したいと思います。グラフの実装とDijkstraアルゴリズムを使用して、最短パスを取得するだけです。DijkstraアルゴリズムをGoogleマップに適用して、2点間の最短経路を見つける方法は?

var directionsService = new google.maps.DirectionsService(); 

var myOptions = { 
    zoom: 7, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
} 

var map = new google.maps.Map(document.getElementById("map"), myOptions); 


var st = new google.maps.LatLng(33.7294, 73.0931); 
var en = new google.maps.LatLng(34.0150, 71.5805); 

var request = { 
    origin: st, 
    destination: en, 
    travelMode: google.maps.DirectionsTravelMode.DRIVING, 
    // Returns multiple routes 
    provideRouteAlternatives: true 
}; 

directionsService.route(request, function (response, status) { 
    if (status == google.maps.DirectionsStatus.OK) { 
     console.log(response.routes); 
     // Create a new DirectionsRenderer for each route 
     for (var i = 0; i < response.routes.length; i++) { 
      var dr = new google.maps.DirectionsRenderer(); 
      dr.setDirections(response); 
      // Tell the DirectionsRenderer which route to display 
      dr.setRouteIndex(i); 
      dr.setMap(map); 

      // Display the distance: 
      document.getElementById('distance').innerHTML += "Route " + i + ": " + 
       (response.routes[i].legs[0].distance.value)/1000 + "killo meters, "; 
      console.log((response.routes[i].legs[0].distance.value)/1000 + "killo meters"); 
      // Display the duration: 
      document.getElementById('duration').innerHTML += "Route " + i + ": " + 
       response.routes[i].legs[0].duration.value + " seconds, "; 
      console.log(response.routes[i].legs[0].duration.value + " seconds"); 
     } 




    } 
}); 
+0

のためにあなたを助けるかもしれません。 GoogleはすでにDijkstraのアルゴリズムまたはその変形を使用して最短経路を見つけています。返されたものから最短のものを探したいのですか、それとも自分で再計算しますか?私はGoogleが道路のグラフを公開しているとは思わないので、私は後者が可能だとは思わない。 – jcaron

+0

1.距離と交差点とともに、Google Map APIから2つのポイント間のルートをすべて取得します。 2.グラフを作成し、グラフ上のすべてのルートをマップします。 3. Dijaskeraのアルゴリズムをプログラミングし、グラフ上で実行すると、最短の最短経路が得られます。 – Ali

+0

あなたが解決しようとしている実際の問題は何かをお知らせください。 Google Maps APIから「2つのポイント間のすべての可能なルート」を取得することはできません。可能なルートの選択肢が得られますが、それらのすべてではありません。 Google側ですでにSPFアルゴリズムのいくつかの形式を実行していますが、なぜもう一度やりたいのですか?最短距離を(距離の点で)求めたい場合は、返されたデータを使って最短距離を見つけることができます。何かを再計算する必要はありません。 – jcaron

答えて

0

最初にダイクストラアルゴリズムを適用する場合は、通過する頂点を定義する必要があります。

頂点ができたら、アルゴリズムを適用するだけで頂けます。今、私はこのレポのと同じことに取り組んでいます

https://github.com/saba96/droneRoute 、それは私があなたの質問を理解していない実装

+0

私はtravelmodeが運転している道路沿いの道を望んでいます。 – Ali

+1

グラフを持たず、連続したスペースの最短経路を探しているので、別のアルゴリズムを使う必要があるかもしれません。 –

関連する問題