0

Google Maps API v3、GWT 2.5.1 で 5 つの異なるルートを描画したいと考えています。このクラスでDirectionDisplayandを設定するルートを初期化します。DirectionsRequest

Web プロジェクトを開始すると、最初のルートだけが表示されることもあれば、5 つすべてが表示されることもあるので、System.out.print(m); を作成することにしました。

結果:

  • 01234 -> 予想どおり、すべてのルートが表示されました

  • 10234 -> エラー、最初のルートのみ表示。

Google が最初のリクエストの前に 2 番目のリクエストを処理するのはなぜですか? リクエストが順番に戻ってくる時間を確保するために使用しようとしましThread.sleep(1000)たが、Timer/TimerTasks も成功しませんでした。何か案は?

DirectionsService o = DirectionsService.newInstance();

for (Integer i = 0; i < 4; i++) {  //routes.size()

    final int m = i;

    final Route route = new Route("Route " + i.toString());

    route.initRoute(m, getRoutingPresenter(), adressData, addressIndex);
    //here i initialize the DirectionsRequests and its Displays, which
    //i set in this class after execution.

    o.route(directionsRequest, new DirectionsResultHandler() {

        @Override
        public void onCallback(DirectionsResult result,DirectionsStatus status) {

            if (status == DirectionsStatus.OK) {

                   System.out.print(m);
                       ...
            }
        }
    );
}
}
4

1 に答える 1

0

Google はリクエストを処理するのに時間がかかる場合があるため、それに応じてコーディングする必要があります。これは、すべての HTTP トラフィックに当てはまります。リモート サーバーがすべてのリクエストに対して一定のサービス時間を保証していたとしても、インターネットはそうではなく、リクエストが古いルートを通過する可能性があります。

応答の順序が問題にならないように処理コードを修正するか、すべての応答が返されるまで待ってから順序自体を整理するように記述します。

特に重要な理由がない限り、最初の方法をお勧めします。

于 2013-05-23T23:46:00.093 に答える