Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google maps 位置流_Google Maps_Kotlin_Android Livedata_Kotlin Coroutines_Flow - Fatal编程技术网

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值时,一切都开始像魔咒一样工作,谢谢。