はじめに
位置情報を使用したアプリを作る基本的な手順を解説する。
環境
No | 項目 | 内容 |
---|---|---|
1 | OS | MacOS Monterey ver 12.5.1 |
2 | Xcode | 14.1 |
3 | Swift | 5.7.1 |
実装
1. info.plistに追加する
project名 => TARGETS => info
Key: Privacy - Location When In Use Usage Description
Value: (iPhoneに出すメッセージ)
2. ストーリーボードにbuttonを配置し、ViewControllerに連携させる。
ボタンを押すと、位置情報をその都度取得するような設計にしていく。
ちなにみに画像のマークは、"button"を配置し、Imageを"locaiton.circle"にすると、表示できる。
3. CoreLocationをインポートし、CLLocationManagerクラスを使用して位置情報を取得する。
ViewController.swift
import UIKit
import CoreLocation // 位置情報を取得するために必要なモジュールをインポートする。
class ViewController: UIViewController, CLLocationManagerDelegate {
// 位置情報を取得するために必要なプロトコルを付与する。
let locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self // CLLocationManagerDelegateプロトコルを使用するためにdelegateをViewControllerクラスに設定する。
locationManager.requestWhenInUseAuthorization() // 位置情報の許可設定を通知する。
locationManager.requestLocation() // 1度だけ位置情報取得のリクエストを投げる。
}
@IBAction func LocationSearch(_ sender: UIButton) {
locationManager.requestLocation()
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if let location = locations.last {
print("location: \(location)") // CLLocationManagerクラスで取得した位置情報
print("緯度: \(location.coordinate.latitude)")
print("経度: \(location.coordinate.longitude)")
}
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
print("error: \(error)")
}
}
アプリを起動し、位置情報取得を許可、真ん中のボタンを押すと、、、
コンソール
error: Error Domain=kCLErrorDomain Code=1 "(null)"
location: <+35.~,+139.~> +/- 35.00m (speed -1.00 mps / course -1.00) @ 2022/12/13 2:54:48 Japan Standard Time
緯度: 35.~
経度: 139.~
位置情報を取得できる。
errorは最初の起動時に、位置情報の許可をする前に位置を取得しようとしているため。一度許可すると、エラーは起きない。
おわりに
位置情報の簡単な実装方法をまとめた。
ここから色々幅を利かせてアプリを作っていこう!