【问题标题】:Google Directions API - different results for same request but with reordered parameters [duplicate]Google Directions API - 相同请求的不同结果但参数重新排序[重复]
【发布时间】:2020-06-08 17:41:14
【问题描述】:

我正在使用 Java 客户端生成以下 3 个 Google Directions API 网址:

Result -> duration: 11:40 & durationInTraffic: 12:08 -> 
/maps/api/directions/json?key=USE_YOUR_QEY&mode=driving&origin=45.41171300%2C22.21830300&destination=45.41171300%2C22.21830300&traffic_model=pessimistic&departure_time=1591716600&waypoints=optimize%3Atrue%7Cvia%3A44.51653700%2C22.35241300%7Cvia%3A44.63441300%2C22.65520500%7Cvia%3A44.72205900%2C22.39428200%7Cvia%3A45.60770700%2C22.94924000%7Cvia%3A44.54049800%2C22.77601700

Result -> duration: 11:17 & durationInTraffic: 11:52 -> 
/maps/api/directions/json?key=USE_YOUR_QEY&mode=driving&origin=45.41171300%2C22.21830300&destination=45.41171300%2C22.21830300&traffic_model=pessimistic&departure_time=1591716600&waypoints=optimize%3Atrue%7Cvia%3A44.72205900%2C22.39428200%7Cvia%3A44.63441300%2C22.65520500%7Cvia%3A44.54049800%2C22.77601700%7Cvia%3A45.60770700%2C22.94924000%7Cvia%3A44.51653700%2C22.35241300

Result -> duration: 08:20 & durationInTraffic: 08:46 -> 
/maps/api/directions/json?key=USE_YOUR_QEY&mode=driving&origin=45.41171300%2C22.21830300&destination=45.41171300%2C22.21830300&traffic_model=pessimistic&waypoints=optimize%3Atrue%7Cvia%3A44.51653700%2C22.35241300%7Cvia%3A44.54049800%2C22.77601700%7Cvia%3A44.63441300%2C22.65520500%7Cvia%3A44.72205900%2C22.39428200%7Cvia%3A45.60770700%2C22.94924000&departure_time=1591716600

如您所见,URL 包含相同的参数,但它们被重新排序(航点被重新排序是正常的,因为当我生成 URL 时,我可能会以不同的顺序获取它们,但不确定为什么其他东西被重新排序了......)。

即使我正在使用航点优化,URL 也会给出不同的结果。

有人可以解释为什么会这样吗?

发出请求的代码:

GeographicPoint origin = route.getRoute().get(0);
GeographicPoint destination = route.getRoute().get(route.getRoute().size() - 1);

List<Waypoint> waypoints = new ArrayList<>();
route.getRoute().subList(1, route.getRoute().size() - 1).forEach(waypoint -> {
waypoints.add(new Waypoint(new LatLng(waypoint.getLatitude(), waypoint.getLongitude()), false));

DirectionsResult result = DirectionsApi.newRequest(geoApiContext)
                        .origin(new LatLng(origin.getLatitude(), origin.getLongitude()))
                        .destination(new LatLng(destination.getLatitude(), destination.getLongitude()))
                        .waypoints(waypoints.toArray(new Waypoint[0]))
                        .optimizeWaypoints(true)

                        .mode(TravelMode.DRIVING)
                        .trafficModel(TrafficModel.PESSIMISTIC)
                        .departureTime(departureTime)
                        .await();

谢谢!

【问题讨论】:

    标签: google-maps google-api google-api-java-client directions google-directions-api


    【解决方案1】:

    找出问题所在。

    根据Google Directions API documentation,当航点不是中途停留时,您不能使用航点优化

    但是,我希望我的航点必须是中途停留地,这样我就可以估算出durationInTraffic但我也想优化航点。 p>

    解决方案: 做 2 个请求:

    • 第一个优化航路点(但一定要有中途停留航路点);
    • 第二个,我们使用来自请求 1 的优化航路点的顺序来获得通过已优化航路点的路线的交通估计。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-30
      • 1970-01-01
      • 2016-04-21
      • 1970-01-01
      相关资源
      最近更新 更多