diff --git a/application/src/main/java/org/opentripplanner/model/plan/WalkStepBuilder.java b/application/src/main/java/org/opentripplanner/model/plan/WalkStepBuilder.java index 293e7b16dcd..9271b5d9392 100644 --- a/application/src/main/java/org/opentripplanner/model/plan/WalkStepBuilder.java +++ b/application/src/main/java/org/opentripplanner/model/plan/WalkStepBuilder.java @@ -138,6 +138,10 @@ public String directionTextNoParens() { return str; } + public boolean hasEntrance() { + return entrance != null; + } + public WalkStepBuilder addStreetNotes(Set notes) { this.streetNotes.addAll(notes); return this; diff --git a/application/src/main/java/org/opentripplanner/routing/algorithm/mapping/StatesToWalkStepsMapper.java b/application/src/main/java/org/opentripplanner/routing/algorithm/mapping/StatesToWalkStepsMapper.java index a0b7b18f1b0..a6e2a6afcd7 100644 --- a/application/src/main/java/org/opentripplanner/routing/algorithm/mapping/StatesToWalkStepsMapper.java +++ b/application/src/main/java/org/opentripplanner/routing/algorithm/mapping/StatesToWalkStepsMapper.java @@ -275,11 +275,11 @@ private void processState(State backState, State forwardState) { boolean isOnSameStreet = lastStep .directionTextNoParens() .equals(threeBack.directionTextNoParens()); - if (twoBack.distance() < MAX_ZAG_DISTANCE && isOnSameStreet) { + if (twoBack.distance() < MAX_ZAG_DISTANCE && isOnSameStreet && !twoBack.hasEntrance()) { if (isUTurn(twoBack, lastStep)) { steps.remove(lastIndex - 1); processUTurn(lastStep, twoBack); - } else { + } else if (!lastStep.hasEntrance()) { // total hack to remove zags. steps.remove(lastIndex); steps.remove(lastIndex - 1);