1
问题:我在我的ViewModel中有一个IReactiveDerivedList<SensorViewModel>
,并希望订阅它的更改,包括列表中已有的内容,然后再观察它。然后将这些数据反馈给Xamarin Android的GoogleMaps。ReactiveUI谷歌地图
这似乎是工作,当我补充一下:
public void OnMapReady(GoogleMap map)
{
_itemsAdded = this.ViewModel.Sensors.ItemsAdded
.ObserveOn(RxApp.MainThreadScheduler)
.Select(s => new CircleOptions()
.InvokeCenter(new LatLng(s.Latitude, s.Longitude))
.InvokeRadius(1000)
.InvokeFillColor(Color.Blue.ToArgb())
.InvokeStrokeColor(Color.Red.ToArgb()))
.Subscribe(
Observer.Create<CircleOptions>(options => map.AddCircle(options)));
}
但我也需要跟踪从map.AddCircle
返回Circle
的,所以我可以从地图当对象消失删除它。什么是处理这种情况的被动方式?
这看起来不错。你也可以考虑使用'CompositeDisposable'来将你的'IDisposable's存储在一个地方,并用'this.WhenAnyObservable()'直接替换'ViewModel'' - 如果由于某种意外''ViewModel'将会此方法被调用时(或被替换时)为null。 – pmbanka
我将切换到'CompositeDisposable'。上面的代码在视图中(Android Activity)。在这种情况下,我将如何使用'WhenAnyObservable'? – Jeremy
如果你在你的Android项目中引用了ReactiveUI,这应该只是工作,因为'WhenAny'系列是泛型T的扩展方法。我提到的有关VM的东西也在[老版本的文档](https:// github。文档/基础/ whenany.md#不同,种类-OF-COM whenanys/reactiveui/ReactiveUI/BLOB/e2c01b8230de576e4e7a689828eebfd5193fbf67 /)。 – pmbanka