加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – iOS 9中的requestLocation()多次调用didUpdateLocation

发布时间:2020-12-14 04:40:11 所属栏目:百科 来源:网络整理
导读:所以在iOS9上有新的requestLocation()方法.我试图使用它只获得一个位置更新,但它多次击中didUpdateLocations. 这不是只想叫它一次吗?我已将distanceFilter设置为1000.0,所以它很快就可以帮助快速返回.有任何想法吗 ? 即使我在委托方法中调用stopUpdatingLo
所以在iOS9上有新的requestLocation()方法.我试图使用它只获得一个位置更新,但它多次击中didUpdateLocations.

这不是只想叫它一次吗?我已将distanceFilter设置为1000.0,所以它很快就可以帮助快速返回.有任何想法吗 ?

即使我在委托方法中调用stopUpdatingLocation(),我仍然会获得三次委托.

注意:当我使用StartUpdatingLocation时,会发生相同的行为,我只想要一次返回,因为我想获取用户的当前国家/地区,因此请将该位置提供给反向寻址器

提前致谢

这是代码:

func getLocationOneTime(accuracy: Double){
    print("Acquiring location one time - accuracy requested:(accuracy)")
    locationManager.distanceFilter = accuracy
    locationManager.desiredAccuracy = accuracy
    // Start gpsOneTimeTimeout timer
    gpsTimeoutTimer = NSTimer.scheduledTimerWithTimeInterval(gpsOneTimeTimeout,target: self,selector: #selector(self.reportTimeout),userInfo: nil,repeats: false)
    locationManager.requestLocation()
     }

解决方法

通常对于这种问题,我只使用if语句来防止委托函数在第一次调用后改变任何东西

在这种情况下,如果您只是在寻找我会做的位置:

let locationManager = CLLocationManager()
var userLocation: CLLocation!

func locationManager(manager: CLLocationManager,didUpdateLocations locations: [CLLocation]) {
    if userLocation == nil {
        if let location = locations.first {
            userLocation = location
            self.locationManager.stopUpdatingLocation()
        }
    } 
}

编辑:我看了苹果文档,你正在做正确的事情,我怀疑你能够通过任何合理的手段来伤害它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读