0
4

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 1 year has passed since last update.

【Swift】位置情報を取得する

Posted at

はじめに

位置情報を使用したアプリを作る基本的な手順を解説する。

環境

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に出すメッセージ)
スクリーンショット 2022-12-13 1.57.49.png

2. ストーリーボードにbuttonを配置し、ViewControllerに連携させる。

ボタンを押すと、位置情報をその都度取得するような設計にしていく。
ちなにみに画像のマークは、"button"を配置し、Imageを"locaiton.circle"にすると、表示できる。
スクリーンショット 2022-12-13 2.01.21.png

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は最初の起動時に、位置情報の許可をする前に位置を取得しようとしているため。一度許可すると、エラーは起きない。

おわりに

位置情報の簡単な実装方法をまとめた。
ここから色々幅を利かせてアプリを作っていこう!

0
4
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
0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?