有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Google Maps API v3:多方向请求需要不同的时间才能得到响应

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

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

结果是:

  • 01234->;正如所料,显示的所有路线

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

为什么谷歌会在我的第一个请求之前满足我的第二个请求?我试图使用Thread.sleep(1000)来确保我的请求有时间按顺序返回,同样也是计时器/计时器任务,但没有成功。有什么想法吗

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

共 (1) 个答案

  1. # 1 楼答案

    谷歌可以花多长时间来处理你的请求,你应该相应地编写代码。这适用于任何HTTP流量。即使远程服务器保证为所有请求提供固定的服务时间,Internet也不会,您的请求可能会通过任何旧的路径

    您可以修改处理代码,使响应顺序无关紧要,也可以编写代码,使其等待所有响应返回,然后自行排序

    我会推荐第一种,除非有非常具体的重要原因