0

我想在 Google Maps API v3, GWT 2.5.1 中绘制五条不同的路线。我在这个类中初始化了一个设置它的路由DirectionDisplayDirectionsRequest

当我开始我的网络项目时,有时只显示我的第一条路线,有时会显示全部五个,所以我决定制作一个System.out.print(m);。

结果:

  • 01234 -> 正如预期的那样,显示所有路线

  • 10234 -> 错误,仅显示第一条路线。

为什么 Google 会在我的第一个请求之前处理我的第二个请求?我尝试使用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 流量都是如此。即使远程服务器为所有请求保证固定的服务时间,Internet 也不会,您的请求可能会采用任何旧路由通过它。

您可以纠正您的处理代码,以便响应顺序无关紧要,或者编写它以便等待所有响应都返回,然后自行整理订单。

我会推荐第一个,除非有非常具体的重要理由不这样做。

于 2013-05-23T23:46:00.093 回答