28
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

仙台iOS開発者勉強会(SWWDC)Advent Calendar 2014

Day 4

[iOS]緯度経度取得ライブラリINTULocationManagerを使ってみた。

Last updated at Posted at 2014-12-04

「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回だけ緯度経度情報を取得するコードを書いた事があるんですが、結構面倒でしたし...。

このライブラリなら、お手軽にその機能が実現できるので、良いんじゃないでしょうか!

28
25
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
28
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?