我想使用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,当您正在查找的解决方案非常简单时,您的代码过于复杂.
原文链接:https://www.f2er.com/swift/319855.html我已经通过使用以下代码:
首先创建一个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也是没有必要的.
希望这有帮助.如果有疑问,请问