获取CLLocationManager的坐标

时间:2014-09-26 21:24:39

标签: ios swift location

在我的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?

由于

2 个答案:

答案 0 :(得分:2)

6.9530045620513319E-310不是应为纬度或经度返回的有效值,因此您很可能在代码中的其他位置发生错误。如果没有其他代码,我们只能猜测你做错了什么。

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {

    println(manager.location.coordinate.latitude)
    println(manager.location.coordinate.longitude)

    }

尝试将此代码放入CLLocationManagers委托中,如果它没有输出有效的纬度和经度,请确保

  • 您已请求获得用户位置的权限,并已将推理添加到您的info.plist
  • 您在设置locationManager时调用locationManager.startUpdatingLocation()
  • 如果您使用的是模拟器,请确保已进入Debug->位置和设置位置

如果它仍然无法正常工作,您需要发布更多项目代码,以便我们找出出错的地方。

答案 1 :(得分:1)

您只需要在应用程序的plist中添加NSLocationAlwaysUsageDescription = true。这样做对我来说。