2017-01-26 10 views
2

私は私のカスタムオブザーバブルを書きました。ユーザーがGoogleマップを細かく動かすとLatLngのオブジェクトが出ます。また、私は、マップは、ユーザ(「トラックの場所」)以下か否か、を示す、プロパティであろうと思うobservable上で私自身の操作を書いて、すべてを定数にマップするには?

BehaviorSubject<Boolean> locationTracking = BehaviorSubject.create(false); 

を有します。

ユーザーが地図にタッチすると、トラッキングをオフにする必要があります。また、ユーザーが希望する場合は明示的にオンにする必要があります。

だから私はここに

// once map touched, this means turn off location tracking 
    cameraMove(googleMap) 
     .map(new Func1<LatLng, Boolean>() { 
      @Override 
      public Boolean call(LatLng latLng) { 
       return false; 
      } 
     }).subscribe(locationTracking); 

を書いた私は、偽の値に、マップによって放出される、任意の場所からのマッピングを行いました。表示される構文はかなり長く、ラムダ構文は互換性設定によって禁止されています。だから、

、私はそれは私が触れることができないObservableのメンバー、である必要があり、mapAnyToFalseのようなものを自分の操作を作成し、

// once map touched, this means turn off location tracking 
    cameraMove(googleMap) 
     .mapAnyToFalse() 
     .subscribe(locationTracking); 

を書くことができています。他の手段や既製のソリューションはありますか?

答えて

4

短い答え:いいえそのような演算子を作成することはできません。

あなたが達成できる最も近い構文は次のようになります。他の場所であなたのコードでは、メソッド持ちたい場合

cameraMove(googleMap) 
    .map(anyToFalse()) 
    .subscribe(locationTracking); 

public Func1<Object, Boolean> anyToFalse() { 
    return new Func1<Object, Boolean>() { 
     @Override 
     public Boolean call(LatLng latLng) { 
      return false; 
     } 
    } 
} 

を(このメソッドは静的で、その後、静的にインポートすることができます)

+2

また、 'Func1 'を実装するクラスを作成することもできます – Jahnold

関連する問題