わかりました、これが問題です。その中のすべてのルートを表示することによって、複数の場所を訪問することを含む旅行全体を表示しようとしました。例:ニューヨークから始めて、ボストン、LA、サンフランシスコ、そして最後にNYCに戻る場合があります。
これは、複数のリクエストを含むループを作成し、ルートを順番に表示するコードの一部です。
for (int i=0; i<all; ++i) {
System.out.println(places.get(pass.charAt(i)-48)+"to"+places.get(pass.charAt(i+1)-48));
%>
var start = "<%=places.get(pass.charAt(i)-48) %>";
var end = "<%=places.get(pass.charAt(i+1)-48) %>";
var request = {
origin: start,
destination: end,
provideRouteAlternatives: false,
travelMode: google.maps.DirectionsTravelMode.TRANSIT
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
if (first == 1) {
first = 0;
responseAll = response;
responseAll.routes[<%=i%>] = response.routes[0];
}else {
responseAll.routes[<%=i%>] = response.routes[0];
directionsDisplay.setDirections(responseAll);
}
}
});
<%}%>
問題は、どういうわけか、私が要求した最初の3つのルートだけが表示されることです。この場合、ニューヨークからボストン、ボストンからLA、LAからサンフランシスコへのルートです。このページには最大で3つのルートを表示できるのではないかと思いました。だから私はコードをこれに変更することによってこの考えをテストしました(これはDirectionResponseを5つのルートで初期化します)
if (first == 1) {
first = 0;
responseAll = response;
for (var a = 0; a!=5;++a) {
responseAll.routes[a] = response.routes[0];
}
そして、同時に5つ以上のルートを表示できることがわかりました(このテストケースでは、これらはすべて同じルートですが)。したがって、3番目以降の他の要求を無視していることがわかります。
だからここに私の質問があります:それがすべての要求に答えるようにそれを修正する方法はありますか、それとも3つ以上の要求を言うことですか?