OsmAnd/OsmAnd-java/src/main/java/net/osmand/router/RouteCalculationProgress.java

52 lines
1.4 KiB
Java
Raw Normal View History

package net.osmand.router;
public class RouteCalculationProgress {
public int segmentNotFound = -1;
public float distanceFromBegin;
2014-02-02 14:06:09 +01:00
public float directDistance;
public int directSegmentQueueSize;
public float distanceFromEnd;
public int reverseSegmentQueueSize;
2014-02-02 14:06:09 +01:00
public float reverseDistance;
public float totalEstimatedDistance = 0;
public float routingCalculatedTime = 0;
public int loadedTiles = 0;
public int visitedSegments = 0;
2018-05-29 23:04:00 +02:00
public int totalIterations = 1;
2018-05-29 23:07:24 +02:00
public int iteration = -1;
2018-05-29 23:04:00 +02:00
public boolean isCancelled;
2017-04-11 17:28:58 +02:00
public boolean requestPrivateAccessRouting;
2018-05-29 23:15:59 +02:00
2018-05-30 14:20:50 +02:00
private static final float INITIAL_PROGRESS = 0.05f;
2018-05-30 11:45:19 +02:00
private static final float FIRST_ITERATION = 0.72f;
2018-05-29 23:15:59 +02:00
public float getLinearProgress() {
float p = Math.max(distanceFromBegin, distanceFromEnd);
2018-05-30 14:20:50 +02:00
float all = totalEstimatedDistance * 1.35f;
2018-05-30 11:45:19 +02:00
float pr = 0;
2018-05-29 23:15:59 +02:00
if (all > 0) {
2018-05-30 14:20:50 +02:00
pr = Math.min(p * p / (all * all), 1);
2018-05-29 23:15:59 +02:00
}
2018-05-30 14:20:50 +02:00
float progress = INITIAL_PROGRESS;
2018-05-30 11:45:19 +02:00
if (totalIterations > 1) {
2018-05-30 14:20:50 +02:00
if (iteration < 1) {
progress = pr * FIRST_ITERATION + INITIAL_PROGRESS;
2018-05-29 23:15:59 +02:00
} else {
2018-05-30 14:20:50 +02:00
progress = (INITIAL_PROGRESS + FIRST_ITERATION) + pr * (1 - FIRST_ITERATION - INITIAL_PROGRESS);
2018-05-29 23:15:59 +02:00
}
2018-05-30 11:45:19 +02:00
} else {
2018-05-30 14:20:50 +02:00
progress = INITIAL_PROGRESS + pr * (1 - INITIAL_PROGRESS);
2018-05-29 23:15:59 +02:00
}
2018-05-30 11:45:19 +02:00
return Math.min(progress * 100f, 99);
2018-05-29 23:15:59 +02:00
}
2018-05-30 13:22:41 +02:00
public void nextIteration() {
iteration++;
totalEstimatedDistance = 0;
}
}