我想使用Swift获取当前的纬度和纬度,并通过标签显示.我试图这样做,但标签上没有显示.
- import UIKit
- import CoreLocation
- class ViewController: UIViewController,CLLocationManagerDelegate{
- @IBOutlet weak var longitude: UILabel!
- @IBOutlet weak var latitude: UILabel!
- let locationManager = CLLocationManager()
- override func viewDidLoad() {
- super.viewDidLoad()
- if (CLLocationManager.locationServicesEnabled()) {
- locationManager.delegate = self
- locationManager.desiredAccuracy = kCLLocationAccuracyBest
- locationManager.requestWhenInUseAuthorization()
- locationManager.startUpdatingLocation()
- } else {
- println("Location services are not enabled");
- }
- }
- // MARK: - CoreLocation Delegate Methods
- func locationManager(manager: CLLocationManager!,didFailWithError error: NSError!) {
- locationManager.stopUpdatingLocation()
- removeLoadingView()
- if ((error) != nil) {
- print(error)
- }
- }
- func locationManager(manager: CLLocationManager!,didUpdateLocations locations: [AnyObject]!) {
- var locationArray = locations as NSArray
- var locationObj = locationArray.lastObject as CLLocation
- var coord = locationObj.coordinate
- longitude.text = coord.longitude
- latitude.text = coord.latitude
- longitude.text = "\(coord.longitude)"
- latitude.text = "\(coord.latitude)"
- }
- }
IMHO,当您正在查找的解决方案非常简单时,您的代码过于复杂.
我已经通过使用以下代码:
首先创建一个CLLocationManager和请求授权的实例
- var locManager = CLLocationManager()
- locManager.requestWhenInUseAuthorization()
然后检查用户是否允许授权.
- var currentLocation = CLLocation!
- if( CLLocationManager.authorizationStatus() == CLAuthorizationStatus.AuthorizedWhenInUse ||
- CLLocationManager.authorizationStatus() == CLAuthorizationStatus.Authorized){
- currentLocation = locManager.location
- }
使用它只是这样做
- label1.text = "\(currentLocation.coordinate.longitude)"
- label2.text = "\(currentLocation.coordinate.latitude)"
您将它们设置为label.text是正确的,但我可以想到的唯一原因是用户没有给您权限,这就是为什么您的当前位置数据将为零.
但是,您需要调试并告诉我们.
另外CLLocationManagerDelegate也是没有必要的.
希望这有帮助.如果有疑问,请问