Swift:试图获取坐标,但不知道如何调用 locationManager() 函数
Posted
技术标签:
【中文标题】Swift:试图获取坐标,但不知道如何调用 locationManager() 函数【英文标题】:Swift: Trying to get coordinates, but don't know how to call locationManager() function 【发布时间】:2016-07-07 20:56:40 【问题描述】:我正在尝试获取用户的纬度和经度。
import Foundation
import CoreLocation
class locationModule: NSObject, CLLocationManagerDelegate
var locationManager = CLLocationManager()
func getLocation()
locationManager.delegate = self
locationManager.requestAlwaysAuthorization()
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.startUpdatingLocation()
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
var location: CLLocationCoordinate2D = (manager.location?.coordinate)!
print(location.latitude)
print(location.longitude)
这是代码在一个单独的 Swift 文件中,所以我需要 getLocation()
才能调用 func locationManager
,我将如何从 getLocation() 函数调用 locationManager 函数。
【问题讨论】:
你为什么要打电话给locationManager
?重点是它被CLLocationManager
为你调用
@AMomchilov 什么叫CLLocationManager
CLLocationManager
的全部意义在于它调用你的CLLocationManagerDelegate
的locationManager
方法,以便通知你位置变化。自己调用该方法没有意义。
【参考方案1】:
您的代码很好,但没有被调用,可能是因为您没有将密钥添加到 Info.plist。
对于您的代码,将NSLocationAlwaysUsageDescription
添加到您的Info.plist 中,并将All your base are belong to us, so I use your location whenever I want.
等值作为字符串值。然后像这样在func applicationDidBecomeActive(application: UIApplication)
之类的地方启动你的locationManager:
类 AppDelegate: UIResponder, UIApplicationDelegate
var window: UIWindow?
var locMod:locationModule?
func applicationDidBecomeActive(application: UIApplication)
if ( locMod == nil )
locMod = locationModule()
locMod?.getLocation()
第一次,你会看到提示,然后你会看到正在记录的位置。
仅供参考,这是我组织 locationModule 的方式:
class locationModule: NSObject, CLLocationManagerDelegate
var locationManager = CLLocationManager()
internal func getLocation()
locationManager.delegate = self
locationManager.requestAlwaysAuthorization()
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.startUpdatingLocation()
// MARK : CLLocationManagerDelegate protocol
@objc
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
for location in locations
print("\(location.coordinate.latitude), \(location.coordinate.longitude)")
【讨论】:
以上是关于Swift:试图获取坐标,但不知道如何调用 locationManager() 函数的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 abbyy mobile sdk for iphone 获取坐标