У меня есть метод, который возвращается на Observable следующим образом:
fun currentLocation(): Observable<LatLngFix> { if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context) != ConnectionResult.SUCCESS || !context.isLocationPermissionGranted()) { return getDefaultLocation() } // lastKnownLocation returns location or complete without result // in the latter case, return default unknown location return Observable .concat(locationProvider.lastKnownLocation.map { val latLng = LatLngFix(it.latitude, it.longitude) return@map latLng }, getDefaultLocation()) .onErrorResumeNext { getDefaultLocation() } .first() }
Затем, когда я вызываю эту функцию, я хотел бы получить переменную latlng. Поэтому мне нужно подписаться на Observable, но не знаю почему, следующее дает ошибку:
localisationService.currentLocation().subscribe(latLng -> { })
Сказать, что latLng не определен. Каков правильный способ получения значения?
Должно быть
localisationService.currentLocation().subscribe { latLng -> }
(обратите внимание на аргумент latLng внутри фигурных скобок)
или
localisationService.currentLocation().subscribe ({ latLng -> }, { error -> })
если вы также хотите реализовать onError
.