У меня есть вопрос. Я хочу получить кратчайший маршрут , и я использовал этот алгоритм. Сначала я собрал ноги всех маршрутов, а затем я выбрал самую короткую ногу. Но я не уверен, правда ли это. Это правильный способ найти кратчайший маршрут? Потому что у меня и у меня нет кратчайшего объекта маршрута в моей руке. Мне нужен объект маршрута, чтобы получить его значение Overview_polyline. Также, если я получу кратчайший маршрут, как узнать его расстояние? Заранее спасибо!
DirectionsApi.getDirections(getGeoContext(), origin, destination)
.mode(TravelMode.DRIVING)
.alternatives(true)
.origin("place_id:"+idPlaceOrigem)
.destination("place_id:"+idPlaceDestino)
.units(Unit.METRIC)
.setCallback(new PendingResult.Callback<DirectionsResult>() {
@Override
public void onResult(DirectionsResult result) {
Set<Long> distances = new HashSet<>();
if (result != null && result.routes != null && result.routes.length > 0)
for (DirectionsRoute route : result.routes)
for (DirectionsLeg leg : route.legs)
if (leg.distance != null)
distances.add(leg.distance.inMeters);
if (!distances.isEmpty()) {
ArrayList<Long> sortedList = new ArrayList(distances);
distance = min(sortedList);
despesaRequest.setKm_distancia(distance/1000);
}
runOnUiThread(new Runnable() {
@Override
public void run() {
updateDistance();
Singleton.getInstance().dismissLoading();
}
});
}
@Override
public void onFailure(Throwable e) {
Timber.e(e);
runOnUiThread(() -> {
Toast.makeText(LancamentoODIIActivity.this, "Não foi possível traçar a rota, por favor tenta novamente mais tarde.", Toast.LENGTH_SHORT).show();
Singleton.getInstance().dismissLoading();
});
}
});
}