问题标签 [cllocationmanager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1432 浏览

iphone - 为什么 CLLocationManager 在设置精度低时如此懒惰?

我通过测试发现,设置较低的所需精度CLLocationManager会导致该组件出现错误行为。

这是我进行的 2 个测试:

  1. 将所需精度设置为kCLLocationAccuracyHundredMeters。然后设备无法如我所愿准确地找到我的位置。以下是我CLLocationManager的代表的日志:

    就是这样。30 秒内发生两个事件,水平精度为 1500。

  2. 将期望精度设置为kCLLocationAccuracyBest。然后设备找到我!相同的日志:

    我在测试 1 的同一地点,但这次,设备能够以我首先想要的精度(即 100.0)找到我的位置。

我已经多次重复这两个测试,结果相同。

我的问题是:

“有人知道为什么当我将精度设置为 时,iPhone 设备不会更努力地找到我的位置kCLLocationAccuracyHundredMeters吗?”</p>

我假设将精度设置为kCLLocationAccuracyBest可能会打开一些不同的硬件传感器,但这不能被视为错误吗?我在互联网上找不到与这个问题相关的东西。

感谢您分享自己的经验。(测试是使用 3GS 设备通过 Wi-Fi 和电话网络进行的)

0 投票
1 回答
1688 浏览

iphone - 何时/何地开始更新位置?

位置的确定需要一些时间。应在何时何地启动位置管理器?

现在,我在加载结果视图(需要位置)之前开始位置更新一个视图。如果用户快速点击,我会得到 0.0 坐标。

为了获得正确的时机,startUpdatingLocation应该在结果视图之前调用三个视图。这里的问题是我必须通过这三个视图控制器传递值。

接下来是我需要在另一个视图中的位置(不是上面提到的视图)。我想我会创建一个自己的位置监听器类。但是这个类什么时候实例化,坐标(经度,纬度)通过呢?协议对我没有帮助,因为只有创建我的位置侦听器的类才能获得结果。

我读了一点,想出了以下可能的解决方案:

1)通知中心的使用(见这个解决方案

2) 在AppDelegate

在 1) 我会遇到需要结果的视图以前不会创建的问题。

2) 的实施会是什么样子?我在应用程序委托中创建了一个位置管理器的实例,然后我访问了一些 ivars,比如AppDelegate? 如果我采用此处描述的解决方案,我将不得不CLLocationManagerDelegate每次都实施。做一门课不是更好吗?

也许您有第三种解决方案?

0 投票
1 回答
1388 浏览

iphone - startMonitoringSignificantLocationChanges 方法没有响应

我使用 startMonitoringSignificantLocationChanges 方法来定位当前位置。如果设备是静止的,但它在旅行时没有响应并且手机信号塔发生了变化,它工作正常。

它得到初始回调。我正在使用这种方法

每隔固定时间间隔调用一次,但不会在旅行时更新位置。我试图用-替换该方法

并且该过程正在后台执行。

0 投票
2 回答
1102 浏览

iphone - iPhone核心位置:计算总高程损失/增益

我想在记录核心位置数据结束时计算总高程损失和增益。我很难想到这个的数学。

假设我从 600 英尺开始并在跟踪过程中上下移动,我将如何计算我的海拔增益和损失?

想法?

0 投票
1 回答
1415 浏览

iphone - 检查 Mapkit 中的用户位置年龄 - MapKit 用户位置的 GPS 精度明显优于 CLLocationManager?

iPhone 4 上的室内。WiFi 已禁用

运行 LocateMe SDK 示例或我自己的代码 30-60 秒产生 2294 米的水平精度。对于蜂窝塔三角测量非常不准确但合理。查看其他执行反向地理编码或定位内容的应用程序(如 Foursquare)显示出类似的缺乏准确性。

但是,如果我切换到我的应用程序中使用 Mapkit 的另一个视图并检查/显示它所在的用户位置。我的意思是地图上的房屋级别准确,我会将其与 WiFi 级别位置或强大的 GPS 读取相关联。

所以我认为 Mapkit 可能依赖于在我的设备上启用 WiFi 时获得的缓存位置读取。我在设置中关闭了定位服务。重新启动地图应用程序将地图从我当前的位置移开。退出 重新启用定位服务。再次打开地图应用程序 - 使用强大的位置读取宾果游戏。

据我所知,位置服务是系统级单例,这意味着与 MapKit 共享与我的 CLLocationManager 实例相同的数据。我能想到的唯一一件事是该位置在 MapKit 上被更自由地缓存,即使 map.app 启动,关闭位置服务也不会清除它的缓存。

有人知道在 MapKit 中检查用户位置年龄的方法吗?我想进一步调查,即使它是一个未记录的调用或我无法附带的属性,我真的很想用它来调试以了解发生了什么。

谢谢

0 投票
3 回答
8404 浏览

iphone - 在后台连续运行应用程序

我希望我的应用程序通过定位服务继续在后台运行。为此,我使用了:

但是当我使用NSTimer它时不会调用UpdateLocation. 我尝试使用另一种方法调用它,但它也只调用了一次。

我想在后台连续运行应用程序,定期检测位置。

0 投票
1 回答
638 浏览

iphone - 使用核心位置时有关电池的警告

我看到很多在 iPhone 中使用 GPS 的应用在应用描述中都有以下警告:

警告:继续使用在后台运行的 GPS 会显着降低电池寿命。

如果 App 使用后台进程(如 startMonitoringSignificantLocationChanges 或 Region Monitoring),Apple 建议电池寿命不会受到显着影响。那么如果我使用这些后台定位服务,我的应用描述中是否还需要有这个警告?

苹果对此有任何指导方针吗?人们通常将什么用作“最佳实践”

谢谢,马克

0 投票
1 回答
2901 浏览

iphone - 在后台线程上接收 CLLocation 更新

我正在尝试使用 iPhone SDK 为位置更新实现(非并发)NSOperation。NSOperation 子类的“肉”是这样的:

现在,在主线程上,我创建了这个操作的一个实例并将它添加到一个 NSOperationQueue。start 方法被调用,但是没有一个-locationManager:...委托方法被调用。我不明白为什么他们从来没有接到电话。

我确实让接口遵守了<CLLocationManagerDelegate>协议。我让 NSOperationQueue 管理这个操作的线程,所以它应该都符合 CLLocationManagerDelegate 文档:

您的委托对象的方法是从您启动相应位置服务的线程中调用的。该线程本身必须有一个活动的运行循环,就像在应用程序的主线程中找到的那样。

我不确定还有什么可以尝试的。也许它正盯着我的脸......感谢任何帮助。

提前致谢!

0 投票
1 回答
424 浏览

objective-c - 对象的范围,objective-c,CLLocationManager

我对编程还是很陌生,所以我有一个菜鸟问题。当您在我的 appDelegate.m 文件中有一个实例变量时,在我的 CLLocationManager 类型的情况下,我想我可以在 applicationDidFinishLaunching 方法中分配和初始化我的 CLLocationManager 实例变量。然后我可以使用一个按钮以不同的方法启动UpdatingLocation(因为我是从另一个类调用它)。这似乎不起作用,我认为我需要在与 startUpdatingLocation 相同的方法中分配/初始化。真的吗?我是否需要以相同的方法停止更新位置?我的代码如下:

看来我应该这样做更像:

如果我应该这样做第二种方式,是因为 CLLocationManager 对象的范围仅适用于它所在的方法吗?我认为将它作为实例变量可以在其他方法中使用它,并且我可以为 startUpdatingLocation 和 stopUpdatingLocation 提供单独的方法。谢谢。

0 投票
3 回答
864 浏览

iphone - iPhone通用代码CLLocationManager放在哪里

如果我有一个选项卡栏应用程序,并计划在不同的选项卡中使用核心位置,是否有一个很好的通用位置来放置用于分配/初始化 CLLocationManager 的代码,并在调用 startUpdatingLocation 后获取更新?或者,如果它要在两个不同的选项卡中使用,那么我是否只需将它放在每个选项卡的代码中?只是想知道什么是最佳实践,因为我是编程新手。谢谢。