diff --git a/.gitignore b/.gitignore index 87cca88345c..9ba517adf2a 100644 --- a/.gitignore +++ b/.gitignore @@ -48,6 +48,6 @@ build #Rendering test files OsmAnd-java/src/test/resources/rendering/* - +OsmAnd-shared/bin # ApproximationTest resources OsmAnd-java/src/test/resources/approximation/* diff --git a/OsmAnd-java/src/main/java/net/osmand/router/GpxMultiSegmentsApproximation.java b/OsmAnd-java/src/main/java/net/osmand/router/GpxMultiSegmentsApproximation.java index 2a9c8fadd64..6dacebaf808 100644 --- a/OsmAnd-java/src/main/java/net/osmand/router/GpxMultiSegmentsApproximation.java +++ b/OsmAnd-java/src/main/java/net/osmand/router/GpxMultiSegmentsApproximation.java @@ -21,30 +21,30 @@ public class GpxMultiSegmentsApproximation { private static final double MIN_BRANCHING_DIST = 10; // 5 m for branching private static boolean EAGER_ALGORITHM = false; private static boolean PRIORITY_ALGORITHM = !EAGER_ALGORITHM; + private final boolean TEST_SHIFT_GPX_POINTS = false; + private static boolean DEBUG = false; ///////////////////////// private static final int ROUTE_POINTS = 12; private static final int GPX_MAX = 30; // 1M - private final RoutePlannerFrontEnd frontEnd; - private final GpxRouteApproximation gctx; - private final List gpxPoints; - private final float minPointApproximation; - private final float initDist; - /// Evaluation variables - - Comparator METRICS_COMPARATOR = new Comparator() { + final Comparator METRICS_COMPARATOR = new Comparator() { @Override public int compare(RouteSegmentAppr o1, RouteSegmentAppr o2) { return Double.compare(o1.metric(), o2.metric()); } }; - java.util.PriorityQueue queue = new java.util.PriorityQueue<>(METRICS_COMPARATOR); - private TLongHashSet visited = new TLongHashSet(); - private final boolean TEST_SHIFT_GPX_POINTS = false; - private static boolean DEBUG = false; + /// Evaluation variables + private final RoutePlannerFrontEnd frontEnd; + private final GpxRouteApproximation gctx; + private final List gpxPoints; + private final float minPointApproximation; + private final float initDist; + java.util.PriorityQueue queue = new java.util.PriorityQueue<>(METRICS_COMPARATOR); + TLongHashSet visited = new TLongHashSet(); + private static class RouteSegmentAppr { private final RouteSegment segment; @@ -378,7 +378,8 @@ private void wrapupRoute(List gpxPoints, RouteSegmentAppr bestRoute) { r.setGpxPointIndex(startInd); // required for reconstructFinalPointsFromFullRoute() } gpxPoints.get(startInd).routeToTarget = res; - gpxPoints.get(startInd).targetInd = last; + gpxPoints.get(startInd).targetInd = last; // keep straight line + gpxPoints.get(startInd).breakSegment = true; } private static long calculateRoutePointId(RouteSegmentAppr segm) { diff --git a/OsmAnd-java/src/main/java/net/osmand/router/GpxRouteApproximation.java b/OsmAnd-java/src/main/java/net/osmand/router/GpxRouteApproximation.java index 15db252ae32..fa65628dd83 100644 --- a/OsmAnd-java/src/main/java/net/osmand/router/GpxRouteApproximation.java +++ b/OsmAnd-java/src/main/java/net/osmand/router/GpxRouteApproximation.java @@ -362,6 +362,7 @@ private void calculateGpxRoute(GpxRouteApproximation gctx, List i+1 + breakSegment = true; + i++; + } + if (breakSegment || pnt.breakSegment) { if (lastStraightLine == null) { lastStraightLine = new ArrayList(); if (gctx.getLastPoint() != null && gctx.finalPoints.size() > 0) { @@ -390,38 +395,38 @@ private void calculateGpxRoute(GpxRouteApproximation gctx, List routeToTarget; public List stepBackRoute; public int targetInd = -1;