Получение нулевой продолжительности при использовании API матрицы направления карты GoogleJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Получение нулевой продолжительности при использовании API матрицы направления карты Google

Сообщение Anonymous »

Я пытаюсь разработать приложение для отслеживания автобусов. Приложение в основном собирает данные о местоположении из Firebase, получает текущее местоположение пользователя и дает расчетную продолжительность поездки с использованием API матрицы расстояний GoogleMap. Приложение правильно обращается к двум местоположениям, но давая нулевое значение для продолжительности. Вот мой код для печати продолжительности. У меня есть классы DistanceMatrixResponse,Distance,Duration,DistanceMatrixElement,DistanceMatrixRow,Location1,Location2 ,RetrofitService и интерфейс GMapAPIService. Код работает нормально, когда параметры для getCompleteAddress находятся непосредственно в форме double (например: Final String ORIGINS = getCompleteAddress(12.841, 80.157)) .но при получении с помощью функции получения код останавливается после 5-го цикла (как будто он печатает до T5), но не переходит к следующему условию if. Я получаю правильные значения местоположения, когда печатаю их с помощью журнала внутри onResponse, и вижу, что значения обоих местоположений не совпадают. Я пытаюсь разобраться в этом уже несколько дней, но ничего не получается.

Код: Выделить всё

    private void getTravelTime() {

final String API_KEY = "MyAPIKey";
final String ORIGINS = getCompleteAddress(l.getLatitue(),l.getLongitude());
final String DESTINATIONS = getCompleteAddress(l1.getLatitue(), l1.getLongitude());

GMapAPIService gMapAPIService = RetrofitService.getRetrofitClient().create(GMapAPIService.class);

Call call = gMapAPIService.getDistance(API_KEY, ORIGINS, DESTINATIONS);

call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {

Log.d("l", String.valueOf(l.getLatitue()+ " "+l.getLongitude()));
Log.d("l1", String.valueOf(l1.getLatitue()+ " "+l1.getLongitude()));
if (response.isSuccessful()) {
DistanceMatrixResponse distanceMatrixResponse = response.body();
Log.d("T1","Here");

if (distanceMatrixResponse != null) {

List rows = distanceMatrixResponse.getRows();
Log.d("T2","Here");
if (rows != null && !rows.isEmpty()) {
Log.d("T3","Here");
DistanceMatrixRow distanceMatrixRow = rows.get(0);
Log.d("D2",String.valueOf(distanceMatrixRow));

if (distanceMatrixRow != null) {
Log.d("T4","Here");
DistanceMatrixElement distanceMatrixElement = distanceMatrixRow.getElements().get(0);
Log.d("D2",String.valueOf(distanceMatrixElement));

if (distanceMatrixElement != null) {
Log.d("T5","Here");
Duration duration = distanceMatrixElement.getDuration();
Distance d=distanceMatrixElement.getDistance();
Log.d("Duration:",String.valueOf(duration));
Log.d("Distance:",String.valueOf(d));

if (duration != null) {
Log.d("T6","Here");
String travelTime = duration.getText();
textViewTravelTime.setText(travelTime);
}
}
}
}
}
}
}

@Override
public void onFailure(Call call, Throwable t) {

Log.e("MainActivity", t.getMessage());
}
});
}
Вот что я получаю

Подробнее здесь: https://stackoverflow.com/questions/760 ... matrix-api
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»