Fix using rtept as intermediates recalculation
This commit is contained in:
parent
92ec8bbb4a
commit
f92438d334
4 changed files with 17 additions and 6 deletions
|
@ -31,7 +31,6 @@ import net.osmand.Location;
|
||||||
import net.osmand.PlatformUtil;
|
import net.osmand.PlatformUtil;
|
||||||
import net.osmand.data.LocationPoint;
|
import net.osmand.data.LocationPoint;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.plus.GPXUtilities.GPXFile;
|
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
|
|
|
@ -175,6 +175,7 @@ public class DistanceCalculatorPlugin extends OsmandPlugin {
|
||||||
measurementPoints.add(new LinkedList<GPXUtilities.WptPt>());
|
measurementPoints.add(new LinkedList<GPXUtilities.WptPt>());
|
||||||
} else if (id == R.string.distance_measurement_clear_route) {
|
} else if (id == R.string.distance_measurement_clear_route) {
|
||||||
distanceMeasurementMode = 0;
|
distanceMeasurementMode = 0;
|
||||||
|
originalGPX = null;
|
||||||
measurementPoints.clear();
|
measurementPoints.clear();
|
||||||
calculateDistance();
|
calculateDistance();
|
||||||
} else if (id == R.string.shared_string_save_as_gpx) {
|
} else if (id == R.string.shared_string_save_as_gpx) {
|
||||||
|
|
|
@ -52,8 +52,8 @@ public class OsmEditsLayer extends OsmandMapLayer implements ContextMenuLayer.IC
|
||||||
pointAtUI.setColor(0xa0FF3344);
|
pointAtUI.setColor(0xa0FF3344);
|
||||||
pointAtUI.setStyle(Paint.Style.FILL);
|
pointAtUI.setStyle(Paint.Style.FILL);
|
||||||
|
|
||||||
poi = BitmapFactory.decodeResource(view.getResources(), R.drawable.map_pin_origin);
|
poi = BitmapFactory.decodeResource(view.getResources(), R.drawable.map_pin_poi);
|
||||||
bug = BitmapFactory.decodeResource(view.getResources(), R.drawable.map_pin_destination);
|
bug = BitmapFactory.decodeResource(view.getResources(), R.drawable.map_pin_poi);
|
||||||
|
|
||||||
paintIcon = new Paint();
|
paintIcon = new Paint();
|
||||||
|
|
||||||
|
|
|
@ -354,8 +354,7 @@ public class RouteProvider {
|
||||||
// get the closest point to start and to end
|
// get the closest point to start and to end
|
||||||
GPXRouteParams gpxParams = routeParams.gpxRoute;
|
GPXRouteParams gpxParams = routeParams.gpxRoute;
|
||||||
if(routeParams.gpxRoute.useIntermediatePointsRTE){
|
if(routeParams.gpxRoute.useIntermediatePointsRTE){
|
||||||
final List<Location> intermediates = gpxParams.points;
|
return calculateOsmAndRouteWithIntermediatePoints(routeParams, gpxParams.points);
|
||||||
return calculateOsmAndRouteWithIntermediatePoints(routeParams, intermediates);
|
|
||||||
}
|
}
|
||||||
List<Location> gpxRoute ;
|
List<Location> gpxRoute ;
|
||||||
int[] startI = new int[]{0};
|
int[] startI = new int[]{0};
|
||||||
|
@ -399,7 +398,19 @@ public class RouteProvider {
|
||||||
rp.onlyStartPointChanged = routeParams.onlyStartPointChanged;
|
rp.onlyStartPointChanged = routeParams.onlyStartPointChanged;
|
||||||
rp.previousToRecalculate = routeParams.previousToRecalculate;
|
rp.previousToRecalculate = routeParams.previousToRecalculate;
|
||||||
rp.intermediates = new ArrayList<LatLon>();
|
rp.intermediates = new ArrayList<LatLon>();
|
||||||
for(Location w : intermediates) {
|
int closest = 0;
|
||||||
|
double maxDist = Double.POSITIVE_INFINITY;
|
||||||
|
for (int i = 0; i < intermediates.size(); i++) {
|
||||||
|
Location loc = intermediates.get(i);
|
||||||
|
double dist = MapUtils.getDistance(loc.getLatitude(), loc.getLongitude(), rp.start.getLatitude(),
|
||||||
|
rp.start.getLongitude());
|
||||||
|
if (dist <= maxDist) {
|
||||||
|
closest = i;
|
||||||
|
maxDist = dist;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(int i = closest; i< intermediates.size() ; i++ ){
|
||||||
|
Location w = intermediates.get(i);
|
||||||
rp.intermediates.add(new LatLon(w.getLatitude(), w.getLongitude()));
|
rp.intermediates.add(new LatLon(w.getLatitude(), w.getLongitude()));
|
||||||
}
|
}
|
||||||
return findVectorMapsRoute(rp, false);
|
return findVectorMapsRoute(rp, false);
|
||||||
|
|
Loading…
Reference in a new issue