获取用户位置和更新
Posted
技术标签:
【中文标题】获取用户位置和更新【英文标题】:get user location and updates 【发布时间】:2016-12-23 18:28:33 【问题描述】:我正在尝试在我的 iPhone 应用中获取用户位置。它在 info.plist 中指定了需要的权限(即使应用程序未离线也可以使用位置)。但是我仍然没有看到我的代表至少被触发一次,这意味着我什至没有获得当前位置。代码如下:
import UIKit
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate
var locationManager = CLLocationManager();
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
locationManager.delegate = self
if (CLLocationManager.authorizationStatus() == CLAuthorizationStatus.notDetermined)
self.locationManager.requestAlwaysAuthorization();
locationManager.distanceFilter = kCLDistanceFilterNone
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.startUpdatingLocation()
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
let userLocation:CLLocation = locations[0]
let long = userLocation.coordinate.longitude;
let lat = userLocation.coordinate.latitude;
print(lat)
func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!)
locationManager.stopUpdatingLocation()
if ((error) != nil)
print(error)
有人可以指出可能的问题吗?
【问题讨论】:
是否请求定位许可? 是的,它请求了一次许可,我允许了。每次下一个程序运行我都没有收到此权限请求,因为它存储在设置中。问题是应该在位置更新时触发的委托实际上并没有被调用。我怀疑这可能是多线程问题,例如从主线程和实例不存在的其他线程调用...现在检查... How to get Location user whith CLLocationManager in swift?的可能重复 你是在设备上运行还是在模拟器上运行? 【参考方案1】:尝试删除locationManager(manager: CLLocationManager!, didFailWithError error: NSError!)
中的locationManager.stopUpdatingLocation()
。它应该工作。
【讨论】:
以上是关于获取用户位置和更新的主要内容,如果未能解决你的问题,请参考以下文章