【问题标题】:Creating a location based reminder: what to do with horizontal accuracy?创建基于位置的提醒:如何处理水平精度?
【发布时间】:2013-02-05 04:26:37
【问题描述】:

我正在创建一个基于位置的提醒,EKReminder

对于我使用CLGeocoder 将地址转换为CLLocation 的坐标。

说到提醒本身,我认为有两个因素决定了提醒将触发的“区域”(半径/圆)。

1) CLLocation 的水平精度。 文档将horizontalAccuracy 属性描述为“位置的不确定性半径,以米为单位。(只读)”。

在上一个问题中有更多关于此的有用信息: What do horizontalAccuracy and verticalAccuracy of a CLLocation refer to?

正如该答案中所建议的,horizontalAccuracy 是 100m。

2) EKStructuredLocation 上的 radius 属性。此属性的讨论说明为“要使用默认半径,请将此属性设置为 0。”

如果我在 Apple 的 Reminders 应用程序中创建基于位置的提醒,它会出现 radius = 0horizontalAccuracy = 0。所以它使用默认的“提醒半径”(不知道那是什么),其值为0,用于水平位置的不确定性......

我想避免在我的提醒中出现两个边距。我认为有两种选择可以实现这一目标:

a) 将EKStructuredLocation 的默认radius 设置为0,并将CLGeocoder 返回的结果更改为horizontalAccuracy 为0m。

b) 将horizontalAccuracyCLGeocoder 保持一致(100m,或不同,视情况而定) - 但不要为EKStructuredLocation 使用默认的radius,并将其设置为较小的值,例如 1m。

想法?我是否正确理解了这些 API?

  • 如果我使用返回的horizontalAccuracyradius 的默认值,我会得到“双倍边距”吗?
  • CLLocation 对象的 horizontalAccuracy 是从坐标引入半径,还是仅提供有关位置不确定性的信息?

干杯

【问题讨论】:

  • horizo​​ntalAccuracy 是对位置值不确定性的估计。

标签: iphone ios ios6 core-location cllocation


【解决方案1】:

正如 progmr 所指出的,horizontalAccuracy 纯粹是对位置不确定性的估计。

为了支持这一点,我做了几个实际测试,其中:

  • 我在提醒应用程序中创建了一个基于位置的提醒,它有radius = 0,但也报告horizontalAccuracy = 0
  • 我在自己的代码中使用相同的位置创建了一个提醒,设置radius = 0,但从CLGeocoder返回报告horizontalAccuracy = 100

每次测试时,提醒都会在完全相同的位置触发。 horizontalAccuracy 仅供参考。

【讨论】:

    猜你喜欢
    • 2013-09-02
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多