0

マップ上で、マーカーの配列を作成する必要があります。1つは静的です、呼び出しましょうstation。その他も静的ですが、一時的なものです。と呼びましょうfire。クリックするfireと、最短ルートがのいずれかに構築される必要がありますstations。TravelMode.DRIVINGを使用しています。ルート距離を計算できることは知っていますが、計算するには、最初にルートを作成する必要があります。1つの固定マーカーと他の多くのマーカーの1つとの間の最適なルートを見つけるためのライブラリはありますか?それとも私が論理を話すのを手伝ってくれませんか?自分でコードを書くことができます。

これは、2つのマーカーのいずれかに最適なルートを実装したもので、ループを使用して多くのマーカーを計算できます。しかし、それを行う別の方法はありますか?

    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);
                    }
                }
            });
        }
    });
4

2 に答える 2

0

DirectionsServiceroute2点間の1つまたは複数のルートを計算するメソッドがあります。

fireペアごとにこのメソッドを呼び出しstation、返されたルートを調べて最短ルートを決定できます。

于 2012-07-05T13:31:11.603 に答える
0

案内サービスはレート制限があり、割り当ての対象となります。ポイントがたくさんある場合は、それらすべてに対してループで呼び出すことはできません。

1つの提案は、すべてのポイントまでの直線距離を計算してから、それらの結果の最も近い8までの運転距離を計算することです(最初に8つ以上あると仮定します)。ルートリクエストに配置できるウェイポイントの最大数は8であるため、8をお勧めします。optimize_waypointsをtrueに設定し、これら8つすべてをウェイポイントとして往復に追加すると(開始点と終了点は同じです)、最初または最後のウェイポイントと開始点の間の最短の運転距離が得られます。

もう1つは、Googleの距離行列APIを使用することです。

于 2012-07-05T14:40:47.970 に答える