Skip to main content

moko-geo

Библиотека moko-geo предоставляет возможность отслеживать геолокацию пользователя из общего кода.

Состав библиотеки

  • geo — базовый модуль с LocationTracker;
  • geo-compose — интеграция с Compose Multiplatform.

LocationTracker

Основной класс LocationTracker использует PermissionsController из moko-permissions для запроса разрешений и позволяет управлять процессом отслеживания.

Общий код

class TrackerViewModel(
val locationTracker: LocationTracker
) : ViewModel() {

init {
viewModelScope.launch {
locationTracker.getLocationsFlow()
.distinctUntilChanged()
.collect { location ->
println("new location: $location")
}
}
}

fun onStartPressed() {
viewModelScope.launch { locationTracker.startTracking() }
}

fun onStopPressed() {
locationTracker.stopTracking()
}
}

Android

val locationTracker = LocationTracker(
permissionsController = PermissionsController(applicationContext)
)
val viewModel = TrackerViewModel(locationTracker)

viewModel.locationTracker.bind(lifecycle, this, supportFragmentManager)

Compose

val locationTracker = LocationTracker(
permissionsController = PermissionsController(applicationContext)
)
val viewModel = TrackerViewModel(locationTracker)

BindLocationTrackerEffect(locationTracker = locationTracker)

iOS

let viewModel = TrackerViewModel(
locationTracker: LocationTracker(
permissionsController: PermissionsController(),
accuracy: kCLLocationAccuracyBest
)
)