想象一个导航应用程序,它绘制用户的当前位置和一条折线(显示您开车去哪里的东西)到目标目的地。这意味着应该有两个事件流,一个用于位置更新,一个用于基于位置更新新计算的折线。
问题是绘制折线的计算成本很高,所以我只想在用户从计算它的最后一个点移动一定距离后才这样做。
这是它应该如何工作的:
- 红色 - 用户移动一小段距离,没有任何反应
- 蓝色 - 用户移出绿色圆圈,这是计算方向时与原始点的距离,因此计算出新的方向并设置了新的橙色半径
我在这里遇到的问题是我不知道如何进行下一次计算。我想这需要某种折叠,但我不确定如何在 Rx 中表达它。
它应该看起来像这样(其中的两个参数表示某种元组)。
locationUpdates.Where((previous, current) => IsFarEnough(previous, current))
.SomethingThatPutsCurrentBackIntoTheCondition()