Хотелось бы узнать, как пересчитать маршрут в Android mapbox, так как выход из маршрута продолжается в том же первоначально отображенном виде.Для пунктирного маршрута запустите навигацию и даже оставьте ее, и навигация и маршрут не пересчитываются.Я благодарю всех.
public void getRoute(List<Point> waypoints){
waypointSize = waypoints.size();
Log.d("tag", "WaypointSSize: "+waypoints.size());
// Transforma localizacao atual em Point para o MapBox
Point origin = Point.fromLngLat(currentLocation.getLongitude(),currentLocation.getLatitude());
Log.d("tag", "Origin: "+origin);
for (Point destination : waypoints){
// Criando a rota -> Token tem que ser AccessToken
NavigationRoute.Builder builder = NavigationRoute.builder(this)
.accessToken("sk.eyJ1IjoiYWhlbnRyZWdhIiwiYSI6ImNqc2NkZ2ptZjAwYmEzenA2Zmo0MDBoNjQifQ.0r13_lXZMCNdaWrkYddRLg")
.origin(origin)
.destination(destination);
builder.build().getRoute(new Callback<DirectionsResponse>() {
@Override
public void onResponse(Call<DirectionsResponse> call, Response<DirectionsResponse> response) {
Log.d("tag", ""+response.code());
// Verificando se a problema como o AccessToken
if (response.body() == null){
Log.d("tag","Nenhuma rota encontrada, check access token");
return;
// Verificando se nao foi encontrada nenhuma rota
}else if(response.body().routes().size() < 1){
Log.d("tag","Nenhuma rota encontrada");
return;
}
// Adicionando a rota a variavel do MapBox
currentRoute = response.body().routes().get(0);
if (distancia == 0){
distancia = currentRoute.distance();
route = currentRoute;
}else if (distancia > currentRoute.distance()){
distancia = currentRoute.distance();
route = currentRoute;
}
cont++;
if (cont == waypointSize){
// Verificando se ja existe uma rota no mapa
if (navigationMapRoute != null) {
navigationMapRoute.removeRoute();
} else {
navigationMapRoute = new NavigationMapRoute(null, mapView, map);
}
// Adicionando a rota no mapa
navigationMapRoute.addRoute(route);
navigation.startNavigation(route);
// LatLng para marcar no mapa o destino
LatLng latLng = new LatLng(destination.latitude(),destination.longitude());
map.addMarker(new MarkerOptions().setPosition(latLng));
}
Log.d("tag", ""+currentRoute.distance());
Log.d("tag", ""+currentRoute.duration());
}
@Override
public void onFailure(Call<DirectionsResponse> call, Throwable t) {
Log.d("Rota",t.getMessage());
}
});
}
Log.d("Rota", "WaypointSSize: "+waypoints.size());
}