LoginSignup
1
2

More than 5 years have passed since last update.

Rxを使って位置情報を得る #もう泣かないC#

Posted at

酢酸先生が教えてくれたよ!!ありがとう、酢酸先生!!

現在位置が欲しいので、更新が行われたらその時点でgeowatcherを眠らせます。

Android2.3以降のAPIで、一回だけ位置情報の更新を行うってのがあったと思うけど、そんなイメージ。だって、追跡とか必要ないもんね!!

ただ、屋内なんかで利用した時に取得がうまくいかなかったなーなんて場合は、ユーザが任意で再取得できるようにするんだろうね、多分。

んで、コード。

positionchangerxc

            var geoWatcher = new GeoCoordinateWatcher();
            Observable.FromEvent<GeoPositionChangedEventArgs<GeoCoordinate>>(geoWatcher, "PositionChanged").ObserveOnDispatcher()
                //位置情報だけクレ
                .Select(ev => ev.EventArgs.Position.Location)
                //場所が変わると呼ばれる
                .Subscribe(location => {
                    //位置情報を使って何かやる
                    onLocationChanged(location);
                    //一回だけで良いわ
                    geoWatcher.Stop(); });
            geoWatcher.Start();

Subscribeが、何回も呼ばれるなんて知らなかった。

一回呼ばれたら、onCompletedが発動するものと思ってた。

なんだかよくわかんないね!!

Rxに関して詳しく書いてる本があるなら教えて欲しいや・・・

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2