- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
所以在 iOS9 上有了新的 requestLocation()
方法。我试图用它来只获取一个位置更新,但它多次点击 didUpdateLocations
。
这不是应该只调用一次吗?我已将 distanceFilter
设置为 1000.0,因此范围很广,有助于快速返回。有任何想法吗 ?
即使我在委托(delegate)方法中调用 stopUpdatingLocation()
,我仍然会得到三次委托(delegate)。
注意:当我改用 StartUpdatingLocation
时会发生相同的行为,我只想返回一次,因为我想获得用户的当前国家/地区,因此将位置提供给 reversegeocoder
提前致谢
代码如下:
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 语句来防止委托(delegate)函数在第一次调用后改变任何东西
在这种情况下,如果您只是在寻找位置,我会这样做:
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()
}
}
}
编辑:我查看了苹果的文档,你做的是对的,我怀疑你是否能够通过任何合理的方式阻止它。
关于swift - iOS 9 中的 requestLocation() 多次调用 didUpdateLocation 委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36542147/
我正在尝试在我的示例应用程序中实现经度和纬度。我使用 iPhone 5s 设备进行测试。它不会对按钮操作的纬度和经度标签产生任何影响。 在编译 Xcode 之前,在 didUpdateToLocati
我的应用程序中的定位服务在您第一次运行时无法正常工作。第二次,以及之后的任何时候,它都可以正常工作。这是我的代码: - (void)viewDidLoad { [super viewDidLoad];
我有一个 iOS 应用程序,它启用了用于远程通知的后台模式。整个过程中使用的 CLLocationManager 实例是通过 requestAlwaysAuthorization 进行授权的。 我有一
假设我已打开所有设备,WIFI、GPS 和 CELL。然而,我在地铁里,所有这些都被封锁了。 如果我执行 startUpdatingLocation,是否会出现超时消息?它从哪里来? (注意:我相信它
我想知道当我的手机处于稳定位置时 locationManager:didUpdateLocations: 会调用吗? 就我而言,当我将手机放在一个地方时,它不会打电话。 我将手机从房间内的一个位置放置
因此,我的应用需要每隔 15 米捕获一次位置。 在viewDidLoad中 NSOperationQueue.mainQueue().addOperationWithBlock { self.
应用程序启动后,我需要检查位置并将其发送到服务器。之后,我需要每公里检查一次位置。 因此,当我开始位置更新时,我将 distanceFilter 设置为 none,在接收到第一个位置时,我将其更改为
我正在使用 CLLocationManager 开发 ios 应用。 直到ios10,我调用了startUpdatingLocation,然后调用了didUpdateLocations,得到了一个Lo
在我的 Swift 2.0 应用程序中,我使用 CoreLocation 检查用户是否在某个地方的 1 公里以内,如果在,我使用 AVFoundation 播放声音。 问题是,当我开始在 didUpd
假设您想将 MapView 聚焦在当前位置,然后在 didUpdateLocation 中编写一些代码来处理当前位置坐标。 但是,如果您不在 CLLocationManager 对象上调用 reque
我的方法 didUpdateLocations 似乎从未被调用过?为什么是这样?我已将 key 添加到 info.plist 这是我的代码: override func viewDidLoad() {
func startLocationManager() { if CLLocationManager.locationServicesEnabled() { l
我正在尝试实现延迟位置更新以获得更好的电池消耗。我正在这样启动我的位置管理器: - (void)initCoreLocation { self.locationManager = [[CLLo
我将我的对象设置为 locationManager 的委托(delegate),并调用了 didChangeAuthorizationStatus 方法,它执行以下操作: func locationM
我想制作一个简单的 IOS 6.0 应用程序,每次更改位置时都会在屏幕上显示纬度/经度。 ViewController 文件非常简单。 我分配一个 CCLocationManager 对象,设置它的变
当应用处于事件状态并在前台运行时,didUpdateLocations 工作正常,但一旦应用进入后台,它就会停止工作 在.h文件中 @property (nonatomic, strong) CLLo
我正在尝试获取我的当前位置,但从未调用 didUpdateLocations 中的断点。 位置管理器: locationManager = [[CLLocationManager alloc] ini
我正在尝试获取用户的位置。为此,我在 info.plist 中设置了以下属性: 我还在 viewDidLoad 方法和下面的函数中添加了以下代码。问题是 locationManager(manager
我在用户位置和其余代码方面遇到问题... 我开发了一个代码,可以从 Foursquare API 检索某个位置的餐馆。我要解决的问题是: 这是我用来检索信息的 URL 字符串(纬度和经度是硬编码的,只
我使用的是XCode7.2版本 我尝试使用locationManager委托(delegate)函数 func locationManager(manager: CLLocationManager,
我是一名优秀的程序员,十分优秀!