small Graphhopper turn types code improvement
This commit is contained in:
parent
5b78dd0143
commit
5097b11dfe
2 changed files with 12 additions and 22 deletions
|
@ -76,18 +76,7 @@ public class GraphhopperEngine extends OnlineRoutingEngine {
|
||||||
if (!isEmpty(apiKey)) {
|
if (!isEmpty(apiKey)) {
|
||||||
sb.append('&').append("key=").append(apiKey);
|
sb.append('&').append("key=").append(apiKey);
|
||||||
}
|
}
|
||||||
// available Graphhopper details data
|
|
||||||
sb.append('&').append("details=").append("street_name");
|
|
||||||
sb.append('&').append("details=").append("time");
|
|
||||||
sb.append('&').append("details=").append("distance");
|
|
||||||
sb.append('&').append("details=").append("max_speed");
|
|
||||||
sb.append('&').append("details=").append("toll");
|
|
||||||
sb.append('&').append("details=").append("road_class");
|
|
||||||
sb.append('&').append("details=").append("road_class_link");
|
|
||||||
sb.append('&').append("details=").append("road_access");
|
|
||||||
sb.append('&').append("details=").append("road_environment");
|
|
||||||
sb.append('&').append("details=").append("lanes");
|
sb.append('&').append("details=").append("lanes");
|
||||||
sb.append('&').append("details=").append("surface");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
|
@ -105,15 +94,15 @@ public class GraphhopperEngine extends OnlineRoutingEngine {
|
||||||
for (int i = 0; i < instructions.length(); i++) {
|
for (int i = 0; i < instructions.length(); i++) {
|
||||||
JSONObject item = instructions.getJSONObject(i);
|
JSONObject item = instructions.getJSONObject(i);
|
||||||
int sign = Integer.parseInt(item.getString("sign"));
|
int sign = Integer.parseInt(item.getString("sign"));
|
||||||
double distance = Double.parseDouble(item.getString("distance"));
|
int distance = (int) Math.round(Double.parseDouble(item.getString("distance")));
|
||||||
String text = item.getString("text");
|
String description = item.getString("text");
|
||||||
String streetName = item.getString("street_name");
|
String streetName = item.getString("street_name");
|
||||||
int time = Integer.parseInt(item.getString("time")) / 1000;
|
int timeInSeconds = (int) Math.round(Integer.parseInt(item.getString("time")) / 1000f);
|
||||||
JSONArray interval = item.getJSONArray("interval");
|
JSONArray interval = item.getJSONArray("interval");
|
||||||
int startPointOffset = interval.getInt(0);
|
int startPointOffset = interval.getInt(0);
|
||||||
int endPointOffset = interval.getInt(1);
|
int endPointOffset = interval.getInt(1);
|
||||||
|
|
||||||
float averageSpeed = (float) distance / time;
|
float averageSpeed = (float) distance / timeInSeconds;
|
||||||
TurnType turnType = identifyTurnType(sign, leftSideNavigation);
|
TurnType turnType = identifyTurnType(sign, leftSideNavigation);
|
||||||
// TODO turnType.setTurnAngle()
|
// TODO turnType.setTurnAngle()
|
||||||
|
|
||||||
|
@ -122,9 +111,9 @@ public class GraphhopperEngine extends OnlineRoutingEngine {
|
||||||
if (turnType != null && turnType.isRoundAbout()) {
|
if (turnType != null && turnType.isRoundAbout()) {
|
||||||
direction.routeEndPointOffset = endPointOffset;
|
direction.routeEndPointOffset = endPointOffset;
|
||||||
}
|
}
|
||||||
direction.setDescriptionRoute(text);
|
direction.setDescriptionRoute(description);
|
||||||
direction.setStreetName(streetName);
|
direction.setStreetName(streetName);
|
||||||
direction.setDistance((int) distance); // TODO convert to int correctly
|
direction.setDistance(distance);
|
||||||
directions.add(direction);
|
directions.add(direction);
|
||||||
}
|
}
|
||||||
return new OnlineRoutingResponse(route, directions);
|
return new OnlineRoutingResponse(route, directions);
|
||||||
|
@ -142,15 +131,15 @@ public class GraphhopperEngine extends OnlineRoutingEngine {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param sign a number which specifies the turn type to show (Graphhopper API)
|
* @param sign - a number which specifies the turn type to show (Graphhopper API value)
|
||||||
* @return TurnType object defined in OsmAnd which is similar to Graphhopper sign parameter
|
* @return a TurnType object defined in OsmAnd which is equivalent to a value from the Graphhopper API
|
||||||
*
|
*
|
||||||
* For future compatibility it is important that all clients
|
* For future compatibility it is important that all clients
|
||||||
* are able to handle also unknown instruction sign numbers
|
* are able to handle also unknown instruction sign numbers
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public static TurnType identifyTurnType(int sign, boolean leftSide) {
|
public static TurnType identifyTurnType(int sign, boolean leftSide) {
|
||||||
int id = -1;
|
int id = INVALID_ID;
|
||||||
|
|
||||||
if (sign == -98) {
|
if (sign == -98) {
|
||||||
// an U-turn without the knowledge
|
// an U-turn without the knowledge
|
||||||
|
@ -216,6 +205,6 @@ public class GraphhopperEngine extends OnlineRoutingEngine {
|
||||||
id = TurnType.TRU;
|
id = TurnType.TRU;
|
||||||
}
|
}
|
||||||
|
|
||||||
return id != -1 ? TurnType.valueOf(id, leftSide) : null;
|
return id != INVALID_ID ? TurnType.valueOf(id, leftSide) : null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,8 @@ import static net.osmand.util.Algorithms.isEmpty;
|
||||||
public abstract class OnlineRoutingEngine implements Cloneable {
|
public abstract class OnlineRoutingEngine implements Cloneable {
|
||||||
|
|
||||||
public final static String ONLINE_ROUTING_ENGINE_PREFIX = "online_routing_engine_";
|
public final static String ONLINE_ROUTING_ENGINE_PREFIX = "online_routing_engine_";
|
||||||
public static final VehicleType CUSTOM_VEHICLE = new VehicleType("", R.string.shared_string_custom);
|
public final static VehicleType CUSTOM_VEHICLE = new VehicleType("", R.string.shared_string_custom);
|
||||||
|
public final static int INVALID_ID = -1;
|
||||||
|
|
||||||
private final Map<String, String> params = new HashMap<>();
|
private final Map<String, String> params = new HashMap<>();
|
||||||
private final List<VehicleType> allowedVehicles = new ArrayList<>();
|
private final List<VehicleType> allowedVehicles = new ArrayList<>();
|
||||||
|
|
Loading…
Reference in a new issue