From 68b6edc58002c03b719c821ed9623a008a42ed4a Mon Sep 17 00:00:00 2001 From: afischerdev Date: Wed, 2 Apr 2025 18:58:31 +0200 Subject: [PATCH 1/2] added switch to avoid u-turns --- brouter-core/src/main/java/btools/router/RoutingContext.java | 3 +++ brouter-core/src/main/java/btools/router/RoutingEngine.java | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/brouter-core/src/main/java/btools/router/RoutingContext.java b/brouter-core/src/main/java/btools/router/RoutingContext.java index f5b2bf3..c1d63c5 100644 --- a/brouter-core/src/main/java/btools/router/RoutingContext.java +++ b/brouter-core/src/main/java/btools/router/RoutingContext.java @@ -77,6 +77,7 @@ public final class RoutingContext { public double waypointCatchingRange; public boolean correctMisplacedViaPoints; public double correctMisplacedViaPointsDistance; + public boolean continueStraight; public boolean useDynamicDistance; public boolean buildBeelineOnRange; @@ -126,6 +127,8 @@ public final class RoutingContext { correctMisplacedViaPoints = 0.f != expctxGlobal.getVariableValue("correctMisplacedViaPoints", 1.f); correctMisplacedViaPointsDistance = expctxGlobal.getVariableValue("correctMisplacedViaPointsDistance", 0.f); // 0 == don't use distance + continueStraight = 0.f != expctxGlobal.getVariableValue("continueStraight", 0.f); + // process tags not used in the profile (to have them in the data-tab) processUnusedTags = 0.f != expctxGlobal.getVariableValue("processUnusedTags", 0.f); diff --git a/brouter-core/src/main/java/btools/router/RoutingEngine.java b/brouter-core/src/main/java/btools/router/RoutingEngine.java index 698bc7b..8c2e9de 100644 --- a/brouter-core/src/main/java/btools/router/RoutingEngine.java +++ b/brouter-core/src/main/java/btools/router/RoutingEngine.java @@ -995,7 +995,7 @@ public class RoutingEngine extends Thread { } else { seg = searchTrack(matchedWaypoints.get(i), matchedWaypoints.get(i + 1), i == matchedWaypoints.size() - 2 ? nearbyTrack : null, refTracks[i]); wptIndex = i; - if (engineMode == BROUTER_ENGINEMODE_ROUNDTRIP) { + if (routingContext.continueStraight) { if (i < matchedWaypoints.size() - 2) { OsmNode lastPoint = seg.containsNode(matchedWaypoints.get(i+1).node1) ? matchedWaypoints.get(i+1).node1 : matchedWaypoints.get(i+1).node2; OsmNodeNamed nogo = new OsmNodeNamed(lastPoint); From 02733ffbec5bd693c677753b0bf08f4b9976b3ec Mon Sep 17 00:00:00 2001 From: afischerdev Date: Sat, 5 Apr 2025 12:29:55 +0200 Subject: [PATCH 2/2] reactivated end distance control --- .../src/main/java/btools/router/RoutingEngine.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/brouter-core/src/main/java/btools/router/RoutingEngine.java b/brouter-core/src/main/java/btools/router/RoutingEngine.java index 8c2e9de..e8c80b5 100644 --- a/brouter-core/src/main/java/btools/router/RoutingEngine.java +++ b/brouter-core/src/main/java/btools/router/RoutingEngine.java @@ -1137,7 +1137,12 @@ public class RoutingEngine extends Thread { indexfore++; if (routingContext.correctMisplacedViaPointsDistance > 0 && - wayDistance > routingContext.correctMisplacedViaPointsDistance) break; + wayDistance > routingContext.correctMisplacedViaPointsDistance) { + removeVoiceHintList.clear(); + removeBackList.clear(); + removeForeList.clear(); + return false; + } }