获取用户位置和更新

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()。它应该工作。

【讨论】:

以上是关于获取用户位置和更新的主要内容,如果未能解决你的问题,请参考以下文章

每 10 秒更新一次用户位置 - 从 mysql 获取位置

在后台模式和终止模式下获取位置更新 IOS

通过解析获取用户位置

Android 融合位置更新

life360 等应用程序如何在终止状态下获取位置更新?

位置在 android 中不断更新,而不是一次