iBeaconを使った機能が実装出来そうだったので、次はGPSを使用して遠距離のジオフェンスをテストしようと始めた。

仮想のフェンスを地理上の経度緯度に張り巡らして、それの出入りでアクションを取ろうという考え方だ、こちらはiBeaconのように4つのイベントで距離を示すのではなく、自由に設定出来る。ただし誤差は数十メータは出そうなので、近くに来た場合はBeaconを使う事になりそうだ。

GPSを使ったサンプルを使ってテストしてみようと始めた。

MKMapViewを使って地図を表示して、その地図に経度緯度情報のアノテーションを設定する。

設定した座標を中心にMKCircleクラスを使用して、2Dの円形の領域を表示する。

イベントとして以下の3つとなる。

ジオフェンスのON/OFF

座標(経度緯度)

領域の距離

画面の機能は比較的シンプルで、

 

座標を指定して、ジオフェンスの領域を指定して、ジオフェンスをスタートさせる順序になる。

座標はCLLocationCoordinate2Dプロパティを使って地図の中心点の経度緯度を取得します。

領域はUISliderを使って可変でフェンスを設定するか、複数の固定領域(10km/1km/100m)等にするかによって変わるので、取りあえずスライダーを使って可変としてみました。

ジオオフェンスの出入りはCLLocationManagerクラスで監視する事が出来る。

それではテスト開始

現在地をシュミレーターを使って変更

シミュレータのメニューのデバッグ->位置->位置情報をカスタマイズで緯度、経度を入力。取りあえず東京タワー(緯度35.65858)、経度 (139.745433)から始めた。

 

 

 

 

 

 

 

 

 

 

 

 

何度か現在地を変更しジオフェンスに横切らせたが

- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region

共に反応なし、値を変えてみるも全く反応がない。

サンプルが古かったのだろうか…。

明日もう一回トライしよう。