Xamarin.iOS で GPS を使う

Xamarin.iOS で GPS を使ってみます。 ちなみ当方、iOS開発についてはシロートに毛が生えた程度なため、Objective-C でも GPS は使ったことありません。

ので、こちらのサンプルを、Xamarin.iOS で書きなおしてみました。

LocationSample.cs

// LocationManager 的なやつ
private CLLocationManager _man = null;

public override void ViewDidLoad()
{
    base.ViewDidLoad();

    _man = new CLLocationManager();
	
    // ボタンをタップした時
    btnListen.TouchUpInside += (s, _) => 
    {
        _man.DesiredAccuracy = 5000; // 希望精度5kmくらい
        _man.LocationsUpdated += (sender, e) => // 位置を受信した時のイベント
        {
            var l = e.Locations[e.Locations.Length - 1];
            
            lblLocation.Text = String.Format("Lat/Lng = {0}/{1}", 
                                             l.Coordinate.Latitude, l.Coordinate.Longitude);
        };
        
		// 受信開始
        _man.StartUpdatingLocation();
    };
}

簡単すぎるやばい。 Xamarin.iOS のクラスライブラリが CoreLocation をうまくラップしてくれて、LocationsUpdated てなイベントも用意してくれてます。(Android の LocatiomManager にはイベントはなかった) そして何度も言いますが Obj-C のキモい構文じゃないのでコードが見やすい書きやすい。

もうちょっとちゃんとしたサンプルは公式をみて下さい。

参考