「iPhoneで、現在地の緯度経度を取得したい」という要求がありまして、色々と調べていたところ、”INTULocationManager”というライブラリが良さそうな感じでした。
触りだけ使ってみたので、ご紹介します。
Github:intuit/LocationManager
特徴
Githubのreadmeによれば、以下の特徴があるとのことです。
- (iOS標準のCLLocationManagerだと難しい)、1回限りのlocation検索ができる。
- シンプルなAPI
- 精度、タイムアウト時間を設定できる
- (緯度経度が求まったらGPSをOFFにするので)バッテリーにやさしい
連続して位置情報を取得するのではなく、1回限りの位置情報取得に特化したライブラリです。カーナビアプリのように、ずっと位置情報を使うアプリには向かないようです。
インストール
インストールは、おなじみのCocoaPodsで行います。Podfileに
pod 'INTULocationManager'
と書いて、pod install なり pod update なりを実行すればインストールできます。
準備
iOS 8以降で使用する場合は、Info.plistに NSLocationWhenInUseUsageDescription または NSLocationAlwaysUsageDescription の記入が必須になります。
これは、位置情報を使う場合は必ずやらなくてはいけない設定ですね...。
参考サイト:iOS 8から位置情報を取得する方法が変わるよ - Qiita
ソースコード
実際に使用するときは以下のようになります。githubのサンプルソースをSwiftで書き換えてみました。
let locMgr = INTULocationManager.sharedInstance()
locMgr.requestLocationWithDesiredAccuracy(INTULocationAccuracy.City,
timeout: 10.0,
block: { (currentLocation:CLLocation!, achievedAccuracy:INTULocationAccuracy, status:INTULocationStatus) -> Void in
switch (status) {
case .Success:
println("success")
case .TimedOut:
println("timeout")
default:
println("default")
}
println("accuracy=" + String(achievedAccuracy.rawValue))
println("location=" + currentLocation.description)
})
実行結果
こんな感じになります。
status: 0
success
accuracy=5
location=<+38.26042400,+140.88213500> +/- 5.00m (speed -1.00 mps / course -1.00) @ 12/3/14, 9:27:03 PM Japan Standard Time
感想
INTULocationManagerは「位置情報を1回だけ行いたい」用途に特化したライブラリでした。幸いにも、自分が実装したい機能にバッチリマッチしていましたので、導入してみようと思います。
以前、CLLocationManagerで1回だけ緯度経度情報を取得するコードを書いた事があるんですが、結構面倒でしたし...。
このライブラリなら、お手軽にその機能が実現できるので、良いんじゃないでしょうか!