CoreLocation 1 Acquisition of the current position information

Customize Permitted only in the use of this app (NSLocationWhenInUseUsageDescription) Always allow (NSLocationAlwaysUsageDescription) Always allow (NSLocationAlwaysUsageDescription) info.plist <Key> NSLocationWhenInUseUsageDescription </ key> The acquisition of the <string> position information, Do you want to allow only at the time of this app use? </ String> Program Changes // セキュリティ認証のステータスを取得. let status = CLLocationManager.authorizationStatus() print("authorizationStatus:\(status)"); // まだ認証が得られていない場合は、認証ダイアログを表示 // (このAppの使用中のみ許可の設定) if(status == notDetermined) { self.myLocationManager.requestWhenInUseAuthorization() } <Key> NSLocationAlwaysUsageDescription </ key> <String> the acquisition of position information, do you always permitted? </ String> Program of the changes // セキュリティ認証のステータスを取得. let status = CLLocationManager.authorizationStatus() print("authorizationStatus:\(status)"); // まだ認証が得られていない場合は、認証ダイアログを表示 // (このAppの使用中のみ許可の設定) if(status == notDetermined) { self.myLocationManager.requestAlwaysAuthorization() } Swift 3.0 // // // ViewController.swift // CoreLocation001 // // Copyright © 2016年 FaBo, Inc. All rights reserved. // import UIKit import CoreLocation class ViewController: UIViewController , CLLocationManagerDelegate{ var myLocationManager: CLLocationManager! // 緯度表示用のラベル. var myLatitudeLabel: UILabel! // 経度表示用のラベル. var myLongitudeLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() // ボタンの生成. let buttonWidth: CGFloat = 100 let buttonHeight: CGFloat = 100 let posX: CGFloat = (self.view.bounds.width - buttonWidth)/2 let posY: CGFloat = (self.view.bounds.height - buttonWidth)/2 let myButton = UIButton(frame: CGRect(x: posX, y: posY, width: buttonWidth, height: buttonHeight)) myButton.backgroundColor = UIColor.orange myButton.layer.masksToBounds = true myButton.layer.cornerRadius = 50.0 myButton.setTitle("Get", for: .normal) myButton.addTarget(self, action: #selector(ViewController.onClickMyButton(sender:)), for: .touchDown) // 緯度表示用のラベルを生成. 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) // 現在地の取得. myLocationManager = CLLocationManager() myLocationManager.delegate = self // セキュリティ認証のステータスを取得. let status = CLLocationManager.authorizationStatus() print("authorizationStatus:\(status.rawValue)"); // まだ認証が得られていない場合は、認証ダイアログを表示 // (このAppの使用中のみ許可の設定) 説明を共通の項目を参照 if(status == .notDetermined) { self.myLocationManager.requestWhenInUseAuthorization() } // 取得精度の設定. myLocationManager.desiredAccuracy = kCLLocationAccuracyBest // 取得頻度の設定. myLocationManager.distanceFilter = 100 self.view.addSubview(myButton) } /* 認証に変化があった際に呼ばれる */ private func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) { print("didChangeAuthorizationStatus"); // 認証のステータスをログで表示. var statusStr: String = ""; switch (status) { case .notDetermined: statusStr = "未認証の状態" case .restricted: statusStr = "制限された状態" case .denied: statusStr = "許可しない" case .authorizedAlways: statusStr = "常に使用を許可" case .authorizedWhenInUse: statusStr = "このAppの使用中のみ許可" } print(" CLAuthorizationStatus: \(statusStr)") } /* ボタンイベントのセット. */ func onClickMyButton(sender: UIButton){ // 現在位置の取得を開始. myLocationManager.startUpdatingLocation() } /* 位置情報取得に成功したときに呼び出されるデリゲート. */ private func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { // 緯度・経度の表示. myLatitudeLabel.text = "緯度:\(manager.location!.coordinate.latitude)" myLatitudeLabel.textAlignment = .center myLongitudeLabel.text = "経度:\(manager.location!.coordinate.longitude)" myLongitudeLabel.textAlignment = .center self.view.addSubview(myLatitudeLabel) self.view.addSubview(myLongitudeLabel) } /* 位置情報取得に失敗した時に呼び出されるデリゲート. */ func locationManager(_ manager: CLLocationManager,didFailWithError error: Error){ print("error") } } Swift 2.3 // // // ViewController.swift // CoreLocation001 // // Copyright © 2016年 FaBo, Inc. All rights reserved. // import UIKit import CoreLocation class ViewController: UIViewController , CLLocationManagerDelegate{ var myLocationManager: CLLocationManager! // 緯度表示用のラベル. var myLatitudeLabel: UILabel! // 経度表示用のラベル. var myLongitudeLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() // ボタンの生成. let buttonWidth: CGFloat = 100 let buttonHeight: CGFloat = 100 let posX: CGFloat = (self.view.bounds.width - buttonWidth)/2 let posY: CGFloat = (self.view.bounds.height - buttonWidth)/2 let myButton = UIButton(frame: CGRect(x: posX, y: posY, width: buttonWidth, height: buttonHeight)) myButton.backgroundColor = UIColor.orangeColor() myButton.layer.masksToBounds = true myButton.layer.cornerRadius = 50.0 myButton.setTitle("Get", forState: .Normal) myButton.addTarget(self, action: #selector(onClickMyButton(_:)), forControlEvents: .TouchUpInside) // 緯度表示用のラベルを生成. 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) // 現在地の取得. myLocationManager = CLLocationManager() myLocationManager.delegate = self // セキュリティ認証のステータスを取得. let status = CLLocationManager.authorizationStatus() print("authorizationStatus:\(status)"); // まだ認証が得られていない場合は、認証ダイアログを表示 // (このAppの使用中のみ許可の設定) 説明を共通の項目を参照 if(status == .NotDetermined) { self.myLocationManager.requestWhenInUseAuthorization() } // 取得精度の設定. myLocationManager.desiredAccuracy = kCLLocationAccuracyBest // 取得頻度の設定. myLocationManager.distanceFilter = 100 self.view.addSubview(myButton) } /* 認証に変化があった際に呼ばれる */ func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) { print("didChangeAuthorizationStatus"); // 認証のステータスをログで表示. var statusStr: String = ""; switch (status) { case .NotDetermined: statusStr = "未認証の状態" case .Restricted: statusStr = "制限された状態" case .Denied: statusStr = "許可しない" case .AuthorizedAlways: statusStr = "AuthorizedAlways" case .AuthorizedWhenInUse: statusStr = "このAppの使用中のみ許可" } print(" CLAuthorizationStatus: \(statusStr)") } /* ボタンイベントのセット. */ func onClickMyButton(sender: UIButton){ // 現在位置の取得を開始. myLocationManager.startUpdatingLocation() } /* 位置情報取得に成功したときに呼び出されるデリゲート. */ func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { // 緯度・経度の表示. myLatitudeLabel.text = "緯度:\(manager.location!.coordinate.latitude)" myLatitudeLabel.textAlignment = .Center myLongitudeLabel.text = "経度:\(manager.location!.coordinate.longitude)" myLongitudeLabel.textAlignment = .Center self.view.addSubview(myLatitudeLabel) self.view.addSubview(myLongitudeLabel) } /* 位置情報取得に失敗した時に呼び出されるデリゲート. */ func locationManager(manager: CLLocationManager,didFailWithError error: NSError){ print("error") } } 2.xと3.xの差分 大きな修正はなし

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.