Suppress turn prompt if prescribed direction of motion is between 45 and 135 degrees off
This commit is contained in:
parent
943d18cb26
commit
92a58c7afd
1 changed files with 24 additions and 4 deletions
|
@ -218,6 +218,7 @@ public class RoutingHelper {
|
||||||
|
|
||||||
makeUturnWhenPossible = false;
|
makeUturnWhenPossible = false;
|
||||||
boolean calculateRoute = false;
|
boolean calculateRoute = false;
|
||||||
|
boolean suppressTurnPrompt = false;
|
||||||
synchronized (this) {
|
synchronized (this) {
|
||||||
if(routeNodes.isEmpty() || routeNodes.size() <= currentRoute){
|
if(routeNodes.isEmpty() || routeNodes.size() <= currentRoute){
|
||||||
calculateRoute = true;
|
calculateRoute = true;
|
||||||
|
@ -339,7 +340,7 @@ public class RoutingHelper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 5. Also bearing could be checked (is it same direction)
|
// X. Also bearing could be checked (is it same direction)
|
||||||
// float bearing;
|
// float bearing;
|
||||||
// if(currentLocation.hasBearing()){
|
// if(currentLocation.hasBearing()){
|
||||||
// bearing = currentLocation.getBearing();
|
// bearing = currentLocation.getBearing();
|
||||||
|
@ -351,7 +352,25 @@ public class RoutingHelper {
|
||||||
// something wrong however it could be starting movement
|
// something wrong however it could be starting movement
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// 6. Check necessity for unscheduled U-turn, Issue 863
|
// 6. Suppress turn prompt if prescribed direction of motion is between 45 and 135 degrees off
|
||||||
|
if(routeNodes.size() > 0){
|
||||||
|
if (currentLocation.hasBearing() || lastFixedLocation != null) {
|
||||||
|
float bearing = currentLocation.hasBearing() ? currentLocation.getBearing() : lastFixedLocation.bearingTo(currentLocation);
|
||||||
|
float bearingRoute;
|
||||||
|
bearingRoute = currentLocation.bearingTo(routeNodes.get(currentRoute));
|
||||||
|
if (Math.abs(bearing - bearingRoute) > 45f && 360 - Math.abs(bearing - bearingRoute) > 45f) {
|
||||||
|
if (Math.abs(bearing - bearingRoute) <= 135f && 360 - Math.abs(bearing - bearingRoute) <= 135f) {
|
||||||
|
//float d = currentLocation.distanceTo(routeNodes.get(currentRoute));
|
||||||
|
//if (d > 50) {
|
||||||
|
suppressTurnPrompt = true;
|
||||||
|
//log.info("Bearing is off from bearingRoute between >45 and <=135 degrees"); //$NON-NLS-1$
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 7. Check necessity for unscheduled U-turn, Issue 863
|
||||||
if(routeNodes.size() > 0){
|
if(routeNodes.size() > 0){
|
||||||
if (currentLocation.hasBearing() || lastFixedLocation != null) {
|
if (currentLocation.hasBearing() || lastFixedLocation != null) {
|
||||||
float bearing = currentLocation.hasBearing() ? currentLocation.getBearing() : lastFixedLocation.bearingTo(currentLocation);
|
float bearing = currentLocation.hasBearing() ? currentLocation.getBearing() : lastFixedLocation.bearingTo(currentLocation);
|
||||||
|
@ -369,8 +388,9 @@ public class RoutingHelper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
voiceRouter.updateStatus(currentLocation, makeUturnWhenPossible);
|
if (suppressTurnPrompt == false) {
|
||||||
|
voiceRouter.updateStatus(currentLocation, makeUturnWhenPossible);
|
||||||
|
}
|
||||||
lastFixedLocation = currentLocation;
|
lastFixedLocation = currentLocation;
|
||||||
if(calculateRoute){
|
if(calculateRoute){
|
||||||
recalculateRouteInBackground(lastFixedLocation, finalLocation, currentGPXRoute);
|
recalculateRouteInBackground(lastFixedLocation, finalLocation, currentGPXRoute);
|
||||||
|
|
Loading…
Reference in a new issue