如何使用CLLocationManager-Swift获取当前经度和纬度
我想使用Swift获取位置的当前经度和纬度,并通过标签显示它们。我尝试执行此操作,但标签上没有任何显示。
import UIKitimport 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)"
}
}
回答:
恕我直言,当您寻找的解决方案非常简单时,您就使代码复杂化了。
我已经通过使用以下代码来做到这一点:
首先创建CLLocationManager
和请求授权的实例
var locManager = CLLocationManager()locManager.requestWhenInUseAuthorization()
然后检查用户是否允许授权。
var currentLocation: CLLocation!if
CLLocationManager.authorizationStatus() == .authorizedWhenInUse ||
CLLocationManager.authorizationStatus() == .authorizedAlways
{
currentLocation = locManager.location
}
用它来做到这一点
label1.text = "\(currentLocation.coordinate.longitude)"label2.text = "\(currentLocation.coordinate.latitude)"
您将它们设置为的想法label.text
是正确的,但是我能想到的唯一原因是用户未给予您许可,这就是为什么您当前的位置数据将为零。
但是,您需要调试并告诉我们。另外,CLLocationManagerDelegate
没有必要。
希望这会有所帮助。询问是否有疑问。
以上是 如何使用CLLocationManager-Swift获取当前经度和纬度 的全部内容, 来源链接: utcz.com/qa/421741.html