问题标签 [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 投票
2 回答
653 浏览

iphone - 错误 EXC_BAD_ACCESS

我是 iPhone 开发新手,遇到 EXC_BAD_ACCESS 错误。

在我的 .h 文件中,我声明:

在我的 .m 文件中,我有两种方法:

1.我做的时候CLLocationManager接口的(void)locationManager:

2.A (void)sendPosition 方法:

你能帮助我吗?

0 投票
2 回答
2957 浏览

iphone - iPhone Objective-C:确保用户在执行其他操作之前允许位置共享

我的应用程序在登录屏幕上询问位置,现在,用户可以在不分享他或她的位置的情况下登录。当用户选择“否”共享位置时,会引发读取错误Error Domain=kCLErrorDomainCode=1 "The operation couldn't be completed. (kCLErrorDomain error 1.)"。我猜那是因为我试图在没有这些东西的情况下访问纬度和经度。

我的问题是,我如何确保用户在执行任何其他操作之前允许定位?有没有办法创建一个新的“允许位置”弹出请求?

提前致谢!

0 投票
1 回答
1322 浏览

iphone - CLLocation Manager 不提示用户

我正在使用一种方法来创建位置管理器,如果它不存在并启动它。它检查用户是否禁用了位置服务并尊重这一点,除非给出 BOOL 来启动服务。该方法返回一个 BOOL 来指示服务是否已启动。

这适用于启动服务和第一次提示用户。如果他们点击允许事情正常进行,如果他们点击不允许我显示手动输入位置的视图。

但是,我希望用户能够改变他们对使用定位服务的想法,所以我有一个按钮可以让他们重新使用 GPS。它再次调用相同的函数,但这次忽略了用户的位置服务偏好。我相信这应该会提示用户再次允许/禁止,但我会立即收到 kCLDenied 错误代码。

基于http://developer.apple.com/iphone/library/documentation/UserExperience/Conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html#//apple_ref/doc/uid/TP40009497-CH2-SW11我期待另一个用户提示,不是立即错误。

(如果收到拒绝错误,我的位置管理器委托释放并将位置管理器设置为 nil。)

0 投票
1 回答
195 浏览

iphone - 切换到 xcode 3.2.3 和模拟器 4.0 时的问题

这是我在使用 xcode 3.2.3 构建我的应用程序并在模拟器 4.0 上运行它之后遇到的问题列表。当然,所有这些问题都适用于以前的环境。

  1. 位置管理器不更新位置。它曾经使用库比蒂诺的位置进行更新,但现在我得到 locationManager:didFailWithError: 调用错误 0。

  2. 我有一个地图视图,但平移不起作用。移动地图也不是捏合手势。

  3. 当我单击并按住地图时,我的应用程序有时会崩溃,并且日志会显示有关长触摸的信息。

谢谢,祖尔。

0 投票
2 回答
9438 浏览

iphone - locationServicesEnabled 测试在 viewDidLoad 中被禁用时通过

我在设置面板中为我的应用程序禁用了位置服务。我在视图控制器的 viewDidLoad 中运行测试以查看它们是否已启用:

由于某种原因,该测试总是通过。如果我尝试访问位置服务,我会收到位置管理器的 kCLErrorDenied 错误。是什么赋予了?

我是否使用了错误的测试?

0 投票
4 回答
33189 浏览

ios - 终止/暂停时重大更改位置 API 的行为?

这是CLLocationManager文档中使用startMonitoringSignificantLocationChanges描述应用程序行为的部分:

如果您启动此服务并且您的应用程序随后终止,则系统会在新事件到达时自动将应用程序重新启动到后台。在这种情况下,传递给 application:didFinishLaunchingWithOptions: 应用程序委托方法的选项字典包含键 UIApplicationLaunchOptionsLocationKey 以指示您的应用程序是由于位置事件而启动的。重新启动后,您仍然必须配置位置管理器对象并调用此方法以继续接收位置事件。当您重新启动位置服务时,当前事件会立即传递给您的委托。此外,即使在您启动位置服务之前,您的位置管理器对象的位置属性也会填充最新的位置对象。

所以我的理解是,如果您的应用程序终止(并且我假设您不从applicationWillTerminate调用stopMonitoringSignificantLocationChanges ),您将被application:didFinishLaunchingWithOptions的UIApplicationLaunchOptionsLocationKey参数唤醒。此时,您创建CLLocationManager,调用startMonitoringSignificantLocationChanges并在有限的时间内进行后台位置处理。所以我对这一点很好。

上一段只讨论了应用程序终止时会发生什么,并没有建议您在应用程序暂停时做什么。didFinishLaunchingWithOptions的文档说:

该应用程序在后台跟踪位置更新,已被清除,现在已重新启动。在这种情况下,字典包含一个键,表明应用程序由于新的位置事件而重新启动。

建议您仅在您被终止后启动应用程序(由于位置更改)时才会收到此呼叫。

然而,位置感知编程指南中关于重大变化服务的段落有以下说法:

如果您保持此服务运行并且您的应用程序随后被暂停或终止,则该服务会在新的位置数据到达时自动唤醒您的应用程序。在唤醒时,您的应用程序将进入后台并给予少量时间来处理位置数据。因为您的应用程序在后台,所以它应该做最少的工作并避免任何可能阻止它在分配的时间到期之前返回的任务(例如查询网络)。如果没有,您的申请可能会被终止。

这表明如果您的应用程序已暂停,您会被位置数据唤醒,但没有提及您是如何被唤醒的:

在写这篇文章的过程中,我想我可能刚刚回答了我自己的问题,但如果我对这个问题的理解得到更有知识的人的证实,那就太好了。

0 投票
1 回答
690 浏览

iphone - 你如何获得一个指定精度的一次性位置?

在文档中,它说它获得了一个大概的位置,然后以越来越精细的精度不断更新。我有一个按钮

然后我实施

并让它在某个地方找到方向。出于某种原因,当我开车去某个地方时,它不会更新位置。我认为这是因为它获得了“一般位置”,然后没有足够的时间来获得准确的读数。我也有

有什么想法吗?只需要一次准确的读数。难住了。谢谢。

0 投票
2 回答
1560 浏览

ios4 - iPhone CoreLocation - 准确性无法正常工作?

我正在开发一个使用 gps 的应用程序。我需要高精度,所以我使用 kCLLocationAccuracyBestForNavigation 来获得所需的精度。当我运行该应用程序时,会按预期调用以下方法。

在这种方法中,我正在检查以下代码段的准确性是否足够好:

但是这个 if 块永远不会激活,因为 newLocation.horizo​​ntalAccuracy 不会低于 17.00 米。当我在 iPhone 3GS OS 3.1.2 上运行此代码时,一切运行正常。但是自从我升级到 4.0.1 后,似乎准确性存在问题。它甚至不适用于在 iOs 3.1.2 上运行平稳且稳定的 kCLLocationAccuracyNearestTenMeters。

你对我有什么提示吗?我该如何解决我的问题?

0 投票
2 回答
896 浏览

iphone - 为什么在 iOS4.0 中没有调用 CurrentLotion(CLLocationManager) 的委托方法?

我正在使用 iPhone sdk 4.0。我使用下面的代码来获取当前位置,但它的委托方法不是自动调用的......我的代码如下:

.hfile

我有进口

CoreLocation/CoreLocation.h

也委托

CLLocationManagerDelegate

CLLocationManager *locationManager;

.mfile

但我没有得到当前位置......我的委托方法是未调用的:

0 投票
3 回答
3329 浏览

iphone - CLLocationManager - 奇怪的内存泄漏

如几个教程中所述,我正在实施 CLLocationManager 权利。

一切正常,直到 LocationManager 收到第二次更新。然后发生内存泄漏。

Instruments 告诉我,泄露的对象是 NSCFTimer、GeneralBlock-16 和 NSCFSet

有任何想法吗?

谢谢你的帮助

[编辑]

在反复启动和停止 locationManager 之后,更新似乎来得更快。这让我觉得 CLLocationManager 每次发生位置更新时都会初始化一个新计时器......非常奇怪......

而且 - 所以你不需要阅读我的评论 - 应用程序会在一段时间后崩溃

[编辑]

好的 - 我不明白这里有一些代码......

我为 locationManager 使用了一个单独的类,如下所述:http: //www.vellios.com/2010/08/16/core-location-gps-tutorial/

位置管理器.h

位置管理器.m

然后,在我调用的主类中:

mainFile.h(摘录)

mainFile.m(摘录)

这让我有点发疯:)