2

わかりました、これが問題です。その中のすべてのルートを表示することによって、複数の場所を訪問することを含む旅行全体を表示しようとしました。例:ニューヨークから始めて、ボストン、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つ以上の要求を言うことですか?

4

2 に答える 2

1
  • 複数の「途中降機」ウェイポイント(最大8つに加えて、出発地と目的地)を使用して単一のリクエストを行うことができます。

複数のルートを組み合わせた例

  • 返されたステータスの値、コードの現在の記述方法を調べていません。ルートリクエストが失敗した場合(ステータス!= OK)、通知は届きません。デバッガーでステータスの値を調べるか、失敗した理由を知らせるチェックを追加してみてください。このようなものが役立つかもしれません(テストされていません):

    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);
        }           
      } else { 
        alert("Directions request failed, status = "+status);
      }
    });
    
于 2013-03-10T06:45:05.387 に答える
-1

KMLは、APIと混合するときに役立つと思います。

于 2013-03-10T06:41:01.140 に答える