Google maps 位置流
我想使用协同路由流作为当前电话位置的来源,并在地图上标记它。以下是我的Google maps 位置流,google-maps,kotlin,android-livedata,kotlin-coroutines,flow,Google Maps,Kotlin,Android Livedata,Kotlin Coroutines,Flow,我想使用协同路由流作为当前电话位置的来源,并在地图上标记它。以下是我的视图模型中的内容: private val gpsAwareLocationFlow=广播流(BroadcastTransformers.gpsReceiver) .flatMapConcat{locationNotifier.locationFlow()} private val locationFlow=locationNotifier.locationFlow() val currentPosition=//我想这是解
视图模型中的内容:
private val gpsAwareLocationFlow=广播流(BroadcastTransformers.gpsReceiver)
.flatMapConcat{locationNotifier.locationFlow()}
private val locationFlow=locationNotifier.locationFlow()
val currentPosition=//我想这是解决问题的地方
.asLiveData()
当我使用locationFlow.asLiveData
时,只要GPS选项处于启用状态,“活动”就会接收数据。关闭后,流将关闭,活动不会对GPS选项的禁用或启用做出反应
当我使用gpsAwareLocationFlow.asLiveData()
时,“活动”仅在第一次更改GPS选项后才能正常反应。在更改选项之前,它不会执行任何操作
第一个想法是在两个流上使用组合。事实证明,只要两者都能独立工作(至少作为流),在组合它们之后,结果流就不会收到任何通知
val resultFlow = locationFlow.combine(gpsAwareLocationFlow){ a, b-> }
有人知道我做错了什么吗?我想问题是,combinelateest
函数在两个流源都不发出至少一个值之前不会发出任何东西。解决这个问题的好方法是用一个值初始化两个流,但我不知道是否可以在代码中这样做 好的:),我的意思是我不知道您的流是由框架还是由您创建的。让我知道它是否有效。你是对的。当我为gpsAwareLocationFlow
添加init值时,一切都开始像魔咒一样工作,谢谢。