我正在创建一个基于位置的提醒,EKReminder
.
对于我CLGeocoder
用来将地址转换为CLLocation
.
当谈到提醒本身时,我认为有两个因素决定了提醒将触发的“区域”(半径/圆)。
1) 水平精度CLLocation
。文档将该horizontalAccuracy
属性描述为“位置的不确定性半径,以米为单位。(只读)”。
在上一个问题中有更多关于此的有用信息: CLLocation 的 HorizontalAccuracy 和 VerticalAccuracy 指的是什么?
正如该答案中所建议的那样,horizontalAccuracy
是100m。
2) 上的radius
属性EKStructuredLocation
。此属性的讨论说明为“要使用默认半径,请将此属性设置为 0”。
如果我在 Apple 的 Reminders 应用程序中创建基于位置的提醒,它会带有radius = 0
和horizontalAccuracy = 0
. 所以它使用默认的“提醒半径”(不知道那是什么),其值为0
水平位置的不确定性......
我想避免在我的提醒中出现两个边距。我认为有两种选择可以实现这一目标:
a) 使用默认值radius
,将EKStructuredLocation
其设置为0
并将返回的结果更改CLGeocoder
为horizontalAccuracy
0m。
b) 保持horizontalAccuracy
(100m,或不同,视情况而定)与CLGeocoder
- 但不使用默认值radius
并将EKStructuredLocation
其设置为较小的值,例如 1m。
想法?我是否正确理解了这些 API?
- 如果我使用返回
horizontalAccuracy
值和默认值,我会得到“双倍边距”radius
吗? - 对象的 是从坐标引入半径,还是纯粹提供有关位置不确定性的信息
horizontalAccuracy
?CLLocation
干杯