【swift3】GPSから現在地を取得してみる

「CoreLocation.framework」を追加。

↓↓↓

Info.plist の
「NSLocationAlwaysAndWhenInUseUsageDescription」
と「NSLocationWhenInUseUsageDescription」 に 位置情報を使用する目的 を記載する。
この内容はユーザに位置情報の使用を許可する際に表示される。

コード

import UIKit
import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate{

var myLocationManager:CLLocationManager?

var myLatitudeLabel:UILabel! // 緯度表示用のラベル.
var myLongitudeLabel:UILabel! // 経度表示用のラベル.

override func viewDidLoad() {
super.viewDidLoad()

// 緯度表示用のラベルを生成.
myLatitudeLabel = UILabel(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 30))
myLatitudeLabel.layer.position = CGPoint(x: self.view.bounds.width/2, y:self.view.bounds.height/2+100)

// 軽度表示用のラベルを生成.
myLongitudeLabel = UILabel(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 30))
myLongitudeLabel.layer.position = CGPoint(x: self.view.bounds.width/2, y:self.view.bounds.height/2+130)

myLatitudeLabel.text = ""
myLongitudeLabel.text = ""

self.view.addSubview(myLatitudeLabel)
self.view.addSubview(myLongitudeLabel)

// 現在地の取得.
myLocationManager = CLLocationManager()
myLocationManager?.delegate = self
myLocationManager?.requestWhenInUseAuthorization()

// セキュリティ認証のステータスを取得.
let status = CLLocationManager.authorizationStatus()

// まだ認証が得られていない場合は、認証ダイアログを表示.
if(status == CLAuthorizationStatus.notDetermined) {
print("didChangeAuthorizationStatus:(status)");
// まだ承認が得られていない場合は、認証ダイアログを表示.
self.myLocationManager?.requestAlwaysAuthorization()
}

// 取得精度の設定.
myLocationManager?.desiredAccuracy = kCLLocationAccuracyBest
// 取得頻度の設定.
//myLocationManager?.distanceFilter = 100 //100m移動したら位置情報更新

myLocationManager?.startUpdatingLocation()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

// 位置情報取得に成功したときに呼び出されるデリゲート.
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

// 緯度・経度の表示.
myLatitudeLabel.text = "緯度:(String(describing: manager.location?.coordinate.latitude) )"
myLatitudeLabel.textAlignment = NSTextAlignment.center

myLongitudeLabel.text = "経度:(String(describing: manager.location?.coordinate.longitude))"
myLongitudeLabel.textAlignment = NSTextAlignment.center

}

// 位置情報取得に失敗した時に呼び出されるデリゲート.
func locationManager(_ manager: CLLocationManager,didFailWithError error: Error){
print("error")
}

}

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA