- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
相同的代码,我假设设备实际上出于某种原因更新了两次位置,即使我只调用了一次 startUpdatingLocation() 并且我在 didUpdateLocations 中运行了一些 stopUpdatingLocations()
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
manager.stopUpdatingLocation()
let loc: CLLocation = locations[locations.count - 1]
let id = 0
let type = 0
let number = 0
createNewDataPoint(id, loc: loc, type: type, number: number)
}
在这种情况下,createNewDataPoint 被调用两次,创建了 2 个新数据点。它只在模拟器中发生一次,所以我假设它与实际设备和 GPS 有关,因为模拟器伪造了它的位置。
startUpdatingLocation() 仅在我的代码中出现一次,在一个按钮上。基本上,您单击按钮,进入 manager.startUpdatingLocations(),didUpdateLocations 在模拟器上点击一次,在设备上点击两次(相同的坐标)并创建 2 个新数据点。
唯一提到任何相关内容的其他代码是设置准确性、过滤器、授权请求和前面提到的 startUpdatingLocation()。我可以做些什么来确保我不会创建两倍于所需的数据点?
最佳答案
位置管理器委托(delegate)方法可以非常频繁地随时调用。
但是,您可以应用以下算法来保护自己:
bool
say didFindLocation
。startUpdatingLocation
时将 didFindLocation
设置为 false
。didUpdateLocations:
,如果 didFindLocation
为 false
,则将 didFindLocation
设置为 true
然后调用 stopUpdatingLocation
。希望这对您有所帮助。
关于ios - locationManager didUpdateLocations 在设备上触发两次,在模拟器上只触发一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33492023/
我正在尝试在我的示例应用程序中实现经度和纬度。我使用 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,
我是一名优秀的程序员,十分优秀!