예제 #1
0
  public GHResponse route(
      List<GHPoint> waypoints, List<Double> headings, boolean withInstructions) {
    if (waypoints.size() < 2) {
      throw new IllegalArgumentException("Number of waypoints must be greater or equal 2");
    }

    GHRequest request;
    if (headings != null) {
      request = new GHRequest(waypoints, headings);
      request.setVehicle(FlagEncoderFactory.CAR);
      request.setWeighting("fastest");
      if (!USE_CONTRACTION_HIERARCHIES) {
        request.getHints().put(Parameters.CH.DISABLE, true);
        request.getHints().put("routing.flexible_mode.force", true);
        request.getHints().put(Parameters.Routing.EDGE_BASED, true);
      } else {
        request
            .getHints()
            .put(
                Parameters.CH.FORCE_HEADING,
                true); // Allow headings for routes using CH, but may produce artifacts (see
        // https://github.com/graphhopper/graphhopper/pull/434#issuecomment-110275256)
      }
    } else {
      request = new GHRequest(waypoints);
    }
    request.setLocale(Locale.getDefault()).setAlgorithm(Parameters.Algorithms.DIJKSTRA_BI);
    if (!withInstructions) {
      request.getHints().put(Parameters.Routing.INSTRUCTIONS, false);
    }
    return gh.route(request);
  }