ユーザーの現在地と目的地までのポリライン (運転する場所を示すもの) を描画するナビゲーション アプリを想像してみてください。つまり、2 つのイベント ストリームが必要です。1 つは位置の更新用で、もう 1 つは位置の更新に基づいて新しく計算されたポリライン用です。
問題は、ポリラインを描画するのに計算コストがかかることです。そのため、ユーザーが計算された最後のポイントから一定の距離を移動した後にのみ実行したいと考えています。
これがどのように機能するかは次のとおりです。
- 赤 - ユーザーが少し移動しても何も起こらない
- 青 - ユーザーは、方向が計算されたときの元のポイントからの距離である緑の円の外に移動し、その結果、新しい方向が計算され、新しいオレンジ色の半径が設定されます
ここでの問題は、次の計算を引き継ぐ方法がわからないことです。ある種の折りたたみが必要になると思いますが、Rxでそれを表現する方法がわかりません。
これは次のようになります (where の 2 つの引数は、ある種のタプルを意味します)。
locationUpdates.Where((previous, current) => IsFarEnough(previous, current))
.SomethingThatPutsCurrentBackIntoTheCondition()