Как создать Observable из LocationEngineProvider из MapBox?
В своей деятельности я инициализирую локальный движок:
LocationEngineProvider locationEngineProvider = new LocationEngineProvider(this);
locationEngine = locationEngineProvider.obtainBestLocationEngineAvailable();
locationEngine.setPriority(LocationEnginePriority.HIGH_ACCURACY);
locationEngine.activate();
В моем Presenter я хочу передать переменные местоположения в вызов API, который возвращает наблюдаемый ответ. Проблема заключается в том, что вставленные значения местоположения в вызов API заставляют запрашивать одни и те же параметры каждый раз, когда я подписываюсь на этот Observable. ( см. здесь)
Что я хочу сделать, так это создать Observable, который получит Location и поместит значения в первый вызов параметров API.
Observable<Integer> mergedObservers =
*???ObservableForLocation()???*.flatMap(location ->
return firstAPI.getFirstInfo(location.getLatitude(), location.getLongitude())
.flatMap(resultFirstObservable -> {
try {
return secondApi.getSecondInfo(resultFirstObservable.body().string(), "3")
.onErrorResumeNext(e -> {
e.printStackTrace();
return secondApi.getSecondInfo("defaultValue", "3");
});
} catch (IOException e) {
e.printStackTrace();
secondApi.getSecondInfo("defaultValue", "3")
.onErrorResumeNext(e -> {
e.printStackTrace();
return secondApi.getSecondInfo("defaultValue", "3");
});
});
}
}, (resultFirstObservable, resultSecondObservable) -> {
try {
return transformToWhatINeed(resultSecondObservable.body().string());
} catch (IOException ex) {
ex.printStackTrace();
return transformToWhatINeed([]);
}
});
Я бы использовал некоторые идеи о том, как это сделать.