Я использую API Адресов в Android Studio (Java). Я хочу вычислить расстояние между местом "place1" и несколькими другими местами Place2, для которых у меня есть идентификатор.
public void computeDistances(){
for(int i = 0; i < addresses.size() ; ++i){
String id = addresses.get(i).getplaceID(); // get id of place2
// Construct a request object, passing the place ID and fields array.
List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME, Place.Field.ADDRESS, Place.Field.LAT_LNG);
FetchPlaceRequest request = FetchPlaceRequest.newInstance(id, placeFields);
// get place
PlacesClient placesClient = Places.createClient(getContext());
placesClient.fetchPlace(request).addOnSuccessListener((response) -> {
Place place2 = response.getPlace();
LatLng LatLng1 = new LatLng(place1.getLatLng().latitude, place1.getLatLng().longitude);
LatLng LatLng2 = new LatLng(place2.getLatLng().latitude, place2.getLatLng().longitude);
double distance = SphericalUtil.computeDistanceBetween(LatLng1, LatLng2);
Log.e(TAG, "Distance = " + distance);
}).addOnFailureListener((exception) -> {
if (exception instanceof ApiException) {
ApiException apiException = (ApiException) exception;
int statusCode = apiException.getStatusCode();
Log.e(TAG, "Place not found: " + exception.getMessage());
}
});
}
}
Проблема: Я хочу вычислить все эти расстояния, сохранить их в массиве и, наконец, использовать их для других вычислений. Я знаю, что эти вызовы асинхронные, но я не могу найти способ сохранить все расстояния в массиве, а затем, когда все вызовы завершены, продолжить выполнение моего кода.
Заранее спасибо .