use of com.mapbox.api.directions.v5.models.RouteLeg in project mapbox-navigation-android by mapbox.
the class NavigationEventDispatcherTest method setNavigationMetricListener_didNotGetTriggeredUntilArrival.
@Test
public void setNavigationMetricListener_didNotGetTriggeredUntilArrival() throws Exception {
RouteLeg lastLeg = route.legs().get(route.legs().size() - 1);
int lastStepIndex = lastLeg.steps().indexOf(lastLeg.steps().get(lastLeg.steps().size() - 1));
navigationEventDispatcher.addMetricEventListeners(eventListeners);
navigationEventDispatcher.addMetricArrivalListener(arrivalListener);
// Progress that hasn't arrived
RouteProgress routeProgressDidNotArrive = RouteProgress.builder().stepDistanceRemaining(100).legDistanceRemaining(100).distanceRemaining(100).directionsRoute(route).stepIndex(lastStepIndex).legIndex(0).build();
navigationEventDispatcher.onProgressChange(location, routeProgressDidNotArrive);
verify(eventListeners, times(1)).onRouteProgressUpdate(routeProgressDidNotArrive);
verify(arrivalListener, times(0)).onArrival(location, routeProgressDidNotArrive);
// Progress that has arrived
RouteProgress routeProgressDidArrive = RouteProgress.builder().stepDistanceRemaining(30).legDistanceRemaining(30).distanceRemaining(30).directionsRoute(route).stepIndex(lastStepIndex).legIndex(0).build();
navigationEventDispatcher.onProgressChange(location, routeProgressDidArrive);
verify(eventListeners, times(1)).onRouteProgressUpdate(routeProgressDidArrive);
verify(arrivalListener, times(1)).onArrival(location, routeProgressDidArrive);
}
use of com.mapbox.api.directions.v5.models.RouteLeg in project mapbox-navigation-android by mapbox.
the class RouteProgressTest method setup.
@Before
public void setup() throws IOException {
Gson gson = new GsonBuilder().registerTypeAdapterFactory(DirectionsAdapterFactory.create()).create();
String body = loadJsonFixture(DIRECTIONS_PRECISION_6);
DirectionsResponse response = gson.fromJson(body, DirectionsResponse.class);
route = response.routes().get(0);
RouteLeg firstLeg = route.legs().get(0);
// Multiple leg route
body = loadJsonFixture(MULTI_LEG_ROUTE);
response = gson.fromJson(body, DirectionsResponse.class);
multiLegRoute = response.routes().get(0);
beginningRouteProgress = RouteProgress.builder().stepDistanceRemaining(route.legs().get(0).steps().get(0).distance()).legDistanceRemaining(route.legs().get(0).distance()).distanceRemaining(route.distance()).directionsRoute(route).stepIndex(0).legIndex(0).build();
lastRouteProgress = RouteProgress.builder().stepDistanceRemaining(route.legs().get(0).steps().get(firstLeg.steps().size() - 1).distance()).legDistanceRemaining(route.legs().get(0).distance()).distanceRemaining(0).directionsRoute(route).stepIndex(firstLeg.steps().size() - 1).legIndex(route.legs().size() - 1).build();
}
use of com.mapbox.api.directions.v5.models.RouteLeg in project mapbox-navigation-android by mapbox.
the class NavigationMapRoute method buildTrafficFeaturesFromRoute.
private void buildTrafficFeaturesFromRoute(DirectionsRoute route, int index, List<Feature> features, LineString lineString) {
for (RouteLeg leg : route.legs()) {
if (leg.annotation() != null && leg.annotation().congestion() != null) {
for (int i = 0; i < leg.annotation().congestion().size(); i++) {
// See https://github.com/mapbox/mapbox-navigation-android/issues/353
if (leg.annotation().congestion().size() + 1 <= lineString.getCoordinates().size()) {
double[] startCoord = lineString.getCoordinates().get(i).getCoordinates();
double[] endCoord = lineString.getCoordinates().get(i + 1).getCoordinates();
LineString congestionLineString = LineString.fromCoordinates(new double[][] { startCoord, endCoord });
Feature feature = Feature.fromGeometry(congestionLineString);
feature.addStringProperty(CONGESTION_KEY, leg.annotation().congestion().get(i));
feature.addStringProperty(SOURCE_KEY, String.format(Locale.US, ID_FORMAT, GENERIC_ROUTE_SOURCE_ID, index));
feature.addNumberProperty(INDEX_KEY, index);
features.add(feature);
}
}
} else {
Feature feature = Feature.fromGeometry(lineString);
features.add(feature);
}
}
}
use of com.mapbox.api.directions.v5.models.RouteLeg in project mapbox-navigation-android by mapbox.
the class RouteViewModel method obtainRouteLegDescriptionFrom.
private String obtainRouteLegDescriptionFrom(DirectionsRoute route) {
List<RouteLeg> routeLegs = route.legs();
StringBuilder routeLegDescription = new StringBuilder();
for (RouteLeg leg : routeLegs) {
routeLegDescription.append(leg.summary());
}
return routeLegDescription.toString();
}
use of com.mapbox.api.directions.v5.models.RouteLeg in project mapbox-navigation-android by mapbox.
the class RouteUtilsTest method obtainLastStepIndex.
private int obtainLastStepIndex(DirectionsRoute route) throws IOException {
RouteLeg lastLeg = route.legs().get(route.legs().size() - 1);
int lastStepIndex = lastLeg.steps().indexOf(lastLeg.steps().get(lastLeg.steps().size() - 1));
return lastStepIndex;
}
Aggregations