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 的全部意义在于它调用你的CLLocationManagerDelegatelocationManager 方法,以便通知你位置变化。自己调用该方法没有意义。 【参考方案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() 函数的主要内容,如果未能解决你的问题,请参考以下文章

无法获取 QR 码的正确坐标,ARKit - Swift

Swift:如何对服务进行 API 调用但不等待响应

如何制作一个从地址swift 4返回坐标的函数

如何使用 abbyy mobile sdk for iphone 获取坐标

如何从 Swift 中的 valueChanged 事件中获取触摸坐标

如何在iOS swift中获取点击点(坐标)