在我的iOS应用中,我有以下代码。使用此代码,我希望获得设备当前位置的纬度和经度值。
CODE AppDelegate
import UIKit
import CoreLocation
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, CLLocationManagerDelegate {
var window: UIWindow?
var locationManager: CLLocationManager!
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
application.setStatusBarHidden(true, withAnimation: .None)
initializeLocationManager()
return true
}
func initializeLocationManager() {
locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyKilometer
locationManager.requestAlwaysAuthorization()
locationManager.startUpdatingLocation()
}
}
CODE ViewController
let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let localtionManager = appDelegate.locationManager
var currentLat = localtionManager.location.coordinate.latitude
var currentLng = localtionManager.location.coordinate.longitude
let forecastURL = NSURL(string: "\(currentLat),\(currentLng)", relativeToURL: baseURL)
在我调查的ViewController中的第三行代码中,我可以看到返回的值是:6.9530045620513319E-310
。
我被告知这个价值不对,换句话说出了问题。你能告诉我为什么这是错的吗?以及如何将纬度和经度作为字符串获取,以便我可以将它们传递给RESTful API?
由于
答案 0 :(得分:2)
6.9530045620513319E-310
不是应为纬度或经度返回的有效值,因此您很可能在代码中的其他位置发生错误。如果没有其他代码,我们只能猜测你做错了什么。
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
println(manager.location.coordinate.latitude)
println(manager.location.coordinate.longitude)
}
尝试将此代码放入CLLocationManagers委托中,如果它没有输出有效的纬度和经度,请确保
locationManager.startUpdatingLocation()
如果它仍然无法正常工作,您需要发布更多项目代码,以便我们找出出错的地方。
答案 1 :(得分:1)
您只需要在应用程序的plist中添加NSLocationAlwaysUsageDescription = true。这样做对我来说。