今回の記事ではiOSアプリで現在地を取得する方法について記載している記事です。
以前mapkitviewを使用した現在地の取得方法は記載しましたがmapkitviewが特になくても現在地情報は取得できる様なので今回はその方法をご紹介します。
iOSアプリで現在地を取得するXcode側の設定
こちらは上記の記事にも書いているのですが、info.plistに「Privacy – Location When In Use Usage Description」を追加して下さい。
これだけで現在地の取得に関しては行うことができます。
かなり下の方にいるのでわからなかったら検索すると選択リストが1つになります。
iOSアプリで現在地を取得するソースコード
今回の記事のメインになるところです。
import UIKit
import CoreLocation
class Modelcourse_ViewController: UIViewController,CLLocationManagerDelegate {
// 現在地の位置情報の取得にはCLLocationManagerを使用
var locationManager: CLLocationManager!
// 取得した緯度を保持するインスタンス
var my_latitude: CLLocationDegrees!
// 取得した経度を保持するインスタンス
var my_longitude: CLLocationDegrees!
override func viewDidLoad() {
super.viewDidLoad()
locationManager = CLLocationManager()
locationManager.delegate = self
locationManager!.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
my_latitude = locationManager.location?.coordinate.latitude
my_longitude = locationManager.location?.coordinate.longitude
print("現在地緯度経度")
print(my_latitude,my_longitude)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func locationManager(_ manager: CLLocationManager,didChangeAuthorization status: CLAuthorizationStatus) {// 許可を求めるためのdelegateメソッド
switch status {
case .notDetermined:// 許可されてない場合
manager.requestWhenInUseAuthorization()// 許可を求める
case .restricted, .denied:// 拒否されてる場合
break// 何もしない
case .authorizedAlways, .authorizedWhenInUse: // 許可されている場合
manager.startUpdatingLocation()// 現在地の取得を開始
break
default:
break
}
}
/* 位置情報取得失敗時に実行される関数 */
func locationManager(manager: CLLocationManager, didFailWithError error: NSError) {
// この例ではLogにErrorと表示するだけ.
NSLog("Error")
}
}
Corelocationが現在地などのマップ関連のクラスになっているのでまずはimport して下さい。
classに「CLLocationManagerDelegate」を追加します。
その下の行で「locationManager」のインスタンスを作成し、許可関連の関数を設定します。
viewdidloadの下で「locationManager」が取得できる情報を記載しているのですがそこで緯度経度を取得するための変数にメソッドで値を入れ込んでいるという仕組み。
メソッドは「.location」でまず。場所の取得、その場所の中にはいろいろな要素が含まれているのですが、「cordinate.latitude」みたいな感じでkeyを渡してあげると値を吐きます。
今回はこんな感じです。
ただ、現在地を取得する関連のアプリではおそらくmapkitviewを同時に表示させることの方が多いと思います。
そのため過去きじですがmapkitview関連の記事を書いておりますので、下記参考ページリンクを貼っておきます。ご参照ください。
コメント