Intermediate points

This commit is contained in:
Victor Shcherb 2012-09-17 18:27:14 +02:00
parent 0ce4b23f2a
commit c0b008df38
3 changed files with 13 additions and 7 deletions

View file

@ -621,6 +621,10 @@ public class RouteCalculationResult {
}
}
public void passIntermediatePoint(){
nextIntermediate ++ ;
}
public Location getLocationFromRouteDirection(RouteDirectionInfo i){
if(i.routePointOffset < locations.size()){
return locations.get(i.routePointOffset);

View file

@ -339,22 +339,23 @@ public class RoutingHelper {
}
// 2. check if intermediate found
if(getLeftDistanceNextIntermediate() < posTolerance * 1.5f){
if(route.getIntermediatePointsToPass() > 0 && route.getDistanceToNextIntermediate(lastFixedLocation) < posTolerance) {
showMessage(context.getString(R.string.arrived_at_intermediate_point));
voiceRouter.arrivedIntermediatePoint();
}
if(intermediatePoints != null && intermediatePoints.size() > 0) {
while(route.getIntermediatePointsToPass() > settings.getIntermediatePoints().size()) {
route.passIntermediatePoint();
int toDel = settings.getIntermediatePoints().size() - route.getIntermediatePointsToPass();
while(toDel > 0) {
settings.deleteIntermediatePoint(0);
toDel--;
}
while(route.getIntermediatePointsToPass() > intermediatePoints.size()) {
while(intermediatePoints != null && route.getIntermediatePointsToPass() < intermediatePoints.size()) {
intermediatePoints.remove(0);
}
}
// 3. check if destination found
Location lastPoint = routeNodes.get(routeNodes.size() - 1);
if (currentRoute > routeNodes.size() - 3 && currentLocation.distanceTo(lastPoint) < posTolerance * 1.5) {
if (currentRoute > routeNodes.size() - 3 && currentLocation.distanceTo(lastPoint) < posTolerance * 1.2) {
showMessage(context.getString(R.string.arrived_at_destination));
voiceRouter.arrivedDestinationPoint();
clearCurrentRoute(null, null);

View file

@ -97,7 +97,8 @@ public class PointNavigationLayer extends OsmandMapLayer {
int locationY = view.getMapYForPoint(ip.getLatitude());
canvas.rotate(-view.getRotate(), locationX, locationY);
canvas.drawBitmap(intermediatePoint, locationX - marginX, locationY - marginY, bitmapPaint);
canvas.drawText(index + "", locationX + marginX, locationY, textPaint);
canvas.drawText(index + "", locationX + marginX, locationY - marginY / 2, textPaint);
canvas.rotate(view.getRotate(), locationX, locationY);
}
}
if (isLocationVisible(pointToNavigate)) {