Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
c85b36e566
2 changed files with 56 additions and 7 deletions
|
@ -472,6 +472,7 @@ public class RouteResultPreparation {
|
||||||
if (currentTurn == null || currentTurn.getLanes() == null) {
|
if (currentTurn == null || currentTurn.getLanes() == null) {
|
||||||
// skip
|
// skip
|
||||||
} else {
|
} else {
|
||||||
|
boolean changed = false;
|
||||||
if (nextSegment != null) {
|
if (nextSegment != null) {
|
||||||
String hw = currentSegment.getObject().getHighway();
|
String hw = currentSegment.getObject().getHighway();
|
||||||
double mergeDistance = 200;
|
double mergeDistance = 200;
|
||||||
|
@ -479,7 +480,40 @@ public class RouteResultPreparation {
|
||||||
mergeDistance = 400;
|
mergeDistance = 400;
|
||||||
}
|
}
|
||||||
if (dist < mergeDistance) {
|
if (dist < mergeDistance) {
|
||||||
mergeTurnLanes(leftside, currentSegment, nextSegment);
|
changed = mergeTurnLanes(leftside, currentSegment, nextSegment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!changed) {
|
||||||
|
TurnType tt = currentSegment.getTurnType();
|
||||||
|
boolean goForward = false;
|
||||||
|
if (tt.getValue() == TurnType.C && tt.getLanes() != null) {
|
||||||
|
for (int it = 0; it < tt.getLanes().length; it++) {
|
||||||
|
int turn = tt.getLanes()[it];
|
||||||
|
if (TurnType.getPrimaryTurn(turn) == TurnType.C ||
|
||||||
|
TurnType.getSecondaryTurn(turn) == TurnType.C ||
|
||||||
|
TurnType.getTertiaryTurn(turn) == TurnType.C) {
|
||||||
|
goForward = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(goForward) {
|
||||||
|
for (int it = 0; it < tt.getLanes().length; it++) {
|
||||||
|
int turn = tt.getLanes()[it];
|
||||||
|
if (TurnType.getPrimaryTurn(turn) != TurnType.C) {
|
||||||
|
if(TurnType.getSecondaryTurn(turn) == TurnType.C) {
|
||||||
|
int st = TurnType.getSecondaryTurn(turn);
|
||||||
|
TurnType.setSecondaryTurn(tt.getLanes(), it, TurnType.getPrimaryTurn(turn));
|
||||||
|
TurnType.setPrimaryTurn(tt.getLanes(), it, st);
|
||||||
|
} else if(TurnType.getTertiaryTurn(turn) == TurnType.C) {
|
||||||
|
int st = TurnType.getTertiaryTurn(turn);
|
||||||
|
TurnType.setTertiaryTurn(tt.getLanes(), it, TurnType.getPrimaryTurn(turn));
|
||||||
|
TurnType.setPrimaryTurn(tt.getLanes(), it, st);
|
||||||
|
} else {
|
||||||
|
tt.getLanes()[it] = turn & (~1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
nextSegment = currentSegment;
|
nextSegment = currentSegment;
|
||||||
|
@ -525,14 +559,14 @@ public class RouteResultPreparation {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void mergeTurnLanes(boolean leftSide, RouteSegmentResult currentSegment, RouteSegmentResult nextSegment) {
|
private boolean mergeTurnLanes(boolean leftSide, RouteSegmentResult currentSegment, RouteSegmentResult nextSegment) {
|
||||||
MergeTurnLaneTurn active = new MergeTurnLaneTurn(currentSegment);
|
MergeTurnLaneTurn active = new MergeTurnLaneTurn(currentSegment);
|
||||||
MergeTurnLaneTurn target = new MergeTurnLaneTurn(nextSegment);
|
MergeTurnLaneTurn target = new MergeTurnLaneTurn(nextSegment);
|
||||||
if (active.activeLen < 2) {
|
if (active.activeLen < 2) {
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
if (target.activeStartIndex == -1) {
|
if (target.activeStartIndex == -1) {
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
boolean changed = false;
|
boolean changed = false;
|
||||||
if (target.isActiveTurnMostLeft()) {
|
if (target.isActiveTurnMostLeft()) {
|
||||||
|
@ -564,7 +598,7 @@ public class RouteResultPreparation {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!changed) {
|
if (!changed) {
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// set the allowed lane bit
|
// set the allowed lane bit
|
||||||
|
@ -584,6 +618,7 @@ public class RouteResultPreparation {
|
||||||
// newTurnType.setSkipToSpeak(currentTurn.isSkipToSpeak());
|
// newTurnType.setSkipToSpeak(currentTurn.isSkipToSpeak());
|
||||||
// currentSegment.setTurnType(newTurnType);
|
// currentSegment.setTurnType(newTurnType);
|
||||||
// }
|
// }
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final int MAX_SPEAK_PRIORITY = 5;
|
private static final int MAX_SPEAK_PRIORITY = 5;
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
"longitude": 35.46842032670975
|
"longitude": 35.46842032670975
|
||||||
},
|
},
|
||||||
"expectedResults": {
|
"expectedResults": {
|
||||||
"26789": "+TU|+TL|+C,TL|C|C,TR"
|
"26789": "+TU|TL|C,TL|C|C,TR"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -87,6 +87,20 @@
|
||||||
"27091": "+TL|+TL|+TL|C|TR|TR"
|
"27091": "+TL|+TL|+TL|C|TR|TR"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"testName": "3.2 Motorway link from Ringweg Zuid TL Amstelveenseweg",
|
||||||
|
"startPoint": {
|
||||||
|
"latitude": 45.6971206184178,
|
||||||
|
"longitude": 35.51630312204361
|
||||||
|
},
|
||||||
|
"endPoint": {
|
||||||
|
"latitude": 45.69661945125,
|
||||||
|
"longitude": 35.51219849021
|
||||||
|
},
|
||||||
|
"expectedResults": {
|
||||||
|
"27091": "TL|TL|TL|+C|TR|TR"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"testName": "4.Tiefer TL Wilhelm-Kaisen-Brücke",
|
"testName": "4.Tiefer TL Wilhelm-Kaisen-Brücke",
|
||||||
"startPoint": {
|
"startPoint": {
|
||||||
|
@ -377,7 +391,7 @@
|
||||||
"longitude": 35.63232659539227
|
"longitude": 35.63232659539227
|
||||||
},
|
},
|
||||||
"expectedResults": {
|
"expectedResults": {
|
||||||
"202493001": "+TL,C|TR"
|
"202493001": "+C,TL|TR"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue